14.4. DES, MD5 i Crypt

Częściowo przepisał i zaktualizował Bill Swingle.

Każdy użytkownik systemu UNIX®, ma ze swoim kontem skojarzone hasło. Wydaje się oczywiste, że hasło powinno być znane tylko użytkownikowi i systemowi operacyjnemu. Aby przechowywać hasła w bezpiecznej postaci, szyfrowane są one techniką zwaną “skrótem jednostronnym” (ang. “one-way hash”), czyli mogą być łatwo zaszyfrowane lecz odwrócenie tego procesu jest praktycznie niemożliwe. Innymi słowy to co przed chwilą powiedzieliśmy nie jest do końca prawdą - system operacyjny nie zna tak naprawdę haseł - zna tylko zaszyfrowaną postać hasła. Jedynym sposobem uzyskania hasła w postaci “czystego tekstu” jest przeszukanie całej przestrzeni możliwych kombinacji i sprawdzenie, która postać jawna daje dokładnie ten sam skrót.

Niestety, jedyny sposób szyfrowania haseł który pojawił się wraz z Uniksem bazował na DES, Standardzie Szyfrowania Danych (ang. Data Encryption Standard). Nie jest to problem dla użytkowników mieszkających na stałe w Stanach Zjednoczonych, ale ponieważ kod źródłowy DES nie mógł być eksportowany poza USA, FreeBSD musiało znaleźć sposób aby dopasować się zarówno do prawa Stanów Zjednoczonych jak i kompatybilności z wersjami systemu UNIX używającymi szyfrowania DES.

Rozwiązaniem okazało się podzielenie bibliotek szyfrujących tak, by użytkownicy w Stanach Zjednoczonych mogli zainstalować ich wersje DES, a użytkownicy międzynarodowi nadal mieli dostęp do jakiejś metody szyfrowania. W ten sposób doszło do zastosowania we FreeBSD jako domyślnego algorytmu szyfrowania MD5. MD5 jest uważany za bezpieczniejszy niż DES, więc opcja instalacji standardu DES zachowana została przede wszystkim z uwagi na zagadnienia kompatybilności.

14.4.1. Identyfikacja metody szyfrowania

Obecnie obsługiwane są funkcje szyfrowania DES, MD5 i Blowfish. Domyślnie do szyfrowania haseł FreeBSD wykorzystuje MD5.

Identyfikacja metody, której FreeBSD używa do szyfrowania haseł jest stosunkowo prosta. Sprawdzenie haseł zebranych w pliku /etc/master.passwd jest jednym ze sposobów. Hasła zaszyfrowane algorytmem MD5 są dłuższe niż zaszyfrowane przez DES i zaczynają się znakiem $1$. Hasła zaczynające się od $2a$ zaszyfrowane są za pomocą mechanizmu Blowfish. Algorytm DES nie posiada łatwo rozróżnialnych cech, ale hasła są krótsze niż te szyfrowane MD5 i kodowane 64-znakowych alfabetem, który nie zawiera znaku $. Zatem relatywnie krótki ciąg znaków, nie zaczynający się od dolara jest z dużym prawdopodobieństwem hasłem DES.

Format haseł używany dla nowo ustawianych haseł kontrolowany jest przez opcję passwd_format w pliku /etc/login.conf. Może ona przyjąć wartość des, md5 lub blf. Strona podręcznika systemowego login.conf(5) zawiera więcej informacji o możliwościach zmiany parametrów logowania.

Ten i inne dokumenty można pobrać z ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

W przypadku pytań o FreeBSD prosimy przeczytać dostępną dokumentację przed kontaktem z <questions@FreeBSD.org>.
W sprawie zapytań o tę dokumentację prosimy o kontakt z <doc@FreeBSD.org>.