Экстернат |
Криптографические хэш-функции
2.1. Введение
Рассмотренная в "С. Набор протоколов TCP/IP" криптографическая хэш-функция получает сообщение произвольной длины и создает дайджест сообщения фиксированной длины. Окончательная цель этой главы состоит в том, чтобы обсудить детали двух наиболее перспективных криптографических алгоритмов хэширования - SHA-512 и Whirlpool. Однако мы сначала должны обсудить некоторые общие идеи, которые могут быть применены к любой криптографической хэш-функции.
Итеративная хэш-функция
Все криптографические хэш-функции должны создавать дайджест фиксированного размера из сообщения переменного размера. Применять такую функцию лучше всего, используя итерацию. Вместо хэш-функции с вводом переменного размера создана и используется необходимое количество раз функция с вводом фиксированного размера, называемая функцией сжатия. Она сжимает n -битовую строку и создает m -битовую строку, где n обычно больше чем m. Эта схема известна как итеративная криптографическая функция.
Схема Меркеля-Дамгарда (Merkle-Damgard)
Схема Меркеля-Дамгарда - итеративная хэш-функция, которая является функцией сжатия, устойчивой к коллизии. Это может быть доказано, но доказательство оставляем как упражнение. Схема показана на рис. 2.1.
Схема использует следующие шаги:
- Длина сообщения и дополнение добавляются в конец сообщения, чтобы создать увеличенное сообщение, которое может быть равномерно разделено на n -битовые блоки; здесь n - размер блока, который будет обработан функцией сжатия.
- Сообщение тогда рассматривают как t блоков, размер каждого состоит из n бит. Мы обозначим каждый блок М1,..., Мt. Мы обозначаем дайджест, созданный при t итерациях, - H1, H2,...., Ht
- Перед стартом итерации дайджест H0 устанавливается на фиксированное значение, обычно называемое IV (начальное значение или начальный вектор).
- Функция сжатия при каждой итерации обрабатывает Hi-1 и М., создавая новый Hi. Другими словами, мы имеем Hi = .f (Hi-1, Мi), где f - функция сжатия.
-
Ht - функция криптографического хэширования первоначального сообщения, то есть h(M).Если функция сжатия в схеме Меркеля-Дамгарда устойчива к коллизии, хэш-функция также устойчива к коллизии.
Две группы функций сжатия
Схема Меркеля-Дамгарда сегодня - основание для многих функций криптографического хэширования. Единственная вещь, которую мы должны сделать, - разработать функцию сжатия, которая является устойчивой к коллизиям, и вставить ее в схему Меркеля-Дамгарда. Есть тенденция использовать два различных подхода в разработке хэш-функции. В первом подходе функция сжатия сделана на "пустом месте": она разработана только для этой цели. Во втором подходе блочный шифр с симметричными ключами служит функцией сжатия.
Хэш-функции, сделанные на "пустом месте"
Множество функций криптографического хэширования использует функции сжатия, которые сделаны "на пустом месте". Эти функции сжатия специально созданы для целей, которым они служат.
Несколько алгоритмов хэширования были разработаны Роном Ривестом. Они известны в литературе как MD2, MD4 и MD5, где MD обозначает Дайджест Сообщения. Последняя версия, MD5, является усиленной версией MD4, которая делит сообщение на блоки по 512 битов и создает дайджест на 128 битов. Оказалось, что дайджест сообщения размером 128 битов - слишком маленький, чтобы быть устойчивым к атаке коллизии.
Алгоритм безопасного хэширования (SHA - Secure Hash Algorithm)
Алгоритм безопасного хэширования (SHA) - стандарт, который был разработан национальным Институтом Стандартов и Технологии (NIST - National Institute of Standards and Technology) и издан как Федеральный Стандарт Обработки Информации (FIP 180). Он упоминается в литературе как Стандарт Безопасного хэширования ( SHS - Secure Hash Standard ). Стандарт главным образом базируется на MD5. В 1995 г. он был пересмотрен под названием FIP 180-1, который включает SHA-1. Позже он снова был пересмотрен под названием FIP 180-2, который определяет четыре новых версии: SHA-224, SHA-256, SHA-384 и SHA-512. табл. 2.1 дает список некоторых из характеристик этих версий.
Все эти версии имеют одну и ту же структуру. SHA-512 будет рассмотрен подробно позже в этой лекции.
Другие Алгоритмы сохранения целостности (RIPMD - RACE Integrity Primitives Evaluation Message Digest).Группа алгоритмов криптографического хэширования( RIPMD ) имеет несколько версий. RIPEMD-160 - алгоритм хэширования с дайджестом сообщения на 160 битов. RIPEMD-160 использует ту же структуру, что и MD5, но применяет два варианта выполнения.
HAVAL - алгоритм хэширования переменной длины с дайджестом сообщения размера 128, 160, 192, 224 и 256. Размер блока - 1024 бита.
Хэш-функции, основанные на блочных шифрах
Итеративная функция криптографического хэширования может использовать блочный шифр с симметричными ключами как функцию сжатия. Основная идея такого подхода - есть несколько безопасных блочных шифров с симметричными ключами, таких как трехкратный DES или AES, которые могут использоваться для создания односторонней функции вместо того, чтобы создавать новую функцию сжатия. Блочный шифр в этом случае только выполняет шифрования. Были предложены несколько схем. Позже мы рассмотрим одну из наиболее перспективных - Whirlpool.
Схема Рабина. Итеративная хэш-функция, предложенная Рабиным, очень проста. Схема Рабина базируется на схеме Меркеля-Дамгарда. Функция сжатия заменяется любым алгоритмом шифрования. Блок сообщения используется как ключ; предварительно созданный дайджест используется как исходный текст. Зашифрованный текст - новый дайджест сообщения. Обратите внимание, что размер дайджеста - это размер блочного шифра данных в основной криптографической системе. Например, если DES используется как блочный шифр, размер дайджеста - только 64 бита. Хотя схема очень проста, она может быть раскрыта с помощью атаки "сведения к середине", рассмотренной в "Безопасность на прикладном уровне: PGP и S/MIME" , поскольку противник может применить алгоритм дешифрования криптографической системы. Рис. 2.2 показывает схему Рабина.
Схема Девиса-Мейера (Davies-Mayer). В основном она повторяет схему Рабина, за исключением того, что использует прямую связь для защиты от атаки "сведения в середину".
Схема Матиса-Мейера-Осеаса (Metyas-Mayer-Oseas). Это версия схемы Девиса-Мейера: блоки сообщения применяются как ключи криптосистемы. Схема может быть использована, если блоки данных и ключ шифрования имеют один и тот же размер. Например, AES хорошо подходит для этой цели.
Схема Миагучи-Пренеля - расширенная версия схемы Матиса-Мейера-Осеаса. Чтобы сделать алгоритм более устойчивым к атаке, исходный текст, ключ шифра и зашифрованный текст складываются с помощью ИСКЛЮЧАЮЩЕГО ИЛИ и создают новый дайджест. Эта схема используется в Whirlpool для создания хэш-функции. На рис. 2.5 показана схема Миагучи-Пренеля.