Відкрити головне меню

Шаблон:Use British (Oxford) English

ISO/IEC 9797-1 Інформаційна технологія – Методи захисту – Коди аутентифікації повідомлень (MACs) – Частина 1: механізми з використанням блокового шифру[1] є міжнародним стандартом, який визначає методи для обчислення код аутентифікації повідомлення (MAC) над даними.

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

Через те, що стандарт описує модель, а не конкретний алгоритм, користувачі стандарту повинні вказати всі конкретні опції і параметри, що будуть використані, щоб забезпечити однозначне обчислення MAC.

МодельРедагувати

Модель для генерування MAC складається з шести кроків:

  1. Доповнення даних для кратності розміру блоків шифру
  2. Розбиття даних на блоки
  3. Початок трансформації першого блоку даних
  4. Повторення для всіх блоків даних
  5. Вихідне перетворення результату останньої ітерації
  6. Обрізання результату до потрібної довжини

Для більшості кроків стандарт надає декілька параметрів, з яких можна вибрати, та/або дозволяє певну конфігурованість.

ДоповненняРедагувати

Вхідні дані повинні бути доповненні до кратності розміру блоку шифрування, так щоб кожна наступна криптографічна операція мала повний блок даних. Описано три методу доповнення. У кожному випадку n – довжина блоку (у бітах):

Метод доповнення 1Редагувати

За необхідності, додайте до кінця повідомлення біти зі значенням 0, доки дані не будуть кратними до n. (Якщо вихідні дані вже були кратними n, нічого не додається).

Метод доповнення 2Редагувати

Додайте один біт зі значенням 1 у кінець даних. Потім при необхідності додайте біти зі значенням 0 в кінець повідомлення доки його довжина стане кратною n.

Метод доповнення 3Редагувати

Доповненні дані складаються з (у цьому порядку):

  • Довжина не доповнених даних (в бітах) виражена в двійковому коді  зворотнього порядку розміром n біт (тобто один блок шифру)
  • Не доповненні дані
  • Скільки потрібно (можливо ніскільки) бітів зі значенням 0 щоб привести загальну довжину до кратної n бітів

Немає необхідності передавати чи зберігати доповненні біти, тому що одержувач може їх відновити, знаючи довжину не доповнених даних та метод використаного доповнення.

РозбиттяРедагувати

Доповненні дані D розбивають на q блоків D1, D2, ... Dq, кожен довжини n, відповідно до блочного шифру.

Початкова трансформаціяРедагувати

Криптографічна операція виконується на першому блоці (D1), щоб створити проміжний блок H1. Існують дві початкові трансформації:

Початкова трансформація 1Редагувати

D1 зашифровується з ключем K:

H1 = eK(D1)

Початкова трансформація 2Редагувати

D1 зашифровується з ключем K, а потім другим ключем K′′:

H1 = eK′′(eK(D1))

ІтераціяРедагувати

Блоки H2 ... Hq вираховуються шляхом шифрування з ключем K, побітовою виключною диз'юнкцією над відповідним блоком даних на попереднім H block.

for i = 2 to q
Hi = eK(DiHi-1)

Якщо є лише один блок даних (q=1), цей крок буде знехтуваний.

Вихідна трансформаціяРедагувати

Криптографічна операція (необов'язково) виконується на останній ітерації над вихідним блоці Hq для створення блоку G. Існують три вихідні трансформації:

Вихідна трансформація 1Редагувати

Hq залишається незмінним:

G = Hq

Вихідна трансформація 2Редагувати

Hq шифрується з ключем K′:

G = eK(Hq)

Вихідна трансформація 3Редагувати

Hq розшифровується з ключем K′ і результат шифрується з ключем K:

G = eK(dK(Hq))

ЗрізанняРедагувати

MAC одержується шляхом обрізання блоку G (зберігання перших бітів, відкидання останніх) до потрібної довжини.

Спеціальні алгоритмиРедагувати

Загальна модель номінально дозволяє застосовувати будь-яку комбінацію параметрів для кожного з доповнень, початкової трансформації, вихідної трансформації та етапів зрізання. Проте, стандарт визначає чотири докладні комбінації початкової та вихідної трансформацій, а (за необхідності) утворення ключів, та дві інші комбінації на основі дублюючих паралельних обчислень. Комбінації позначаються стандартом від "MAC-алгоритм 1" до "MAC-алгоритм 6".

MAC-алгоритм 1Редагувати

Цей алгоритм використовує початкову трансформацію 1 та вихідну трансформацію 1.

Необхідний лише один ключ, K.

(Якщо розглядати блочний шифр в DES, то це еквівалентно алгоритму, визначеному в FIPS PUB 113 Computer Data Authentication.[2])

Алгоритм 1 зазвичай відомий як CBC-MAC.[3]

MAC-алгоритм 2Редагувати

Цей алгоритм використовує початкову трансформацію 1 та вихідну трансформацію 2.

Необхідні два ключі, K та K′, але K′ має бути отриманий з K.

MAC-алгоритм 3Редагувати

Цей алгоритм використовує початкову трансформацію 1 та вихідну трансформацію 3.

Необхідні два незалежні ключі, K і K′.

Алгоритм 3 також відомий як Retail MAC.[4]

MAC-алгоритм 4Редагувати

Цей алгоритм використовує початкову трансформацію 2 та вихідну трансформацію 2.

Необхідні два незалежних ключа, K і K′, разом з третім ключем K′′ отриманим з K′.

MAC-алгоритм 5Редагувати

MAC-алгоритм 5 містить два паралельних екземпляри MAC-алгоритму 1. Перший екземпляр працює над початковими вхідними даними. Другий екземпляр працює за двома ключовими варіантами, сформованими з початкового ключа шляхом множення в полі Галуа. Фінальний MAC обчислюється шляхом побітової виключної диз'юнкції над MAC, що генеруються кожним екземпляром алгоритму 1.[5]

Алгоритм 5 також відомий як CMAC.[6]

MAC-алгоритм 6Редагувати

Цей алгоритм складається з двох паралельних екземплярів MAC-алгоритму 4. Фінальний MAC є побітною виключною диз'юнкцією над MAC, що  створені кожним екземпляром алгоритму 4.[7]

Кожний екземпляр алгоритму 4 використовує іншу пару ключів (K та K′) але ці чотири ключі отримуються з двох незалежних базових ключів.

Утворення ключаРедагувати

MAC-алгоритми 2 (необов'язково), 4, 5 та 6 вимагає утворення одного або кількох ключів з іншого ключа. Стандарт не передбачає жодного конкретного методу утворення ключа, хоча він загалом визначає, що утворенні ключі відрізняються один від одного.

Стандарт наводить кілька прикладів методів утворення ключів, таких як "доповнення чергових підрядків з чотирьох бітів K, що починаються з перших чотирьох бітів". Це еквівалентно побітовій виключній диз'юнкції кожного байту ключа з F0 (hex).

Повна специфікація розрахунку MACРедагувати

Щоб повністю і однозначно визначити розрахунок MAC, користувач ISO/IEC 9797-1 повинен вибрати та вказати:

  • Алгоритм блочного шифру e
  • Метод доповнення (1 з 3)
  • Конкретний MAC-алгоритм (1 з 6)
  • Довжину MAC
  • Метод(и) утворення ключа за необхідності, для MAC-алгоритмів 2, 4, 5 чи 6

Аналіз безпеки алгоритмівРедагувати

Додаток B до стандарту – це аналіз безпеки алгоритмів MAC. Він описує різні криптографічні атаки на алгоритми – включаючи атаку відновлення ключа, метод «грубої сили» над ключем і атака «днів народження», а також аналізує опір кожного алгоритму до цих атак.

ПосиланняРедагувати

  1. ISO/IEC 9797-1:2011 Information technology – Security techniques – Message Authentication Codes (MACs) – Part 1: Mechanisms using a block cipher
  2. FIPS PUB 113 - Computer Data Authentication. National Institute of Standards and Technology. Архів оригіналу за 2011-09-27. Процитовано 2011-10-01. 
  3. ISO/IEC 9797-1:2011 Information technology – Security techniques – Message Authentication Codes (MACs) – Part 1: Mechanisms using a block cipher, Introduction
  4. ISO/IEC 9797-1 Information technology – Security techniques – Message Authentication Codes (MACs) – Part 1: Mechanisms using a block cipher. International Organization for Standardization. 2011. с. 11. 
  5. ISO/IEC 9797-1 Information technology – Security techniques – Message Authentication Codes (MACs) – Part 1: Mechanisms using a block cipher. International Organization for Standardization. 2011. с. 12. 
  6. ISO/IEC 9797-1 Information technology – Security techniques – Message Authentication Codes (MACs) – Part 1: Mechanisms using a block cipher. International Organization for Standardization. 2011. с. 13. 
  7. ISO/IEC 9797-1:1999 Information technology -- Security techniques -- Message Authentication Codes (MACs) -- Part 1: Mechanisms using a block cipher  — Superseded by ISO/IEC 9797-1:2011, which (according to the latter's Foreword) has a different algorithm 6.