В начале основного цикла блок хэшируемого текста расширяется до 80 слов по 32 бита по правилу: для слово совпадает с -тым подблоком исходного блока; для полагают , где -- промежуточные значения слов.
Каждый из 80 операторов основного цикла имеет следующий вид:
TEMP ;
;
;
;
TEMP ;
Здесь, как и прежде, символ " " обозначает циклический сдвиг. Основной цикл завершается суммированием , , , , и , , , , . Выходом алгоритма является конкатенация , , , , .
В качестве интересного замечания, в первоначальной спецификации SHA не было циклического сдвига влево. Изменение "исправляет технический изъян, который делал стандарт менее безопасным, чем предполагалось. NSA отказалось уточнить истинную причину изъяна.
Сведения об успешных криптографических вскрытиях SНА отсутствуют.
SНА - это М D4 с добавлением расширяющего преобразования, дополнительного этапа и улучшенным лавинным эффектом. М D5 - это М D4 с улучшенным битовым хэшированием, дополнительным этапом и улучшенным лавинным эффектом.
RIPE-МD
• RIPE-МD была разработана для проекта RIPE Европейского сообщества.
• Алгоритм представляет собой вариант МD4, разработанный так, чтобы противостоять известным методам криптографического вскрытия, и выдает 128-битовое хэш-значение.
Изменения:
1. изменены циклические сдвиги и порядок слов сообщения.
2. параллельно работают две копии алгоритма, отличающиеся константами. После каждого блока результат обоих копий добавляется к переменным сцепления.
Это повышает устойчивость алгоритма к криптоанализу.
HAVAL
HAVAL - это однонаправленная хэш-функция переменной длины. Она является модификацией МD5. HAVAL обрабатывает сообщение блоками по 1024 бита, в два раза большими, чем в МD5. Используется восемь 32-битовых переменных сцепления, в два раза больше, чем в МD5, и переменное число этапов, от трех до пяти (в каждом 16 действий). Функция может выдавать хэш-значения длиной 128, 160, 192, 224 или 256 битов.
HAVAL заменяет простые нелинейные функции МD5 на сильно нелинейные функции 7 переменных, каждая из которых удовлетворяет строгому лавинному критерию. На каждом этапе используется одна функция, но при каждом действии входные переменные переставляются различным образом. Используется новый порядок сообщения, и при каждом этапе (кроме первого этапа) используется своя прибавляемая константа. В алгоритме также используется два циклических сдвига.
Ядром алгоритма являются следующие действия:
Переменное количество этапов и переменная длина выдаваемого значения означают, что существует 15 версий алгоритма. Вскрытие МD5, выполненное ден Боером и Босселаерсом, неприменимо к HAVAL из-за циклического сдвига Н.
Snefru
Snefru - это однонаправленная хэш-функция, разработанная Ральфом Мерклом. Snefru хэширует сообщения произвольной длины, превращая их в 128-битовые 256-битовые значения.
Сообщение è блоки по 512-бит. (Переменная т является длиной хэш-значения.)
Выход = 192-битовое значение è длина блоков равна 384 битам,
128-битовое значение è длина блоков - 256 битов.
Сердцем алгоритма служит функция Н: хэширует 512-битовое значение в m -битовое. Первые т битов выхода Н являются хэш-значением блока, остальные отбрасываются.
Следующий блок добавляется к хэш-значению предыдущего блока и снова хэшируется. (К первоначальному блоку и последнему блоку добавляется строка нулей.) После последнего блока первые т битов добавляются к бинарному представлению длины сообщения и хэшируются последний раз.
Функция Н основывается на Е, обратимой функции блочного шифрования, работающей с 512 битовыми блоками. Н - это последние т битов выхода Е, объединенные с первыми т битами входа Е.
Безопасность Snefru опирается на функцию Е, которая рандомизирует данные за несколько проходов. Каждый проход состоит из 64 рандомизирующих этапов. В каждом этапе в качестве входа S-блока используется другой байт данных. Выходное слово подвергается операции XOR с двумя соседними словами сообщения. Построение 8-блоков аналогично построению S-блоков в Khafre. Кроме того, выполняется ряд циклических сдвигов. Оригинальный Snefru состоял из двух проходов.
Криптоанализ Snefru
С использованием дифференциального криптоанализа показана небезопасность двухпроходного Snefru (с 128-битовым хэш-значением). Способ вскрытия за несколько минут обнаруживает пару сообщений с одинаковым хэш-значением.
Для 128-битового Snefru вскрытия работают лучше, чем вскрытие грубой силой для четырех и менее проходов. Вскрытие Snefru методом дня рождения требует 264 операций; дифференциальный криптоанализ может найти пару сообщений с одинаковым хэш-значением за 228'5 операций для трехпроходного Snefru и за 244'5 операций для четырехпроходного Snefru. Нахождение сообщения, хэш-значение которого совпадает с заданным, при использовании грубой силы требует 2128 операций, при дифференциальном криптоанализе для этого нужно 256 операций для трехпроходного и 288 операций для четырехпроходного Snefru.
Проведен анализ вплоть до 224-битовых хэш-значений. В сравнении с вскрытием методом дня рождения, требующим 2 112 операций они могут найти сообщения с одинаковым хэш-значением за 2125 операций для двухпроходного Snefru, за 233 операций для трехпроходного Snefru и за для 281 операций для четырехпроходного Snerfu.
В настоящее время рекомендуется использовать Snefru по крайней мере с восемью проходами. Однако с таким количеством проходов алгоритм становится намного медленнее, чем МD5 или SНА.
Tiger
• Tiger представляет собой новый хэширующий алгоритм, разработанный Anderson and Biham.
В три раза быстрее SHA-1 на 64 – разрядных п. (SHA оптимизирован под 32 разрядные процессоры и только … даже на 16 разрядном процессоре «тигр» будет работать быстрее).
Тигр с полными 192 битами на выходе также называется Tiger/192 и рекомендован к использовании. В новых приложениях.
Tiger/160: на выходе хэш-значение длиной 160 бит, т.е. берутся первые 160 бит выхода на Tiger/192. Это предпринято в целях совместимости с алгоритмом SHA-1.
Tiger/128: по аналогии с Tiger/160: совместимость с MD4, MD5,RIPE-MD, Snerfu и рядом хэш-функций, построенных на блочных алгоритмах шифрования.
Тигр при реализации, как заявлено, не требует значительных машинных ресурсов.
Тигр осуществляет вычисления над 64 – битными словами: 512 – битное сообщение разбивается на восемь 64-битных слов.
Выбор хэш-функции
Алгоритм | Длина хэш-значения | Скорость ш-ия (Кбайт/с) |
Одновременная схема Davies-Meyer (с IDEA) | 128 | 22 |
Davies-Meyer (с DЕS) | 64 | 9 |
Хэш-функция ГОСТ | 256 | 11 |
HAVAL (3 прохода) | переменная | 168 |
HAVAL (4 прохода) | переменная | 118 |
HAVAL (5 прохода) | переменная | 95 |
МD2 | 128 | 23 |
МD4 | 128 | 236 |
МD5 | 128 | 174 |
N-хэш (12 этапов) | 128 | 29 |
N-хэш (15 этапов) | 128 | 24 |
RIPE-МD | 128 | 182 |
SНА | 160 | 75 |
Snerfu (4 прохода) | 128 | 48 |
Snerfu (8 проходов) | 128 | 23 |