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