Приветствую Вас Гость | RSS

Суббота, 29.06.2024, 08:16
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
11. Хеширование паролей
BlofeldДата: Понедельник, 28.03.2011, 14:33 | Сообщение # 1
Местный копирайтер
Группа: Администраторы
Сообщений: 583
Репутация: 2012
Статус: Offline
При разработке любого криптоалгоритма следует учитывать, что в половине случаев конечным пользователем системы является человек, но реально ли человеку запомнить например 128-битный. Поэтому были разработаны методы, преобразующие осмысленную строку произвольной длины – пароль, в указанный ключ заранее заданной длины. Обычно для данной операции используются так называемые хеш-функции (от англ. hashing – мелкая нарезка и перемешивание).

Хеш-функцией называется такое математическое или алгоритмическое преобразование заданного блока данных, которое обладает следующими свойствами:
1. хеш-функция имеет бесконечную область определения,
2. хеш-функция имеет конечную область значений,
3. она необратима,
4. изменение входного потока информации на один бит меняет около половины всех бит выходного потока, то есть результата хеш-функции.
Требования 3 и 4 выполняют блочные шифры. Это указывает на один из возможных путей реализации стойких хеш-функций – проведение блочных криптопреобразований над материалом строки-пароля. Характер применения блочного шифра для хеширования определяется отношением размера блока используемого криптоалгоритма и разрядности требуемого хеш-результата.

Если указанные выше величины совпадают, то используется схема одноцепочечного блочного шифрования. Первоначальное значение хеш-результата H0 устанавливается равным 0, вся строка-пароль разбивается на блоки байт, равные по длине ключу используемого для хеширования блочного шифра, затем производятся преобразования по реккурентной формуле:
, где EnCrypt(X,Key) – используемый блочный шифр (см. рис.). Последнее значение Hk используется в качестве искомого результата.

В том случае, когда длина ключа ровно в два раза превосходит длину блока, а подобная зависимость довольно часто встречается в блочных шифрах, используется схема, напоминающая сеть Фейштеля, созданная исследователями Девисом и Майером. Они предложили алгоритм также на основе блочного шифра, но использующий материал строки-пароля многократно и небольшими порциями. Алгоритм получил название "Tandem DM"

G0=0; H0=0 ;
FOR J = 1 TO N DO
BEGIN
TMP=EnCrypt(H,[G,PSWj]); H'=H XOR TMP;
TMP=EnCrypt(G,[PSWj,TMP]); G'=G XOR TMP;
END;
Key=[Gk,Hk]
Квадратными скобками здесь обозначено простое объединение (склеивание) двух блоков информации равной величины в один – удвоенной разрядности. А в качестве процедуры EnCrypt(X,Key) опять может быть выбран любой стойкий блочный шифр. Как видно из формул, данный алгоритм ориентирован на то, что длина ключа двукратно превышает размер блока криптоалгоритма.

Современные распространенные алгоритмы хэширования:
MD5 (англ. Message Digest 5) — 128-битный алгоритм хеширования, разработанный профессором Рональдом Л. Ривестом из Массачусетского технологического института (Massachusetts Institute of Technology, MIT) в 1991 году. Предназначен для создания «отпечатков» или «дайджестов» сообщений произвольной длины и последующей проверки их подлинности. Является улучшенной в плане безопасности версией MD4.
Secure Hash Algorithm 1 — алгоритм криптографического хеширования. Для входного сообщения произвольной длины (максимум 264 − 1 бит, что равно 2 эксабайта) алгоритм генерирует 160-битное хеш-значение. Используется во многих криптографических приложениях и протоколах. Также рекомендован в качестве основного для государственных учреждений в США.

 
  • Страница 1 из 1
  • 1
Поиск: