W jaki sposób losowy ciąg znaków M1uG*xgRCthKWwjIjWc*010iSthY9buc
jest wykrywany jako zbyt uproszczony / systematyczny dla hasła zgodnie z passwd i cracklib-check ? Wypróbuj na swoim komputerze i przekonaj się
echo "M1uG*xgRCthKWwjIjWc*010iSthY9buc" | cracklib-check
Zauważ, że to nie jest moje hasło, ale inny losowo generowany ciąg z tego samego generatora losowych haseł, który daje ten sam wynik.
M1uG*xgRCthKWwjIjWc*010iSthY9buc: OK
/dev/urandom
wygenerujesz hasła?Odpowiedzi:
Ponieważ cracklib jest oprogramowaniem typu open source, odpowiedź można znaleźć w kodzie źródłowym .
„Zbyt uproszczony / systematyczny” oznacza, że istnieje zbyt wiele znaków poprzedzonych przez jednego z ich alfabetycznych sąsiadów. Dlatego „ab” lub „ba” są uważane za złe, ale „ac” lub „ca” są w porządku, ponieważ b jest pominięte.
Przed aktualizacją z 02.03.2010 r. Zezwala na maksymalnie cztery postacie, które wykazują tę cechę. Na przykład „bar12345” nie powiedzie się, ponieważ znaki „a”, „2”, „3”, „4” i „5” są alfabetycznymi sąsiadami poprzedzających znaków.
slm dowiedział się w swojej odpowiedzi, że
M1uG*xgRCthKWwjIjWc*010iS
było OK, aM1uG*xgRCthKWwjIjWc*010iSt
nie jest. Przeanalizujmy. Oto znaki, które według cracklib-check wskazują na systematyczne hasło:co jest poniżej maksimum czterech, ale dodaje t:
przesuwa go powyżej limitu, ponieważ T następuje po S (wydaje się, że w teście nie jest rozróżniana wielkość liter).
Łatka zmienia maksymalny limit, więc zależy to od całkowitej długości hasła, aby uniknąć takich fałszywych alarmów.
źródło
Ww
)?Na Fedorze 19
Kiedy go uruchamiam, wszystko jest OK. Jestem na Fedorze 19.
Oto informacje o wersji:
UWAGA: Wypróbowałbym to również z pojedynczymi cudzysłowami zamiast podwójnych qutoes, ponieważ masz do czynienia z tymi,
*
które mogą się w ciebie dziwnie rozszerzać.CentOS 5 i 6
Wypróbowanie przykładu na CentOS 6 było w porządku, dostało się OK, ale nie powiedzie się tak, jak opisano w CentOS 5.9.
Informacje o wersji:
Błąd?
To, w co wpadłeś, wydaje się być błędem. Jeśli weźmiesz swój ciąg i wpuścisz w niego coraz więcej
cracklib-check
, zauważysz, że gdy dojdziesz do 26 znaku, zaczyna się on nie powieść:Pogłębię to, jeśli zmienię ostatnią postać z a,
t
aby powiedzieć,v
że nadal działa.Wydaje się więc, że w wersji
cracklib-check
odkładanie się na podciągSth
.Zdecydowanie coś dziwnego jest w podanych fragmentach łańcucha. Jeśli wezmę końcówkę ogona i pominę przednią część, mogę również spowodować awarię tej części.
Ten sam ciąg powoduje problemy również w Fedorze 19 i CentOS 6!
AKTUALIZACJA # 1Opierając się na bardzo ładnym przemyśleniu @ waxwing , wiemy teraz, że heurystyka ulegała potknięciu, jeśli> 4 znaki były zbyt blisko siebie. Wprowadzono łatkę, która zmieniła tę heurystykę, dzięki czemu uwzględniono całkowitą długość rozpatrywanego hasła w celu wyeliminowania tych fałszywych trafień.
Wnioski
Na podstawie niektórych moich ograniczonych testów wydaje się, że w grę wchodzą tutaj dziwne heurystyki. Pewne łańcuchy, które z pozoru byłyby w porządku, powodują potknięcie.
Jeśli próbujesz to skodyfikować, sugeruję zawinięcie generowania i oceny hasła, a następnie wyrwanie się z pętli po wygenerowaniu hasła, które ustępuje
cracklib-check
.A przynajmniej sugeruję aktualizację do nowszej wersji, która zawiera poprawki, o których wspomina @maxwing w swojej odpowiedzi.
Alternatywy Genów haseł
pwgenDodam też, że zwykle używam
urandompwgen
do generowania haseł. To też może ci się przydać.Można też użyć trochę magii ze skryptów
tr
,/dev/urandom
ifold
uzyskać bardzo wysoką jakość losowe hasło.fold
Komenda może kontrolować długość. Alternatywnie możesz to również zrobić:źródło
Tm7U:n=@*+4$*gf$6hOngEHJ;mnh$+R6
jest w porządku na tej samej maszynie.