6.2. Современные функции хэширования
107
Осталось определить лишь то, какой объем работы придется выполнить
злоумышленнику. В отличие от блочного шифра, у
функции хэширования нет
ключа. Кроме того, для функции хэширования не существует универсальной
атаки наподобие перебора всех вариантов ключа. Основное внимание здесь
следует уделить размеру выходных данных. Одной из универсальных атак
на функцию хэширования является атака, в основе которой лежит парадокс
задачи о днях рождения. Как известно, такая атака направлена на обнару-
жение коллизий. Для
функции хэширования с
n
-битовыми выходными дан-
ными возникновения коллизии следует ожидать примерно через
2
n/
2
шагов.
Между тем коллизии актуальны только для определенных областей примене-
ния
функций хэширования. В других случаях целью злоумышленника может
стать поиск прообраза (для заданного
x
найти такое
m
, что
h
(
m
) =
x
)
ли-
бо выявление некоторых структурных закономерностей в выходных данных
функции хэширования. Универсальная атака на прообраз требует выполне-
ния около
2
n
шагов. Мы не собираемся подробно рассматривать то, какие ата-
ки являются актуальными для конкретной области применения
функции хэ-
ширования и сколько времени может потратить различитель на осуществле-
ние конкретного типа атаки. Чтобы различитель имел практический смысл,
он должен быть более эффективным, чем универсальная атака, направленная
на достижение аналогичных результатов. К сожалению, это не точное опре-
деление, но мы не знаем, как сформулировать его точнее. Если кто-нибудь
заявит об изобретении нового типа атаки, просто спросите себя, нельзя ли
получить такой же или лучший результат с помощью универсальной атаки,
не учитывающей специфику функции хэширования. Положительный ответ
на этот вопрос будет означать, что новый различитель совершенно бесполе-
зен. Если же ответ отрицателен, значит, новый различитель действительно
имеет право на существование.
Как и при рассмотрении блочных шифров, мы допускаем наличие сни-
женного уровня безопасности, если это указано явно. Мы можем представить
себе 512-битовую функцию хэширования, которая обеспечивает уровень без-
опасности 128 бит. В этом случае различитель должен добиться успеха не
более чем за
2
128
шагов.
6.2
Современные функции хэширования
Рассмотрим первую практическую проблему. На свете слишком мало хо-
роших функций хэширования. На данный момент наш выбор ограничен лишь
семейством функций SHA да еще, пожалуй, функцией MD5. Существуют
и другие опубликованные предложения, но ни одно из них не привлекло вни-
мания критиков настолько, чтобы ему можно было доверять. Вообще говоря,