Эта хэш-функция выдает хэш-значение, в два раза большее длины блока алгоритма шифрования: при 64-битовом алгоритме получается 128-битовое хэш-значение.
При 64-битовом блочном алгоритме схема выдает два 64-битовых хэш-значения, Gi, и Hi, объединение которых и дает 128-битовое хэш-значение. У большинства блочных алгоритмов длина блока равна 64 битам. Два соседних блока, Liи Ri, размер каждого равен размеру блока, хэшируются вместе.
G0 = IG, где IG - случайное начальное значение
Но = IH,, где IH - другое случайное начальное значение
Лай приводит вскрытие этой схемы, которое в некоторых случаях делает вскрытие методом дня рождения тривиальным. Пренел и Копперсмит также успешно взломали эту схему. Не используйте ее.
К сожалению эта схема тоже небезопасна. Оказывается, что хэш-функция удвоенной длины со скоростью хэширования, равной 1, не может быть безопаснее, чем Davies-Meyer.
Тандемная (Таndеm) и одновременная (Abreast) схемы Davies-Meyer.
Другой способ обойти ограничения, присущие блочным шифрам с 64-битовым ключом, использует алгоритм, подобный IDEA, с 64-битовым блоком и 128-битовым ключом. Следующие две схемы выдают 128-битовхэш-значение, а их скорость хэширования равна 1/2.
Тандемная схема Davies-Meyer.
В первой схеме две модифицированные функции Davies- Meyer работают тандемом, конвейерно.
В следующей схеме используются две модифицированные функции, работающие одновременно.
MDC
MDC – Manipulation Detection Code – код обнаружения манипуляций
Разработка фирмы IBM. Данная хэш-функция использует блочный шифр (в оригинале DES) для получения хэш-кода, длина которого в два раза больше длины блока шифра. Существуют две версии этой разработки: MDC2 и MDC4. Первая работает несколько быстрее, но представляется несколько менее надежной, чем вторая. Ниже приведена схема вычисления функции MDС4. , где -- начальное значение;
, где -- еще одно начальное значение;
;
;
;
;
;
.
Хэш-кодом является конкатенация последних значений и . Здесь обозначено: и -- соответственно левая и правая части -того блока хэшируемого текста. Функция просто заменяет значения 1-го и 2-го битов аргумента на значения 1 и 0 соответственно, а -- на значения 0 и 1.
Хэш-функция MDC4 использована в проекте RIPE, хотя эффективность (скорость хэширования при программной реализации) у данной схемы низкая.
Схема алгоритма выработки MDC (хэш–кода) с использованием классического блочного шифра приведена на рисунке 2.
Алгоритм выработки кода обнаружения манипу- ляций для массива данных. |
Шаг 0. Входные данные – массив данных T, разбитый на m блоков фиксированного размера, не превышающего размер ключа использованного криптоалгоритма и, как правило, делящего его нацело: T =(T 1, T 2,..., T m). Последний блок данных T m каким-либо способом дополняется до полного блока данных, если имеет меньший размер.
Шаг 1. MDC получает нулевое начальное значение (это значение может быть, в принципе, любым).
Последующие шаги 2 и 3 алгоритма выполняются последовательного для каждого блока исходных данных в порядке их следования.
Шаг 2. Выполняется расширение очередного блока T i данных с помощью функции расширения P до размера ключа шифра.
Шаг 3. Выполняется зашифрование текущего значения MDC на ключе, полученном на шаге 2, результат становится новым текущим значением MDC.
Шаг 4. Результатом работы алгоритма (т.е. MDC для всего входного массива данных) является последнее текущее значение MDC, полученное на шаге 3.
Рассмотренный алгоритм также может быть использован для выработки хэш–кода в схемах цифровой подписи.
МDС-2 и МDС-4
Скорость хэширования МDС-2 равна 1/2, длина хэш-значения этой функции в два раза больше размера блока. МDС-4 также выдает хэш-значение в два раза большее размера блока, а ее скорость хэширования равна 1/4.
G i
Нi
М DС -2.
МDС-4.
Эти схемы были проанализированы. Они безопасны с учетом сегодняшних возможностей вычислительной техники, но их надежность не так велика, как хотелось разработчикам. Их устойчивость к дифференциальному криптоанализу при DES в качестве блочного алгоритма была рассмотрена в литературе.
МDС-2 и МDС-4 запатентованы.
Хэш-функция АR
Хэш-функция АR была разработана Algorithmic Research, Ltd. и затем распространена 18О только для информации. Ее базовая структура является вариантом используемого блочного шифра DЕS в упомянутой статье) в режиме СВС. Выполняется XOR последних двух блоков шифротекста, константы и текущего блока сообщения, результат шифруется алгоритмом. Хэш-значением являются последние вычисленные два блока шифротекста. Сообщение обрабатывается дважды, двумя различными ключами, поэтому скорость хэширования равна 1/2. Первым ключом служит 0x0000000000000000, вторым - Ох2а41522f446502а, а значение константы с равно Ох0123456789abcdef. Результат сжимается до одного 128-битового хэш-значения.
Функция выглядит привлекательной, но не является безопасной. После некоторой значительной предобработки становится возможным легко находить сообщения с одинаковым хэш-значением.
Хэш-функция ГОСТ
Эта хэш-функция появилась в России и определена в стандарте ГОСТ Р 34.11.94. В ней используется блочный алгоритм ГОСТ, хотя теоретически может использоваться любой блочный алгоритм с 64-битовым блоком и 256-битовым ключом. Функция выдает 256-битовое хэш-значение.
Функция сжатия, Hi = f(Mi, Hi-1) (оба операнда - 256-битовые величины) определяется следующим образом:
(1) При помощи линейного смешивания М i, Hi-1 и некоторых констант генерируется четыре ключа шифрования ГОСТ.
(2) Каждый ключ используется для шифрования отличных 64 битов Hi-1 в режиме ЕСВ. Полученные 256 битов сохраняются во временной переменной S.
(3) Hi является сложной, хотя и линейной функцией S, Мi , и Hi-1 .
Хэш-значение последнего блока сообщения не является его окончательным хэш-значением.
На деле используется три переменные сцепления:
Hn - это хэш-значение последнего блока,
Z - это XOR всех блоков сообщения,
а L - длина сообщения. С использованием этих переменных и дополненного последнего блока М', окончательное хэш-значение равно:
Эта хэш-функция определена как часть российского Стандарта цифровой подписи.