Відновіть ключ із CBC за допомогою IV=Key

Візьміть свій код із вправи CBC і змініть його так, щоб він використовував ключ для шифрування CBC як IV.

Програми іноді використовують ключ як IV за умов того, що і відправник, і одержувач повинні вже знати ключ і можуть заощадити місце, використовуючи його як ключ, так і як IV.

Використання ключа як IV небезпечно; зловмисник, який може змінити зашифрований текст на льоту, може змусити одержувача розшифрувати значення, яке розкриє ключ.

Код CBC із вправи 16 шифрує рядок URL-адреси. Перевірте кожен байт відкритого тексту на відповідність ASCII (тобто шукайте значення верхньої частини ASCII). Невідповідні повідомлення мають викликати виняток або повертати помилку, яка містить розшифрований відкритий текст (це постійно трапляється в реальних системах, наскількі мені відомо).

Використовуйте свій код, щоб зашифрувати повідомлення довжиною щонайменше 3 блоки:

AES-CBC(P_1, P_2, P_3) -> C_1, C_2, C_3

Змініть повідомлення (тепер ви зловмисник):

C_1, C_2, C_3 -> C_1, 0, C_1

Розшифруйте повідомлення (тепер ви одержувач) і викликайте відповідну помилку, якщо знайдено символ із верхньої частини ASCII.

Як зловмисник, відновлюючи відкритий текст після помилки, витягніть ключ:

P'_1 XOR P'_3