Jaka jest maksymalna długość hasła w systemie Unix / Linux?


27

Jaka jest maksymalna dopuszczalna długość hasła w systemie Unix / Linux?


20
Jeśli odpowiedź nie brzmi 42, powinna być.
tvanfosson

lepszym pytaniem może być: czego mogę się spodziewać, że ktoś napisze? Jeśli limit wynosi 40 i przekraczasz go, robisz coś złego.
msw

Odpowiedzi:


39

Jeśli system używa skrótu kryptograficznego do przechowywania haseł, np. MD5, SHA1 itp., Nie ma ograniczenia co do długości hasła, ponieważ skróty te można utworzyć z dowolną ilością danych. Skrót MD5 lub SHA1 można utworzyć dla całego dysku twardego i jest to zwykle wykonywane w celach kryminalistycznych, ponieważ jeśli choćby jeden bit zostanie nieznacznie zmieniony, to masz zupełnie inny skrót i dlatego możesz sprawdzić, czy dane się zmieniły. Oznacza to, że możesz użyć tych samych algorytmów, aby sprawdzić, czy dane zostały sfałszowane. Linux (przynajmniej obecny Linux) używa tych samych funkcji skrótu. Poprosi Cię o hasło, a następnie utworzy kryptograficzny skrót hasła, które podałeś, i sprawdzi, czy ten skrót pasuje do zapisanego hasła.

Korzystanie z tych skrótów ma niewielką wadę, ponieważ skrót ma skończony rozmiar, na przykład skrót MD5 to 128 bit. Oznacza to, że skrót MD5 ma tylko 2^128lub 340,282,366,920,938,463,463,374,607,431,768,211,456możliwe kombinacje. Chociaż jest to duża liczba, oznacza to, że możesz mieć tak zwaną kolizję skrótu, w której masz dwa różne elementy lub klucze, które wytwarzają ten sam skrót. Teoretycznie im większy rozmiar klucza, tym mniejsze prawdopodobieństwo kolizji i tym więcej czasu powinno zająć brutalne użycie hasła, ale to ściśle ocenia entropię i czas, przez jaki MOŻEale istnieje również szansa, że ​​pierwszy wpis, który wypróbują, może być tym, który pasuje, nawet jeśli jest to kolizja mieszania. Ogólnie mówiąc, naprawdę bezpieczniej jest używać skrótu, który ma większy rozmiar klucza, ponieważ, przypuśćmy, że jest to MD5, prawdopodobieństwo dopasowania pierwszego hasła spośród 340,282,366,920,938,463,463,374,607,431,768,211,456możliwych dopasowań jest wyjątkowo mało prawdopodobne. Również wybrać hasło dobre, ponieważ wiele krakersy postara i wykazy wykorzystanie słowo, listy nazwę, a mutacje tych list (czyli jeśli słowo to „ryba”, a następnie będą starali fish1234, fish!@#$etc), zanim one polegać na brute zmusza hasło.

Sposób, w jaki możesz stwierdzić, czy twój system używa skrótów kryptograficznych do przechowywania haseł, to spójrz na /etc/shadowplik (zakładając, że masz dostęp do roota). Każda linia jest sformatowana jak user:password:last-changed:minimum-age:maximum-age:warning-period:inactivity-period:expiration-date:reserved. Pole hasła może zaczynać się od $num$(tzn. Skrót md5 w polu hasła wygląda tak, jak $1$01234567$b5lh2mHyD2PdJjFfALlEz1zaczyna się od $1$). Jeśli zaczyna się od tego, oznacza to, że Twój system używa skrótu kryptograficznego. Format pola hasła we wszystkich nowoczesnych systemach to $id$salt$hash. Identyfikator określa, jakiego typu skrótu kryptograficznego używasz. Sól jest losowo generowanym ciągiem, który jest łączony z kluczem (hasło w postaci zwykłego tekstu) w celu ochrony przed wstępnie obliczonymi tabelami znanych skrótów. Hash jest hasłem kryptograficznym utworzonym z soli i klucza / hasła. Jeśli pole hasła zaczyna się od$num$ wtedy używasz skrótów kryptograficznych.

Więc wiesz, liczby oznaczają:

  • $1$ oznacza, że ​​używasz MD5
  • $2$lub $2a$oznacza, że ​​używasz blowfish
  • $5$ oznacza, że ​​używasz SHA-256
  • $6$ oznacza, że ​​używasz SHA-512

SHA-512 to najlepszy dostępny skrót, który można wykorzystać w glibc. Nie wiem, jak silny jest blowfish, ale nie jest częścią glibc i dlatego jest dostępny tylko w niektórych dystrybucjach, które go dodały. SHA-512 produkuje 512-bitowe klucze lub 2 ^ 512 możliwych kombinacji, zanim można się spodziewać kolizji, a przy wystarczająco złożonym haśle, bardzo długo zajęłoby klasterowi komputerów znalezienie rzeczywistego hasła lub kolizji w haszu .

Ponadto, jeśli masz skrót, który się nie zaczyna $num$, używasz DES i ma on ograniczoną długość do 8 znaków. Wierzę, że starsze systemy, które używają DES, lub przynajmniej niektóre z nich, przyjmą hasło dowolnej wielkości, ale będą używać tylko pierwszych 8 znaków. Oznacza to, że jeśli ustawisz hasło na, mybigbigapplea ktoś użyje hasła mybigbigcity, zostanie ono dozwolone, ponieważ DES będzie używać mybigbigi wszystko, co zostanie później odrzucone.

Więc wiesz, Ubuntu od 8.04, które zostało wydane w kwietniu 2008 roku, używało skrótów MD5. Ubuntu z wersji 8.10, która została wydana w październiku 2008 roku, a wszystkie wersje od tego czasu używają skrótów SHA-512. Nie wiem, jak daleko przed kwietniem 2008 roku, ale wierzę, że przez kilka lat, jeśli nie więcej, większość wszystkich dystrybucji używała skrótów.

Wydaje się, że obecne wersje Ubuntu 12.04 i 14.04 LTS (długoterminowe wersje wsparcia) domyślnie używają SHA-512, co widać po $6$dodaniu skrótu do pliku / etc / shadow:

catullus:$6$MsHYK60sqcv$BtDqVCMXibpqg[...]

Teraz długość klucza lub hasła dozwolona dla dowolnego algorytmu mieszającego nie jest jedyną rzeczą, aby określić, jaki rozmiar hasła możesz mieć. Innym interesującym przedmiotem jest sposób pisania programu i jego długość. Wszystkie nowoczesne programy passwd i prawdopodobnie większość crypt(3)funkcji w Linuksie. szyfrowanie przez długi czas (ponieważ użyto przynajmniej MD5 i prawdopodobnie wcześniej) pozwoliło na użycie wskaźników znaków dla rzeczywistego klucza. Oznacza to, że jedyny limit długości klucza, który zaakceptuje, zależy od ilości pamięci RAM, jaką ten program ma do dyspozycji, ale najprawdopodobniej jest to o wiele znacznie dłużej niż jakiekolwiek hasło, które jakakolwiek osoba będzie mogła zapamiętać (miliony znaków?).

To powinno odpowiedzieć na twoje pytanie dotyczące długości hasła. Mam nadzieję, że pomogłem.

Referencje:


7
„Jaka jest maksymalna długość odpowiedzi SU?” lol Świetna odpowiedź!
James Mertz

1
Należy zauważyć, że algorytm crypt () jest przestarzały od ponad dekady. Bez względu na to, jak długie jest hasło crypt (), zostaje ono obcięte do 8 znaków. W połączeniu z bardzo małą przestrzenią na klawisze 12-bitowej soli, crypt () stał się całkowicie niepewny. Jako odniesienie, oto artykuł o tym, jak 1 milion haseł Gawkera zostało ujawnionych z powodu użycia crypt () w 2010 roku: https://www.lightbluetouchpaper.org/2010/12/15/the-gawker-hack- how-a-milion-passwords-were-lost /
cremefraiche

8

Zależy to od używanego modułu uwierzytelniania. W nowoczesnych systemach Linux nie ma maksymalnego limitu długości hasła. Niektóre przestarzałe systemy mogą mieć ograniczenia narzucone przez system przechowywania haseł - popularne maksima to 8, 40 i 255.


3

W zależności od sposobu przechowywania hasła, MD5, SHA1, BlowFish itp. Myślę, że nie ma limitu hasła ustawionego przez samą metodę przechowywania.

Starsze implementacje mogą mieć limit, który prawdopodobnie wynosi 8 lub 255 znaków.

Wydaje się, że to pytanie lepiej pasuje do www.serverfault.com :)


5
Jest to ogólnie związane z komputerem, niekoniecznie jednak specyficzne dla serwerów!
Darth Android

0

Polecenie passwd obejmuje polecenie szyfrowania mcrypt. Zgodnie z kodem źródłowym mcrypt maksymalny rozmiar stdin jest ograniczony do 512 znaków (szyfrów) - ale to było dwa lata temu .... - (zaktualizuję tę odpowiedź za kilka godzin) ... Tak ... W kodzie źródłowym 2.6.8 mcrypt w katalogu src znajduje się plik getpass.c - tam na początku widzisz wartość 512 ustawioną jako statyczną wartość char. (Chciałbym go przepompować do 1,4 GB ...):

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.