ISO/IEC 9797-1

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до навігації Перейти до пошуку

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. Архів оригіналу за 24 грудня 2016. Процитовано 30 квітня 2018.
  2. FIPS PUB 113 - Computer Data Authentication. National Institute of Standards and Technology. Архів оригіналу за 27 вересня 2011. Процитовано 1 жовтня 2011.
  3. ISO/IEC 9797-1:2011 Information technology – Security techniques – Message Authentication Codes (MACs) – Part 1: Mechanisms using a block cipher [Архівовано 17 червня 2016 у Wayback Machine.], 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 [Архівовано 9 квітня 2016 у Wayback Machine.]  — Superseded by ISO/IEC 9797-1:2011, which (according to the latter's Foreword [Архівовано 17 червня 2016 у Wayback Machine.]) has a different algorithm 6.