
- •Лекція 8. Хеш-функції й коди автентифікації повідомлень - мас
- •Вимоги до хеш-функцій
- •Прості хеш-функції
- •Використання ланцюжка зашифрованих блоків
- •На сучасному етапі як правило застосовуються хеш-функції md5(rfc 1321) і sha-1 Порівняння sha-1 і md5
- •Алгоритм обробки одного блоку повідомлення
- •Логіка виконання держстандарт 3411
- •Коди автентифікації повідомлень - мас Вимоги до мас
- •Мас на основі алгоритму симетричного шифрування
Лекція 8. Хеш-функції й коди автентифікації повідомлень - мас
Хеш-функції
Вимоги до хеш-функцій
Хеш-функцією називається однобічна функція, призначена для одержання дайджесту або "відбитків пальців" файлу, повідомлення або деякого блоку даних.
Хеш-код створюється функцією Н:
h = H (M)
Де М є повідомленням довільної довжини й h є хеш-кодом фіксованої довжини.
Розглянемо вимоги, яким повинна відповідати хеш-функція для того, щоб вона могла використовуватися в якості автентифікатора повідомлення. Розглянемо дуже простий приклад хеш-функції. Потім проаналізуємо кілька підходів до побудови хеш-функції.
Хеш-функція Н, що використовується для автентифікації повідомлень, повинна мати наступні властивості:
Хеш-функція Н повинна застосовуватися до блоку даних будь-якої довжини.
Хеш-функція Н створює вихід фіксованої довжини.
Н (М) відносно легко (за поліноміальний час) обчислюється для будь-якого значення М.
Для будь-якого даного значення хеш-коду h розрахунково неможливо знайти M таке, що Н (M) = h.
Для будь-якого даного х розрахунково неможливо знайти y
x, що H (y) = H (x).
Розрахунково неможливо знайти довільну пару (х, y) таку, що H (y) = H (x).
Перші три властивості вимагають, щоб хеш-функція створювала хеш-код для будь-якого повідомлення.
Четверта властивість визначає вимогу однобічності хеш-функції: легко створити хеш-код по даному повідомленню, але неможливо відновити повідомлення по даному хеш-коду. Це властивість важлива, якщо автентифікація з використанням хеш-функції включає секретне значення. Саме секретне значення може не посилати, проте, якщо хеш-функція не є однобічною, супротивник може легко розкрити секретне значення в такий спосіб. При перехопленні передачі атакуючий одержує повідомлення М и хеш-код С = Н (SAB || M). Якщо атакуючий може інвертувати хеш-функцію, те, отже, він може одержати SAB || M = H-1 (C). Так як атакуючий тепер знає й М и SAB || M, одержати SAB зовсім просто.
П'ята властивість гарантує, що неможливо знайти інше повідомлення, чиє значення хеш-функції збігалося б зі значенням хеш-функції даного повідомлення. Це запобігає підробці автентифікатора при використанні зашифрованого хеш-кода. У цьому випадку супротивник може читати повідомлення й, отже, створити його хеш-код. Але так як супротивник не володіє секретним ключем, він не має можливості змінити повідомлення так, щоб одержувач цього не виявив . Якщо дана властивість не виконується, що атакує має можливість виконати наступну послідовність дій: перехопити повідомлення і його зашифрований хеш-код, обчислити хеш-код повідомлення, створити альтернативне повідомлення з тим же самим хеш-кодом, замінити вихідне повідомлення на підроблене. Оскільки хеш-коди цих повідомлень збігаються, одержувач не виявить підміни.
Хеш-функція, що задовольняє першим п'яти властивостям, називається простій або слабкою хеш-функцією. Якщо крім того виконується шоста властивість, то така функція називається сильною хеш-функцією. Шоста властивість захищає проти класу атак, відомих як атака "день народження".