Когда Unix прекратил хранить пароли в виде открытого текста?

37

Когда Unix отошел от хранения паролей в виде открытого текста в passwd? Кроме того, когда был представлен теневой файл?

ZDOSA
источник
Вы искали что-нибудь?
Кен Шарп

Ответы:

62

Для ранней истории хранения паролей Unix, прочитайте Роберт Моррис и Защита паролей Кена Томпсона : История болезни . Они объясняют, почему и как рано Unix-системы приобрели большинство функций, которые до сих пор считаются важными функциями хранения паролей (но сделаны лучше).

  • Первые системы Unix хранили пароли в виде открытого текста. Unix Third Edition представил cryptфункцию, которая хэширует пароль. Он описывается как «шифрование», а не «хеширование», потому что современная криптографическая терминология еще не установлена, и в нем используется алгоритм шифрования, хотя и нетрадиционным способом. Вместо того, чтобы зашифровывать пароль ключом, который будет тривиально отменить, когда у вас есть ключ (который должен быть сохранен в системе), они используют пароль в качестве ключа.
  • Когда Unix переключился с более раннего шифра на тогдашний современный DES , он также стал медленнее благодаря многократному повторению DES. Я не знаю точно, когда это произошло: V6? V7?
  • Простое хеширование пароля уязвимо для многоцелевых атак: раз и навсегда хэшируйте все наиболее распространенные пароли и ищите совпадения в таблице паролей. Включение соли в механизм хеширования, где каждая учетная запись имеет уникальную соль, побеждает это предварительное вычисление. Unix приобрел соль в седьмом издании в 1979 году .
  • Unix также приобрел правила сложности пароля, такие как минимальная длина в 1970-х.

Первоначально хэш пароля находился в общедоступном файле /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, которые сегодня являются стандартом де-факто, основаны на том же принципе, но с немного лучшей внутренней конструкцией и, что наиболее важно, настраиваемым коэффициентом замедления.

Жиль "ТАК - прекрати быть злым"
источник
Кстати, соль - это то, что шифруется.
Джошуа
Для тех , кто не имеет просмотрщик Postscript, я нашел PDF - копию документа Morris & Thompson здесь
grahamj42
8

У меня пока нет первоисточника, но согласно этому посту TrustedSec (выделено мое):

Ранние системы хранили пароли в незашифрованном виде, но в конечном итоге это было заменено более безопасными формами хранения паролей. Роберт Моррис разработал крипту на основе шифровальной машины m-209, и она появилась в Unix версии 3 , хотя Crypt не использовалась для хранения паролей до 6-го выпуска Unix (1974).

Согласно нескольким источникам, версия 3 UNIX была выпущена в феврале 1973 года .

Исходя из оригинальной статьи Томпсона и Морриса , мы можем подтвердить, что хранилище открытого текста использовалось изначально:

Система UNIX была впервые реализована с помощью файла паролей, который содержал действительные пароли всех пользователей, и по этой причине файл паролей должен был быть надежно защищен от чтения или записи.

/ etc / shadow появился в нескольких ветках UNIX, как отмечалось в других ответах.

Ройс Уильямс
источник
6

Согласно разделу « История » на странице 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.

VGe0rge
источник
5
Хранение без теневого пароля! = Хранение незашифрованного открытого текста.
рэдбэндмен