Ответы:
Для ранней истории хранения паролей Unix, прочитайте Роберт Моррис и Защита паролей Кена Томпсона : История болезни . Они объясняют, почему и как рано Unix-системы приобрели большинство функций, которые до сих пор считаются важными функциями хранения паролей (но сделаны лучше).
crypt
функцию, которая хэширует пароль. Он описывается как «шифрование», а не «хеширование», потому что современная криптографическая терминология еще не установлена, и в нем используется алгоритм шифрования, хотя и нетрадиционным способом. Вместо того, чтобы зашифровывать пароль ключом, который будет тривиально отменить, когда у вас есть ключ (который должен быть сохранен в системе), они используют пароль в качестве ключа.Первоначально хэш пароля находился в общедоступном файле /etc/passwd
. Размещение хеша в отдельном файле /etc/shadow
, доступ к которому могла получить только система (и системный администратор), было одним из многих нововведений Sun, появившихся в SunOS 4 в середине 1980-х годов. Он постепенно распространился на другие варианты Unix (частично через сторонний набор теней, чей потомок до сих пор используется в Linux) и не был доступен везде до середины 1990-х или около того.
За прошедшие годы был улучшен алгоритм хеширования. Самым большим скачком стал алгоритм Poul-Henning Kamp на основе MD5 в 1994 году, который заменил алгоритм на основе DES на алгоритм с лучшим дизайном. Это сняло ограничение на 8 символов пароля и 2 символа соли и увеличило медлительность. См. IEEE Разработка с открытым исходным кодом , январь-февраль. 2004, стр. 7–8 . Алгоритмы на основе SHA-2, которые сегодня являются стандартом де-факто, основаны на том же принципе, но с немного лучшей внутренней конструкцией и, что наиболее важно, настраиваемым коэффициентом замедления.
У меня пока нет первоисточника, но согласно этому посту TrustedSec (выделено мое):
Ранние системы хранили пароли в незашифрованном виде, но в конечном итоге это было заменено более безопасными формами хранения паролей. Роберт Моррис разработал крипту на основе шифровальной машины m-209, и она появилась в Unix версии 3 , хотя 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 Password Suite Джули Хау испытала взлом компьютера и написала первоначальный выпуск Shadow Suite, содержащий команды login, passwd и su. Оригинальная версия, написанная для операционной системы SCO Xenix, быстро была перенесена на другие платформы. Shadow Suite был перенесен на Linux в 1992 году, через год после первоначального объявления о проекте Linux, и был включен во многие ранние дистрибутивы и продолжает включаться во многие текущие дистрибутивы Linux.