Крипточуваки - 11
Оракул виявлення ECB/CBC
Тепер коли у вас є працюючі ECB та CBC:
Написати функцію для генерування випадкового AES ключа; це усього навсього 16 випадкових байтів.
Напишить функцію яка шифрує дані під невідомим ключем — це усе, функцію яка генерує випадковий ключ і шифрує із ним.
Функцію повинна виглядати приблизно так:
encryption_oracle(your-input)
=> [MEANINGLESS JIBBER JABBER]
Під капотом, нехай функція додає 5-10 байтів (кількість вибирається випадково) перед незашифровним текстом та 5-10 байт після незашифровного тексту.
Тепер, нехай функція вибирає зашифрувати із допомогою ECB у 1/2 випадків, та за допомогою CBC у іншій половині випадків (лише використовуйте випадкові IV кожного разу для CBC). Використовуйте rand(2) для вирішення який варіант використовувати.
Виявити режим блокового шифру який використовувала функція кожного разу. Ви повинні зробити кусок коду який, якщо вказати на коробку блока який можливо був зашифрован із ECB або CBC, сказав вам який саме було використано.