2 Стандарты блочного шифрования

Вид материалаРеферат
5. Хэш-функции и хэширование 5.1. Общие сведения
5.2. Типы хэш-функций
5.3. Требования к хэш-функциям.
5.4. Стойкость хэш-функций.
Подобный материал:
1   ...   5   6   7   8   9   10   11   12   13

5. Хэш-функции и хэширование

5.1. Общие сведения


Выше нами были рассмотрены механизмы двухключевой криптографии, которые дают возможность подписывать сообщения ограниченной длины (порядка 103 бит). Если сообщение имеет большой размер, то при прямолинейном использовании таких механизмов потребуется разбить исходное сообщение на большое число блоков меньшего размера и выработать столько подписей, сколько блоков будет содержаться в сообщении. Это сильно усложняет проблему хранения подписей и самих подписанных сообщений, а также организации баз данных, содержащих большое число подписанных документов. Для упрощения этой проблемы подписывается не сам документ, а некоторый его цифровой образ небольшого размера, полученный по специальным криптографическим процедурам, называемым хэшированием.

Алгоритм хэширования должен быть таким, чтобы обеспечить вычислительную неосуществимость нахождения двух сообщений с одинаковым значением цифрового образа (значением хэш-функции от сообщения). В настоящее время разработаны алгоритмы, которые удовлетворяют этому условию и позволяют легко вычислить значение хэш-функции от данного документа. Вместо подписывания большого числа отдельных частей ЭД в реальных системах цифровой подписи осуществляется вычисление хэш-функции от документа и подписывание хэш-функции. Если хэш-функция подписана, документ считается подписанным.

Таким образом, хэш-функции являются необходимым элементом при применении ряда криптографических алгоритмов. Под ними понимаются функции, отображающие последовательность произвольной длины в значение фиксированной длины, называемой хэш-кодом или выжимкой.

5.2. Типы хэш-функций


Существует три типа построения хэш-функций:
  • на основе какой-либо трудновычисляемой математической задачи;
  • на основе алгоритмов блочного шифрования;
  • разработанные с нуля.

Каждый из выше перечисленных методов имеет свои достоинства и недостатки, однако наиболее распространенными на сегодняшний день оказались последние два. Это связано с тем, что при построении хэш-функций с нуля появляется возможность учитывать такое их свойства, как эффективная программная реализация. Широкое применение хэш-функций, построенных на основе алгоритмов блочного шифрования, является результатом тщательной проработке вопроса стойкости многих из существующих алгоритмов.

5.3. Требования к хэш-функциям.


При практическом использовании хэш-функций должны выполняться следующие требования:
  • алгоритм должен обладать высокой скоростью обработки информации;
  • хэш-функция должна быть стойкой против атаки методом “грубой силы”;
  • программная реализация хэш-функции должна быть оптимизирована под использование на современной аппаратно-программной базе.

Этим требованиям должен удовлетворять как сам алгоритм выработки хэш-значения, так и хэширующая функция.

В современных условиях алгоритмическое повышение скорости выработки хэш-значения может быть достигнуто за счет применения простого преобразования, которое переводит одно сообщение в другое посредством элементарной операции, например удаления произвольного блока сообщения. Подобными преобразованиями можно также описать зависимость между двумя практически не отличающимися друг от друга сообщениями. Данный тип сообщения очень часто встречается в банковском деле, например с целью заполнения бланков платежных поручений. Отсюда следует, что для увеличения скорости обработки необходимо, чтобы алгоритм выработки хэш-значения включал в себя также алгоритм вычисления хэш-значения одного сообщения из хэш-значения другого сообщения, которое получается из начального с помощью элементарного преобразования.

5.4. Стойкость хэш-функций.


С точки зрения криптографической стойкости важным свойством хэш-функций является отсутствие коллизий, то есть невозможность найти такие значения х  у, чтобы h(x) = h(y). В криптографических приложениях важным понятием является криптографически стойкая хэш-функция, для которой не существует эффективного алгоритма нахождения значений х  у,где выполнялось бы условие h(x) = h(y) (функция, стойкая в сильном смысле), или не существует эффективного алгоритма нахождения коллизии при заданном х такого у  х, что h(x) = h(y) (функция, стойкая в слабом смысле). Росс Андерсон показал, что отсутствие коллизий не позволяет судить о практической стойкости хэш-функций. Другими словами, данное требование носит формальный характер. Практически значимым является отсутствие у хэш-функции корреляции. Свободной от корреляции называется хэш-функция, у которой не возможно найти пары таких значений х  у, что вес Хэмминга10 двоичного вектора h(x) XOR h(y) будет меньше веса Хэмминга применительно к двоичному вектору h(M) для некоторого малого М. Свобода от корреляции с точки зрения криптографической стойкости является гораздо более сильным свойством хэш-функции, чем свобода от коллизий. Данный факт подтверждается тем, что из любой хэш-функции, являющейся свободной от коллизий и одновременно свободной от корреляций, можно построить другую хэш-функцию, которая тоже будет свободной от коллизии, но при этом может не сохранить свойства свободы от корреляции.