Стандарты Хеш-функций. Основные определения и требования безопасности к функциям хеширования, страница 9

3. Уведення розходжень між паралельними лініями алгоритму, а саме використання різного порядку подачі слів вихідного повідомлення і зворотне застосування нелінійних бульових функцій.

4. Використання перестановок спеціального вигляду. Перестановка  побудована таким чином, що якщо два слова вихідного повідомлення є "близькими" на першому-другому циклах, то вони будуть розрізнятися на другому-третьому циклах хеш-функції і навпаки. Перестановка  побудована таким чином, що якщо два слова будуть близькі у своїй лівій частині, то в правій частині вони будуть відрізнятися принаймні в сімох позиціях.

5. Зсуви в хеш-функціях обрані у відповідності з такими правилами:

– значення зсуву повинно лежати в межах від 5 до 15;

– кожен блок повідомлення повинний зсуватися на різну кількість позицій на всіх циклах хешування;

– зсуви, застосовувані на кожному регістрі не повинні мати спеціальних шаблонів, наприклад, їхня сума не повинна ділитися на 32;

– не занадто багато значень зсуву повинні ділитися на чотири.

Нижче наводяться тестові значення хеш-кодів для розглянутих хеш-функцій

Вхідний рядок

Хеш-код

RIPEMD-160

""

9c1185a5c5e9fc54612808977ee8f548b2258d31х

"a"

0bdc9d2d256b3ee9daae347be6f4dc835a467ffeх

"abc"

8eb208f7e05d987a9b044a8e98c6b087f15a0bfcх

"abcdefghijklmnopqrstuvwxyz"

f71c27109c692c1b56bbdceb5b9d2865b3708dbcх

RIPEMD-128

""

cdf26213a150dc3ecb610f18f6b38b46х

"a"

86be7afa339d0fc7cfc785e72f578d33х

"abc"

c14a12199c66e4ba84636b0f69144c77х

"abcdefghijklmnopqrstuvwxyz"

fd2aa607f71dc8f510714922b371834eх

Деякі додатки, у яких використовують хеш-функції, можуть вимагати виробітки більш довгих хеш-кодів. Прямим шляхом розв’язання даної задачі є паралельне виконання однієї і тієї ж хеш-функції з різними векторами ініціалізації. Однак у цьому випадку можлива поява залежностей між двома результатами хешування, що і було виявлено при використанні MD4. Хеш-функції RIPEMD-128 і RIPEMD-160 уже мають паралельні лінії і для одержання хеш-кодів довжиною, відповідно, 256 і 320 біт досить виключити кінцеву комбінацію результатів хешування по кожній лінії.

На закінчення наведемо порівняльні характеристики за швидкістю реалізації алгоритмів хешування (таб. 2.1). Алгоритми були реалізовані на мовах асемблер і С для процесора Pentium 90 Мгц. Хешуванню підлягали дані обсягом 256 Мбайт.

Таблиця 2.1

Алгоритм

Довжина хеш-кода (біт)

Цикли ´ кроки

на кожнім циклі

Швидкість Мбит/с

Асемблер

С

MD4

128

3´16

165,7

81,4

MD5

128

4´16

113,5

59,7

RIPEMD

128

3´16 (двічі)

82,1

44,0

RIPEMD-128

128

4´16 (двічі)

63,8

35,6

SHA-1

160

4´20

46,5

21,2

RIPEMD-160

160

5´16 (двічі)

39,8

19,3

У порівнянні з 128-розрядними хеш-функціями, 160-розрядний хеш-код, вироблюваний SHA-1, забезпечує більшу стійкість до силових атак. Хеш-функції SHA-1 і RIPEMD-160 за стійкістю приблизно рівні й обидві перевершують MD5. Розширення блоку вхідного повідомлення введено з метою забезпечення більшої відмінності між вхідними блоками. Надмірність, що вводиться, сприяє підвищенню стійкості хеш-функції.

3.4 Анализ перспективных функции хеширования.

Функции хеширования стойкие к коллизиям, как это было отмечено в проекте NESSIE, являются алгоритмами Whirlpool, SHA-256, SHA-384 и SHA-512.

Алгоритм Whirlpool впервые был представлен проекту NESSIE и отобран для изучения во вторую стадию проекта. Алгоритмы SHA-1 и SHA-2 также были отобраны для изучения во вторую стадию NESSIE, кроме того, они являются стандартами NIST [393], и рассматривались ISO [2].