шифрование пароля по DES
Не понимаю один момент ..
Во многих системах используется шифрование паролей пользователей с помощью алгоритма DES (например, в unix-like системах). Пароль в зашифрованном виде хранится в passwd.
Но по какому ключу шифруется пароль?? Откуда он берется? Или там наоборот – шифруется какой-то известный текст по ключу в виде пароля? Но тогда какой текст?
Допускаю, что этот ключ зашит в функции crypt() .. но как тогда работают дешифраторы (такие как John the Ripper)? Они ведь не знают из какой системы взят зашифрованный пароль ..
Разъясните, пожалуйста ..
возмем для примера самый старый вариант – 56-битный DES.
пароль пользователя используется как ключ шифрования блока данных размером 64 бита заполненного нулями, полученный блок данных еще раз шифруется паролем пользователя и так несколько раз (если я правильно помню – 25 раундов). результат упаковывется в строку (транформируется в печатные символы)
Модераторы, перенесите вопрос в OC Linux
64 бита нулей это стандарт? Можно ожидать что все ОС и приложения шифрующие пароль по DES так себя поведут? Или тут кто во что горазд?
egor, я не очень понимаю что в данном случае явлется стандартом
я описал алгоритм работы старых версий crypt(3) в Linux/BSD, так когда то шифровались пароли в /etc/passwd.
paranoid ant вообще маньяк. Я ещё понимаю, когда человек призрачно представляет плюсы и минусы тех или иных алгоритмов, и умеет хорошо польховаться программами, эти алгоритмы реализовывающими.... Но знать детально наизусть как работает дословно тот или иной алогритм или раелизация... О ужас, куда я попал. Одно криптоаналитики и хакиры кругом...
"— paranoid ant (01/08/2006 18:16) <#>
пароль пользователя используется как ключ шифрования "
поспорю, пароль не используется в качестве ключа, чтоб получить ключ надо захешировать пароль
Имеется ввиду способ использования шифра DES в необратимом преобразовании вместо функции хэширования. Позднее его действительно заменили на md5