
- •Лекція 8. Хеш-функції й коди автентифікації повідомлень - мас
- •Вимоги до хеш-функцій
- •Прості хеш-функції
- •Використання ланцюжка зашифрованих блоків
- •На сучасному етапі як правило застосовуються хеш-функції md5(rfc 1321) і sha-1 Порівняння sha-1 і md5
- •Алгоритм обробки одного блоку повідомлення
- •Логіка виконання держстандарт 3411
- •Коди автентифікації повідомлень - мас Вимоги до мас
- •Мас на основі алгоритму симетричного шифрування
Використання ланцюжка зашифрованих блоків
Існують різні хеш-функції, засновані на створенні ланцюжку зашифрованих блоків, але без використання секретного ключа. Одна з таких хеш-функцій була запропонована Рабином. Повідомлення М розбивається на блоки фіксованої довжини М1, М2, . . . , МN і використовується алгоритм симетричного шифрування, наприклад DES, для обчислення хеш-коду G у такий спосіб:
Н0 = початкове значення
Нi = EMi [ Hi-1]
G = HN
Це аналогічно використанню шифрування в режимі СВС, але в цьому випадку секретного ключа немає. Як і у випадку будь-який простої хеш-функції, цей алгоритм піддається "атаці дня народження", і якщо алгоритмом, що шифрує, є DES і створюється тільки 64-бітний хеш-код, то система вважається досить уразливою.
Можуть здійснюватися інші атаки типу "дня народження", які можливі навіть у тому випадку, якщо супротивник має доступ тільки до одного повідомлення й відповідний йому зашифрованому хеш-коду й не може одержати трохи пару повідомлень і зашифрованих хеш-кодів. Можливий наступний сценарій: припустимо, що супротивник перехопив повідомлення з автентифікатором у вигляді зашифрованого хеш-коду, і відомо, що незашифрований хеш-код має довжину m біт. Далі супротивник повинен виконати наступні дії:
Використовуючи описаний вище алгоритм, обчислити незашифрований хеш-код G.
Створити підроблене повідомлення у вигляді Q1, Q2, . . . , QN-2.
Обчислити Нi = EQi[ Hi-1] для 1 i N- 2.
Створити 2m/2 випадкових блоки Х и для кожного такого блоку Х обчислити ЕХ[ HN-2]. Створити додатково 2m/2 cлучайных блоки Y і для кожного блоку Y обчислити DY[G], де D - функція, що дешифрує, відповідна Е. Ґрунтуючись на "парадоксі дня народження" можна сказати, що з високим ступенем імовірності ця послідовність буде містити блоки Х и Y такі, що ЕХ[HN-2] = DY[Y].
Створити повідомлення Q1, Q2, . . . , QN-2, X, Y. Це повідомлення має хеш-код G і, отже, може бути використане разом із зашифрованим автентифікатором.
Ця форма атаки відома як атака "зустріч посередині". У різних дослідженнях пропонуються більш тонкі методи для посилення підходу, заснованого на ланцюжку блоків.
Однак обидві ці схеми також мають уразливості при різних атаках. У більше загальному випадку, можна показати, що деяка форма "атаки дня народження" має успіх при будь-якому хеш-алгоритмі, що включає використання ланцюжка шифрованих блоків без застосування секретного ключа.
Подальші дослідження були спрямовані на пошук інших підходів до створення функцій хеширования.
На сучасному етапі як правило застосовуються хеш-функції md5(rfc 1321) і sha-1 Порівняння sha-1 і md5
Обидва алгоритми, SHA-1 і MD5, відбулися від MD4, тому мають багато загального.
Можна підсумувати ключові розходження між алгоритмами.
|
MD5 |
SHA−1 |
Довжина дайджесту |
128 біт |
160 біт |
Розмір блоку обробки |
512 біт |
512 біт |
Число ітерацій |
64 (4 цикли по 16 ітерацій у кожному) |
80 |
Число елементарних логічних функцій |
4 |
3 |
Число додаткових констант |
64 |
4 |
Зрівняємо обидва алгоритми відповідно до тих цілей, які були визначені для алгоритму MD4:
Безпека: найбільш очевидне й найбільш важливе розходження полягає в тому, що дайджест SHA-1 на 32 біта довший, ніж дайджест MD5. Якщо припустити, що обидва алгоритми не містять яких-небудь структурованих даних, які уразливі для криптоаналітичних атак, то SHA-1 є більше стійким алгоритмом. Використовуючи лобову атаку, сутужніше створити довільне повідомлення, що має даний дайджест, якщо потрібно порядку 2160 операцій, як у випадку алгоритму SHA-1, ніж порядку 2128 операцій, як у випадку алгоритму MD5. Використовуючи лобову атаку, складніше створити два повідомлення, що мають однаковий дайджест, якщо потрібно порядку 280 як у випадку алгоритму SHA-1, чим порядку 264 операцій як у випадку алгоритму MD5.
Швидкість: так як обидва алгоритми виконують додавання по модулі 232, вони розраховані на 32-бітну архітектуру.SHA-1 містить більше кроків (80 замість 64) і виконується на 160-бітному буфері в порівнянні з 128-бітним буфером MD5. Таким чином, SHA-1 повинен виконуватися приблизно на 25% повільніше, ніж MD5 на тій же апаратурі.
Простота й компактність: обидва алгоритми прості й в описі, і в реалізації, не вимагають більших програм або підстановочних таблиць. Проте, SHA-1 застосовує однокрокову структуру в порівнянні із чотирма структурами, використовуваними в MD5. Більше того, обробка слів у буфері однакова для всіх кроків SHA-1, у той час як в MD5 структура слів специфічна для кожного кроку.
Архітектури little-endian і big-endian: MD5 використовує little-endian схему для інтерпретації повідомлення як послідовності 32-бітних слів, у той час як SHA-1 задіє схему big-endian. Яких-небудь переваг у цих підходах не існує.
Хеш-функції SHA-2
В 2001 році NIST прийняв як стандарт три хеш-функції з істотно більшою довжиною хеш-кода.
Алгоритм |
Довжина повідомлення (у бітах) |
Довжина блоку (у бітах) |
Довжина слова (у бітах) |
Довжина дайджесту повідомлення (у бітах) |
Безпека (у бітах) |
SHA-1 |
<264 |
512 |
32 |
160 |
80 |
SHA-256 |
<264 |
512 |
32 |
256 |
128 |
SHA-384 |
<2128 |
1024 |
64 |
384 |
192 |
SHA-512 |
<2128 |
1024 |
64 |
512 |
256 |
Часто ці хеш-функції називають SHA-2 або SHA-256, SHA-384 і SHA-512 (відповідно, у назві вказується довжина створюваного ними хеш-коду). Ці алгоритми відрізняються не тільки довжиною створюваного хеш-коду, але й довжиною оброблюваного блоку, довжиною слова й використовуваних внутрішніх функцій. Зрівняємо характеристики цих хеш-функций.
Під безпекою тут розуміється стійкість до атак типу "парадокса дня народження".
Хеш-функція ДЕРЖСТАНДАРТ 3411
Алгоритм ДЕРЖСТАНДАРТ 3411 є вітчизняним стандартом для хеш-функций. Його структура досить сильно відрізняється від структури алгоритмів SHA-1,2 або MD5, в основі яких лежить алгоритм MD4.
Довжина хеш-коду, створюваного алгоритмом ДЕРЖСТАНДАРТ 3411, дорівнює 256 бітам. Алгоритм розбиває повідомлення на блоки, довжина яких також дорівнює 256 бітам. Крім того, параметром алгоритму є стартовий вектор хешування Н - довільне фіксоване значення довжиною також 256 біт.