Відповіді:
Про ранню історію зберігання паролів Unix читайте Роберт Морріс та Кен Томпсон " Захист паролів: історія справ" . Вони пояснюють, чому і як раніше системи Unix придбали більшість функцій, які досі розглядаються як важливі особливості зберігання паролів (але зроблено краще).
crypt
функцію, яка хешує пароль. Це описується як "шифрування", а не "хешування", оскільки сучасна криптографічна термінологія ще не була створена, і вона використовувала алгоритм шифрування, хоча і нетрадиційним способом. Замість того, щоб зашифрувати пароль ключем, який було б тривіально скасовувати, коли у вас є ключ (який потрібно було б зберігати в системі), вони використовують пароль як ключ.Спочатку хеш паролів знаходився у файлі, який читається загалом /etc/passwd
. Поміщення хешу в окремий файл, до /etc/shadow
якого тільки система (і системний адміністратор) міг отримати доступ, була однією з багатьох новинок, що надходять від Sun, починаючи з SunOS 4 в середині 1980-х. Він поступово поширювався на інші варіанти Unix (частково через сторонній тіньовий набір , нащадок якого досі використовується в Linux) і не був доступний скрізь до середини 1990-х років.
З роками алгоритм хешування удосконалювався. Найбільшим стрибком став алгоритм на основі MD5 на основі Poul-Henning Kamp в 1994 році, який замінив алгоритм на основі DES на кращий дизайн. Це зняло обмеження на 8 символів пароля та 2 символи солі та збільшило повільність. Див. Розділ IEEE's Developing with open source software , січень – лютий. 2004, с. 7–8 . Алгоритми на основі SHA-2, які сьогодні є фактично стандартними, базуються на тому ж принципі, але з дещо кращим внутрішнім дизайном і, що найважливіше, налаштованим коефіцієнтом повільності.
У мене ще немає першоджерела, але відповідно до цього довіру TrustedSec (моє наголос):
Ранні системи зберігали паролі в простому тексті, але з часом це було замінено на більш безпечні форми зберігання паролів. Роберт Морріс розробив крипту на базі шифрованої машини m-209, і вона з'явилася у версії 3 Unix , хоча Crypt не використовувався для зберігання паролів до 6-го видання Unix (1974).
За даними багатьох джерел, версія 3 UNIX була випущена в лютому 1973 року .
З оригіналу статті Томпсона та Морріса ми можемо підтвердити, що спочатку зберігання в прямому тексті було використано:
Система UNIX вперше була реалізована з файлом паролів, який містив фактичні паролі всіх користувачів, і з цієї причини файл паролів повинен був бути сильно захищений від того, щоб бути прочитаним чи записаним.
/ etc / shadow з'явилося в декількох гілках UNIX, як зазначено в інших відповідях.
Згідно історії розділ в Вікіпедії PASSWD сторінці
Затінення паролів вперше з'явилося в системах Unix з розвитком SunOS в середині 1980-х років [10] System V Release 3.2 в 1988 році і BSD4.3 Reno в 1990 році. Але постачальники, які виконували порти з попередніх версій UNIX, не завжди включали нові функції затінення паролів у своїх випусках, залишаючи користувачів тих систем, які піддаються атакам файлових паролів.
Системні адміністратори можуть також організувати зберігання паролів у розподілених базах даних, таких як NIS та LDAP, а не у файлах кожної підключеної системи. Що стосується NIS, механізм тіньового пароля часто все ще використовується на серверах NIS; в інших розподілених механізмах проблема доступу до різних компонентів аутентифікації користувача вирішується механізмами захисту базового сховища даних.
У 1987 році автор оригінального пакета паролів Shadow, Джулі Хо, пережив комп'ютерний злом і написав початковий випуск Shadow Suite, що містить команди login, passwd та su. Оригінальний реліз, написаний для операційної системи SCO Xenix, швидко перейшов на інші платформи. Комплект Shadow Suite був перенесений в Linux в 1992 році, через рік після первинного оголошення проекту Linux, і він був включений у багато ранніх дистрибутивів і продовжує включатися у багато поточних дистрибутивів Linux.