Хранение паролей пользователей
Именно в учетных записях базы данных SAM находится информация о
пользовательских именах и паролях, которая необходима для идентификации
и аутентификации пользователей при их интерактивном входе в систему.
Как и в любой другой современной многопользовательской ОС, эта информация
хранится в зашифрованном виде. В базе данных SAM каждый пароль пользователя
обычно бывает представлен в виде двух 16-байтовых последовательностей,
полученных разными методами (Win NT/2000 и LAN).
В методе Windows NT/2000 строка символов пользовательского пароля
хешируется с помощью функции MD4. (В алгоритме хеширования MD4 исходная
битовая последовательность дополняется так, чтобы ее длина в битах
плюс 64 нацело делилась на 512. Затем к ней приписывается 64-битовое
значение ее первоначальной длины. Полученная таким образом новая
последовательность обрабатывается блоками по 512 бит с помощью специальной
итерационной процедуры. В результате на выходе MD4 получается так
называемая «выжимка» исходной последовательности, имеющая длину
128 бит. Алгоритм MD4 оптимизирован для 32-разрядных аппаратных
платформ и работает довольно быстро).
В итоге из введенного пользователем символьного пароля получается
16-байтовая последовательность - хешированный пароль Windows NT/2000.
Эта последовательность затем шифруется по DES-алгоритму, и результат
шифрования сохраняется в базе данных SAM. При этом в качестве ключа
используется так называемый относительный идентификатор пользователя
(Relative Identifier, сокращенно RID), который представляет собой
автоматически увеличивающийся порядковый номер учетной записи данного
пользователя в базе данных SAM. Для совместимости с другим программным
обеспечением корпорации Microsoft (Windows for Workgroups, Windows
95/98 и Lan Manager) в базе данных SAM хранится также информация
о пароле пользователя в стандарте Lan Manager.
Для его формирования все буквенные символы исходной строки пользовательского
пароля приводятся к верхнему регистру, и если пароль содержит меньше
14 символов, то он дополняется нулями. Из каждой 7-байтовой половины
преобразованного таким образом пароля пользователя (длина пароля
в Windows NT/2000 ограничена 14 символами, ограничение накладывается
диспетчером учетных записей), отдельно формируется ключ для шифрования
некоторой фиксированной 8-байтовой последовательности по DES-алгоритму.
DES-алгоритм является одним из самых распространенных алгоритмов
шифрования данных. В США он имеет статус федерального стандарта.
Это блочный алгоритм шифрования с симметричным ключом длиной 64
бита, из которых только 56 непосредственно используются при шифровании,
а остальные 8 предназначены для контроля четности байтов ключа.
При этом в качестве ключа используется RID пользователя).
Полученные в результате две 8-байтовые половины хешированного пароля
Lan Manager еще раз шифруются по DES-алгоритму и помещаются в базу
данных SAM.
|