Kiedy Unix przestał przechowywać hasła w postaci czystego tekstu?

37

Kiedy Unix zrezygnował z przechowywania haseł w postaci czystego tekstu w passwd? Kiedy wprowadzono plik cienia?

ZDOSA
źródło
Szukałeś czegoś?
Ken Sharp,

Odpowiedzi:

62

Aby zapoznać się z wczesną historią przechowywania haseł w systemie Unix, przeczytaj Robert Morris i Ken Thompson's Security Security: A Case History . Wyjaśniają, dlaczego i jak wczesne systemy uniksowe uzyskały większość funkcji, które są nadal postrzegane jako ważne funkcje przechowywania haseł (ale zrobione lepiej).

  • Pierwsze systemy uniksowe przechowywały hasła w postaci zwykłego tekstu. Unix Third Edition wprowadził cryptfunkcję haszującą hasło. Jest to określane raczej jako „szyfrowanie” niż „mieszanie”, ponieważ nowoczesna terminologia kryptograficzna nie została jeszcze ustalona i wykorzystywała algorytm szyfrowania, choć w niekonwencjonalny sposób. Zamiast szyfrować hasło za pomocą klucza, co byłoby banalne, aby cofnąć, gdy masz klucz (który musiałby być przechowywany w systemie), używają hasła jako klucza.
  • Kiedy Unix przeszedł z wcześniejszego szyfru na ówczesny DES , został również spowolniony poprzez wielokrotne iterowanie DES. Nie wiem dokładnie, kiedy to się stało: V6? V7?
  • Zwykłe zaszyfrowanie hasła jest podatne na ataki na wiele celów: zaszyfruj wszystkie najpopularniejsze hasła raz na zawsze i poszukaj pasującej tabeli w hasłach. Włączenie soli do mechanizmu mieszającego, w którym każde konto ma unikalną sól, pokonuje to wstępne obliczenie. Unix nabył sól w siódmej edycji w 1979 roku .
  • Unix nabył również zasady złożoności haseł, takie jak minimalna długość w latach 70.

Pierwotnie skrót hasła znajdował się w pliku do odczytu publicznego /etc/passwd. Umieszczenie skrótu w osobnym pliku /etc/shadow, do którego dostęp miał tylko system (i administrator systemu), było jedną z wielu innowacji firmy Sun, pochodzących z około SunOS 4 w połowie lat osiemdziesiątych. Stopniowo rozprzestrzeniał się na inne warianty uniksowe (częściowo za pośrednictwem pakietu cieni innej firmy, którego potomek jest nadal używany w Linuksie) i nie był dostępny wszędzie aż do połowy lat 90.

Z biegiem lat wprowadzono ulepszenia do algorytmu mieszania. Największym skokiem był algorytm oparty na MD5 firmy Poul-Henning Kamp w 1994 roku, który zastąpił algorytm oparty na DES algorytmem o lepszej konstrukcji. Usunęło ograniczenie do 8 znaków hasła i 2 znaków soli i zwiększyło spowolnienie. Zobacz IEEE's Developing with open source software , styczeń – luty. 2004, s. 1 7–8 . Algorytmy oparte na SHA-2, które obecnie są de facto standardem, opierają się na tej samej zasadzie, ale mają nieco lepszą wewnętrzną konstrukcję i, co najważniejsze, konfigurowalny współczynnik spowolnienia.

Gilles „SO- przestań być zły”
źródło
Nawiasem mówiąc, sól jest szyfrowana.
Joshua
Dla tych, którzy nie mają widza Postscript, znalazłem kopię pdf papieru Morris & Thompson tutaj
grahamj42
8

Nie mam jeszcze podstawowego źródła, ale zgodnie z tym postem TrustedSec (moje wyróżnienie):

Wczesne systemy przechowywały hasła w postaci zwykłego tekstu, ale ostatecznie zastąpiono je bezpieczniejszymi formami przechowywania haseł. Robert Morris opracował kryptę opartą na maszynie szyfrującej m-209 i pojawił się w wersji 3 Unix , chociaż Crypt nie był używany do przechowywania haseł do 6. edycji Unix (1974).

Według wielu źródeł wersja 3 UNIX została wydana w lutym 1973 roku .

Na podstawie oryginalnej pracy Thompsona i Morrisa możemy potwierdzić, że pierwotnie użyto miejsca do przechowywania tekstu jawnego:

System UNIX został po raz pierwszy zaimplementowany z plikiem haseł, który zawierał rzeczywiste hasła wszystkich użytkowników iz tego powodu plik haseł musiał być silnie zabezpieczony przed odczytaniem lub zapisaniem.

/ etc / shadow pojawił się w wielu gałęziach UNIX-a, jak zauważono w innych odpowiedziach.

Royce Williams
źródło
6

Zgodnie z sekcją Historia na stronie passwd Wikipedii:

Cieniowanie haseł pojawiło się po raz pierwszy w systemach Unix wraz z rozwojem SunOS w połowie lat 80. XX wieku, [10] System V Release 3.2 w 1988 roku i BSD4.3 Reno w 1990 roku. Ale dostawcy, którzy wykonali porty z wcześniejszych wydań UNIX, nie zawsze uwzględnili nowe funkcje cieniowania haseł w swoich wydaniach, narażając użytkowników tych systemów na ataki plików haseł.

Administratorzy systemu mogą również organizować przechowywanie haseł w rozproszonych bazach danych, takich jak NIS i LDAP, a nie w plikach w każdym podłączonym systemie. W przypadku NIS mechanizm hasła cienia jest nadal często używany na serwerach NIS; w innych mechanizmach rozproszonych problem dostępu do różnych komponentów uwierzytelniania użytkownika jest obsługiwany przez mechanizmy bezpieczeństwa bazowego repozytorium danych.

W 1987 r. Autor oryginalnego Shadow Password Suite, Julie Haugh, doznał włamania do komputera i napisał pierwszą wersję Shadow Suite zawierającą polecenia logowania, passwd i su. Oryginalna wersja, napisana dla systemu operacyjnego SCO Xenix, szybko została przeniesiona na inne platformy. Pakiet Shadow Suite został przeniesiony do Linuksa w 1992 roku, rok po pierwotnym ogłoszeniu projektu Linux, i był zawarty w wielu wczesnych dystrybucjach, i nadal jest zawarty w wielu obecnych dystrybucjach Linuksa.

VGe0rge
źródło
5
Przechowywanie haseł bez cienia! = Niehasowane przechowywanie tekstu jawnego.
rackandboneman