Код аутентифікації повідомлення
Розглянемо забезпечення цілісності повідомлень з використанням загального секрету. Нагадаємо, що забезпечення цілісності повідомлення - це неможливість зміни повідомлення так, щоб одержувач цього не виявив. Під аутентифікацією розуміється підтвердження того, що ін-формація отримана від законного джерела, і одержувачем є той, хто треба. Один із способів забезпечення цілісності - це обчислення МАС (Message Authentication Code). В даному випадку під МАС розуміється деякий аутентифікатор, що є певним способом обчислюва-ленним блоком даних, за допомогою якого можна перевірити цілісність повідомлення. В деякій мірі симетричне шифрування всього повідомлення може виконувати функцію аутентифікації цього повідомлення. Але в такому випадку повідомлення повинно містити достатню надмірність, яка дозволяла б перевірити, що повідомлення не було змінено. Надмірність може бути у вигляді певним чином відформатованого повідомлення, тексту на конкретній мові і т.п. Якщо повідомлення допус-кає довільну послідовність бітів (наприклад, зашифрований ключ сесії), то симетричне шифрування всього повідомлення не може забезпечувати його цілісність, так як при розшифрування в будь-якому випадку вийде послідовність бітів, правильність якої перевірити не можна. Тому набагато частіше використовується крітографіческі створений невеликий блок даних фіксованого розміру, так званий аутентифікатор або имитовставка, за допомогою якого перевіряється цілісність-ність повідомлення. Цей блок даних може створюватися за допомогою секретного ключа, який поділяють відправник і одержувач. МАС обчислюють-ється в той момент, коли відомо, що повідомлення коректно. Після цього МАС приєднується до повідомлення і передається разом з ним одержувачу. Одержувач обчислює МАС, використовуючи той же самий секретний ключ, і порівнює обчислене значення з отриманим. Якщо ці значення Совпа-дають, то з великою часткою ймовірності можна вважати, що при пересиланні зміни повідомлення не відбулося.
Розглянемо властивості, якими повинна володіти функція МАС. Якщо довжина ключа, використовуваного при обчисленні МАС. дорівнює k. то за умови сильної функції МАС супротивникові потрібно виконати 2 k спроб для перебору всіх ключів. Якщо довжина значення, створюваного МАС. дорівнює n. то всього існує 2 n різних значень МАС.
Припустимо, що конфіденційності повідомлення немає, тобто опонент має доступ до відкритого повідомленням і відповідного йому значення МАС. Визначимо зусилля, необхідні опонентові для знаходження ключа МАС.
Припустимо, що k> n. тобто довжина ключа більше довжини МАС. Тоді, знаючи М1 і МаС1 = СK (M1). опонент може обчислити МаС1 = СKi (M1) для всіх можливих ключів Ki. При цьому, по крайней мере, для одного з ключів буде отримано збіг MACi = MAC1. Опонент вирахує 2 k значень МАС. тоді як при довжині МАС n бітів існує всього 2 n значень МАС. Ми припустили, що k> n. тобто 2 k> 2 n. Таким чином, правильне значення МАС буде отримано для кількох значень ключів. В середньому збіг матиме місце для 2 k / 2 n = 2 (k-n) ключів. По-цьому для обчислення єдиного ключа опоненту потрібно знати кілька пар повідомлення і відповідний йому МАС.
Таким чином, простий перебір всіх ключів вимагає не менше, а більше зусиль, ніж пошук ключа симетричного шифрування тієї ж довжини.
Функція обчислення МАС повинна мати наступні властивості:
- Повинно бути обчислювально важко, знаючи М і СK (M). знайти повідомлення М '. таке, що СK (M) = СK (M ').
- Значення СK (M) повинні бути рівномірно розподіленими в тому сенсі, що для будь-яких повідомлень М і M 'ймовірність того, що СK (M) = СK (M'). повинна бути дорівнює 2 -n. де n - довжина значення МАС.
стандарт НМАС
Використання хеш-функції для отримання МАС полягає в тому, щоб певним чином додати секретне значення до повідомлення, яке подається на вхід хеш-функції. Такий алгоритм носить назву НМАС. і він описаний в RFC 2104.
При розробці алгоритму НМАС переслідувалися наступні цілі:
1. Можливість використовувати без модифікацій вже наявні хеш-функції;
2. можливість легкої заміни вбудованих хеш-функцій на більш швидкі або більш стійкі.
3. Збереження швидкості роботи алгоритму, близькою до швидкості роботи відповідної хеш-функції.
4. Можливість застосування ключів і простота роботи з ними.
В алгоритмі НМАС хеш-функція являє собою "чорний ящик". Це, по-перше, дозволяє використовувати існуючі реалізації хеш-функцій, а по-друге, забезпечує легку заміну існуючої хеш-функції на нову.
Введемо наступні позначення:
Н - вбудована хеш-функція.