У криптографії, код автентифікації повідомлення ланцюгуванням шифроблоків (CBC-MAC) — техніка побудови кода автентифікації повідомлення з блочного шифру. Повідомлення шифроване деяким алгоритмом блочного шифрування в режимі CBC для створення ланцюга блоків таких, що кожен блок залежить від правильного шифрування попередніх блоків. Ця взаємозалежність гарантує. що зміна в будь-якому біті відкритого тексту спричинить зміну в останньому зашифрованому блоці, яку не можна передбачити або запобігти без знання ключа блочного шифру.

Для обчислення CBC-MAC повідомлення користувач шифрує в режимі CBC з нульовим ініціалізаційним вектором. Наступне зображення є нарисом обчислення CBC-MAC повідомлення з блоків секретним ключем і PRP (блочним шифром):

Отримуємо PRF

Безпека з повідомленнями встановленої і змінної довжини Якщо використовний блочний шифр безпечний (тобто є псевдовипадковою переставкою), тоді CBC-MAC безпечний для повідомлень встановленого розміру.M. Bellare, J. Kilian and P. Rogaway. The security of the cipher block chaining message authentication code. JCSS 61(3):362-399, 2000. Однак, не є безпечним для повідомлень змінної довжини. Отже, кожен окремий ключ треба використовувати для повідомлень встановленої і відомої довжини. Нападник, який знає правильну пару повідомлення-тег (тобто CBC-MAC) і може утворити третє повідомлення чий CBC-MAC також буде . Це робиться простим XOR-енням першого блоку з і тоді приєднанням до ; тобто через утворення .

Цю проблему не можна розв'язати через додавання блоку з розміром повідомлення наприкінці. Існує три головних способи зміни CBC-MAC так, щоб убезпечити його для повідомлень змінної довжини: Додавання довжини повідомлення в перший блок (). Це може бути проблематичним якщо довжина повідомлення не відома, коли почалось опрацювання. Використання різних ключів для повідомлень різних довжин (). ECBC-MAC, XCBC-MAC. Також, для захисту цілісності повідомлень змінної довжини, можна розглянути інші режими, наприклад, CMAC (фактично різновид XCBC-MAC) або HMAC.

ECBC-MAC

XCBC-MAC

Переваги Робить найменшу кількість викликів блочного шифру для MAC такого типу Правильно обробляє повідомлення будь-якої довжини Блочний шифр викликається лише з одним ключем: Блочний шифр викликається лише в напрямку шифрування Дозволяє обробку по ходу Легкий у втіленні, знайомий користувачам Вільний XCBC — це PRF (не тільки MAC) – Безпечна PRF завжди є MAC – Не використовується нонс/IV – Тегі коротші – Тегі можна обрізати – Інші застосування • Розділення ключа • PRG • Протоколи квитування (підтвердження) зв'язку Доведеннєво безпечний (припускаючи, що E є PRP)

Вади Обмежені можливості розпаралелювання (притаманно CBC-MAC) Довжина ключа

Порівняння різновидів CBC-MAC Kaoru Kurosawa, Tetsu Iwata. Two-key CBC MAC стор. 3, 2002Fast Software Encryption: 10th International Workshop, FSE 2003, Lund, Sweden, February 24-26, 2003 : Revised Papers, Том 10, стор. 143 Ім'я Домен #E викликів #E ключів Довжина ключа #E викликів до обробки CBC-MAC 0 EMAC 0 RMAC 0 XCBC 0 TMAC 0 XCBC+kst 3 або 4 TMAC+kst 2 або 3 OMAC 1

«#E викликів до обробки» — позначає кількість викликів блочного шифру в попередньому опрацюванні. Ці виклики можна робити без повідомлення. Для XCBC+kst і TMAC+kst за блочний шифр припускаємо AES.

kst — техніка розділення ключів ().

Примітки

Посилання XCBC: Версія CBC MAC для опрацювання повідомлень довільної довжини на сайті NIST.