Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Posibnik_1_0.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
7.93 Mб
Скачать

1.1. Цілі розробки нмас

У RFC 2104 представлений наступний список цілей, переслідуваних при розробці алгоритму НМАС.

  • Можливість використовувати без модифікацій вже наявні функції хешування, зокрема функції хешування, для яких є добре працюючі, відкриті і широко доступні реалізації у вигляді програм.

  • Можливість легкої заміни вбудованої функції хешування на більш швидкі або більш захищені функції хешування, якщо такі будуть потрібні або будуть знайдені.

  • Збереження швидкості роботи алгоритму, близькою до швидкості роботи відповідної функції хешування, без значного погіршення показників швидкості.

  • Можливість застосування ключів і простота звернення до них.

  • Простота криптоаналізу стійкості механізму аутентифікації при розумних припущеннях щодо вбудованої функції хешування.

Перші дві цілі є важливими з точки зору прийнятності НМАС. В алгоритмі НМАС функція хешування інтерпретується як "чорний ящик". Це має дві переваги. По-перше, вже існуюча реалізація функції хешування може використовуватися у вигляді модуля в НМАС. Тому при такому підході чимала частина коду НМАС виявляється уже готовою до застосування без яких би то не було модифікацій. По-друге, якщо доведеться коли-небудь заміняти наявну функцію хешування в даній реалізації НМАС, то для цього буде потрібно лише прибрати наявний модуль функції хешування і замінити його новим. Це можна зробити, наприклад, якщо буде знайдена більш швидка функція хешування. Але, що більш важливо, якщо безпека вбудованої функції хешування буде скомпрометована, надійність НМАС може бути відновлена простою заміною вбудованої функції хешування на більш захищену (наприклад, заміною MD5 на RIPEMD-160).

Остання з перерахованих вище цілей проекту фактично забезпечує основну перевагу НМАС в порівнянні з іншими схемами, заснованими на використанні хешування. НМАС забезпечує гарантовану захищеність за умови, що вбудована функція хешування володіє певною криптографічного стійкістю. Ми повернемося до цього питання пізніше, а спочатку розглянемо структуру НМАС.

1.2. Алгоритм нмас

На рис. 13.1 показана загальна схема роботи НМАС. Визначимо елементи схеми.

Н — вбудована функція хешування (наприклад, MD5, SHA-1 або RIPEMD-160),

М — подається на вхід НМАС повідомлення (включаючи біти заповнювача, що вимагаються вбудованою функцією хешування),

Yiiблок M, 0 < i < L - 1,

L — число блоків в М,

b — число бітів в блоці,

n — довжина хеш-коду, породжуваного вбудованою функцією хешування,

К — секретний ключ; якщо довжина ключа більше b, ключ подається на вхід функції хешування, щоб отримати n-бітовий ключ; рекомендується довжина> n,

К+ — ключ К з доданими в початок нулями, щоб у результаті довжина вийшла рівною b біт,

ipad — значення 00110110, повторене b/8 разів,

opad — значення 01011010, повторене b/8 разів.

У цьому випадку алгоритм НМАС можна представити формулою

Детально описати алгоритм можна таким чином.

  1. До значення K зліва додаються нулі, щоб отримати b-бітовий рядок K+ (наприклад, якщо K має довжину 160 бітів і b = 512, то значення K буде доповнено 44 нульовими байтами 0x00).

  2. Значення К+ зв'язується операцією XOR (побітовое виключаюче "АБО") з ipad, в результаті чого виходить b-бітовий блок Si.

  3. До Si приєднується М.

  4. До потоку, отриманого на кроці 3, застосовується функція Н.

  5. Значення К+ зв'язується операцією XOR з opad, в результаті чого виходить b-бітовий блок So.

  6. Результат хешування, отриманий на кроці 4, приєднується до So.

  7. До потоку, отриманого на кроці 6, застосовується функція Н, і результат подається на вихід.

Рис.13.1. Структура HMAC

Зверніть увагу на те, що зв'язування з ipad (крок 3) означає переключення половини бітів К. Точно так само і зв'язування з opad означає переключення половини бітів К, але для іншого набору бітів. Насправді в результаті пропускання Si і So через функцію стиснення алгоритму хешування з К виходить два ключа, згенерованих псевдовипадкових чином.

Для досить довгих повідомлень алгоритм НМАС повинен виконуватися приблизно за той же час, за яке виконується вбудована функція хешування, В НМАС додатково три рази застосовується функція стиснення хешування (для Si, So і блоку, одержуваного при внутрішньому хешування).

Як показано на рис. 13.2, можлива більш ефективна реалізація. У даному випадку заздалегідь обчислюється два значення:

і

де f (cv, блок) позначає функцію стиснення для функції хешування, параметрами якої є n-бітова змінна зчеплення і b-бітовий блок, а на виході виходить n-бітова змінна зчеплення. Ці значення потрібно обчислювати на самому початку і кожного разу, коли змінюється ключ. Заздалегідь обчислювані значення замінюють початкове значення (IV) функції хешування. У цій реалізації має місце тільки одне додаткове застосування функції стиснення в порівнянні із звичайною функцією хешування. Ця більш ефективна реалізація особливо зручна в тих випадках, коли більшість повідомлень, для яких обчислюється значення MAC, виявляються короткими.

Рис. 13.2. Ефективне використання алоритма HMAC

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]