HMAC

HMAC (скорочення від англ. hash-based message authentication code, код автентифікації повідомлень на основі хешування, або від англ. keyed-hash message authentication code, код автентифікації повідомлень на основі хешування з ключем) — механізм перевірки цілісності інформації, що передається або зберігається в ненадійному середовищі. Подібні способи є невід'ємною і необхідною частиною світу відкритих обчислень і комунікацій. HMAC використовує хеш-функцію разом з секретним ключем, що дозволяє створити унікальний код для кожного повідомлення, який можна використовувати для перевірки автентичності повідомлення. Хеш-функція використовується для створення контрольної суми повідомлення, а секретний ключ додає додатковий рівень безпеки, так як лише особа з доступом до секретного ключа зможе створити коректний HMAC. Механізми, які надають такі перевірки цілісності на основі секретного ключа, зазвичай називають кодом автентифікації повідомлення (MAC). Як правило, МАС використовується між двома сторонами, які поділяють секретний ключ для перевірки автентичності інформації, переданої між цими сторонами. Цей стандарт визначає MAC.

Означення

Це означення взято з RFC 2104:

HMAC ( K , m ) = H ( ( K o p a d ) H ( ( K i p a d ) m ) ) K = { H ( K ) K  довший ніж розмір блока K інакше {\displaystyle {\begin{aligned}\operatorname {HMAC} (K,m)&=\operatorname {H} {\Bigl (}{\bigl (}K'\oplus opad{\bigr )}\parallel \operatorname {H} {\bigl (}\left(K'\oplus ipad\right)\parallel m{\bigr )}{\Bigr )}\\K'&={\begin{cases}\operatorname {H} \left(K\right)&K{\text{ довший ніж розмір блока}}\\K&{\text{інакше}}\end{cases}}\end{aligned}}}

де

H {\displaystyle \operatorname {H} } це криптографічна хеш-функція
m {\displaystyle m} це повідомлення до автентифікації
K {\displaystyle K} це секретний ключ
K {\displaystyle K'} це ключ завдовжки з блок отриманий зі секретного ключа, K; або додаванням нулів праворуч до розміру блока, або спочатку хешуванням до розміру меншого чи рівного розміру блока, а потім додаванням нулів справа
{\displaystyle \parallel } позначає конкатенацію
{\displaystyle \oplus } позначає побітову виключну диз'юнкцію (XOR)
o p a d {\displaystyle opad} це зовнішнє доповнення завдовжки з блок, що складається із повторень байта 0x5c
i p a d {\displaystyle ipad} це внутрішнє доповнення завдовжки з блок, що складається із повторень байта 0x36

Доцільність застосування

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

Підвищений інтерес до розробки MAC на основі криптографічних хеш-функцій, наприклад, MD5, SHA-1 або RIPEMD-160 поясняється просто:

  • Криптографічні хеш-функції зазвичай у програмах працюють швидше, ніж при використанні симетричних блокових шифрів, таких як DES.
  • Бібліотечні коди для криптографічної хеш-функції широко доступні.
  • Хеш-функції, такі як MD5, не призначені для використання як MAC і не можуть бути використані безпосередньо для цієї мети, бо вони не спираються на секретний ключ. Було зроблено кілька пропозицій для включення секретного ключа в існуючі хеш-алгоритми. HMAC отримав найбільшу підтримку.

HMAC був обраний як обов'язковий (англ. mandatory to implement) при реалізації MAC для IP-безпеки, і використовується в інших інтернет-протоколах, таких, як Transport Layer Security (TLS, який замінив Secure Sockets Layer) і Secure Electronic Transaction (SET).

Див. також

Джерела

  • FIPS PUB 198-1. The Keyed-Hash Message Authentication Code (HMAC) [Архівовано 2 грудня 2017 у Wayback Machine.]
  • RFC 2104 HMAC: Keyed-Hashing for Message Authentication


Ця стаття є заготовкою. Ви можете допомогти проєкту, доробивши її. Це повідомлення варто замінити точнішим.
  • п
  • о
  • р
Загальні функції
  • MD5 (скомпрометована)
  • SHA-1 (скомпрометована)
  • SHA-2
  • SHA-3
  • BLAKE2
Фіналісти SHA-3
  • BLAKE
  • Grøstl[en]
  • JH[en]
  • Skein
  • Keccak (переможець)
Інші функції
  • BLAKE3(інші мови)
  • CubeHash[en]
  • ECOH[en]
  • FSB[en]
  • Fugue[en]
  • ГОСТ 34.311-95[ru]
  • HAS-160[en]
  • HAVAL
  • Купина
  • LSH[en]
  • Lane[en]
  • MASH-1[en]
  • MASH-2[en]
  • MD2
  • MD4
  • MD6
  • MDC-2[en]
  • N-Hash
  • RIPEMD[en] (128 160 256[ru])
  • RadioGatún[en]
  • SIMD[en]
  • SM3[en]
  • SWIFFT
  • Shabal[en]
  • Snefru[en]
  • Streebog[en]
  • Tiger
  • VSH[en]
  • Whirlpool
Гешування паролів/
розтягування ключів[en]
Формування ключа
  • HKDF[en]
  • KDF1/KDF2
Коди автентифікації
повідомлення
  • CBC-MAC
  • DAA[en]
  • GMAC
  • HMAC
  • NMAC[en]
  • OMAC[en]/CMAC[en]
  • PMAC[en]
  • Poly1305[en]
  • SipHash[en]
  • UMAC[en]
  • VMAC[en]
Режими аутентифікованого
шифрування
  • CCM[en]
  • ChaCha20-Poly1305[en]
  • CWC[en]
  • EAX[en]
  • GCM
  • IAPM[en]
  • OCB[en]
Контрольні сумми та
некриптографічні[en]
функції
Атаки (огляд[en])
Конструкції
Стандартизація
  • CAESAR Competition[en]
  • CRYPTREC
  • NESSIE
  • NIST SHA-3
  • Password Hashing Competition[en]
Використання