Cipher Block Chaining CBC-MAC
CBC
Якщо cookie - це тільки ім'я користувача (або перша частина cookie - це ім'я користувача) і ви хочете видачу себе за користувача "адміністратор". Тоді ви можете створити ім'я користувача "bdmin" і провести брутфорс першого байта cookie.
CBC-MAC
Шифрувальний код аутентифікації повідомлень з ланцюжком блоків (CBC-MAC) - це метод, що використовується в криптографії. Він працює шляхом шифрування повідомлення блок за блоком, де шифрування кожного блоку пов'язане з попереднім. Цей процес створює ланцюжок блоків, який гарантує, що зміна навіть одного біта в оригінальному повідомленні призведе до непередбачуваної зміни в останньому блоку зашифрованих даних. Для внесення або скасування такої зміни потрібний ключ шифрування, що забезпечує безпеку.
Вразливість
Зазвичай з CBC-MAC використовується IV рівний 0.
Це проблема, оскільки 2 відомі повідомлення (m1
та m2
) незалежно генеруватимуть 2 підписи (s1
та s2
). Отже:
E(m1 XOR 0) = s1
E(m2 XOR 0) = s2
Тоді повідомлення, що складається з m1 та m2, об'єднані (m3), згенерують 2 підписи (s31 та s32):
E(m1 XOR 0) = s31 = s1
E(m2 XOR s1) = s32
Це можливо обчислити без знання ключа шифрування.
Уявіть, що ви шифруєте ім'я Адміністратор у блоках по 8 байт:
Administ
rator\00\00\00
Ви можете створити ім'я користувача Administ (m1) та отримати підпис (s1).
Потім ви можете створити ім'я користувача, яке є результатом rator\00\00\00 XOR s1
. Це згенерує E(m2 XOR s1 XOR 0)
, яке є s32.
тепер ви можете використовувати s32 як підпис повного імені Адміністратор.
Резюме
Отримайте підпис імені користувача Administ (m1), який є s1
Отримайте підпис імені користувача rator\x00\x00\x00 XOR s1 XOR 0, який є s32**.**
Встановіть cookie на s32 і він буде дійсним cookie для користувача Адміністратор.
Керування атакою IV
Якщо ви можете контролювати використаний IV, атака може бути дуже простою. Якщо cookie - це просто зашифроване ім'я користувача, для видачі себе за користувача "адміністратор" ви можете створити користувача "Адміністратор" і отримаєте його cookie. Тепер, якщо ви можете контролювати IV, ви можете змінити перший байт IV так, що IV[0] XOR "A" == IV'[0] XOR "a" і згенерувати cookie для користувача Адміністратор. Цей cookie буде дійсним для видачі себе за користувача адміністратор з початковим IV.
Посилання
Додаткова інформація за посиланням https://en.wikipedia.org/wiki/CBC-MAC
Last updated