Операция DES шифрует 64-битные (8 байт) данных с использованием 56-битного ключа.Вот и все.
Большинство файлов имеют длину более 8 байт, поэтому нам нужно разбить файл на блоки и как-то обработать каждый.Наивно мы могли бы сделать это, просто зашифровав каждый блок одним и тем же ключом, в отрыве от остальных (так называемая «электронная кодовая книга» или режим ECB).
Однако многиеформаты файлов содержат общие последовательности байтов (для выбора знакомого примера - документы HTML часто содержат много ссылок, начинающихся с <a href=
).В режиме ECB каждое вхождение этих последовательностей шифровалось бы в тот же самый зашифрованный текст, давая злоумышленнику подсказки о структуре открытого текста.Кроме того, исходный текст часто можно угадать из контекста (весьма вероятно, что запрос HTTPS содержит, например, некоторый HTML-код), поэтому злоумышленник может создать новые сообщения, не зная исходного ключа, - и обманутьполучатель принимает эти сообщения как подлинные.
Есть несколько способов исправить это;один из них представляет собой «цепочку блоков шифрования» (режим CBC), где зашифрованный текст из каждого блока «смешивается» с последующим блоком, маскируя эти повторяющиеся последовательности.Кроме того, используется сильный вектор инициализации (IV) - это случайное значение, используемое для «инициации» шифрования, гарантируя, что даже если один и тот же файл будет дважды зашифрован одним и тем же ключом, шифротексты будут отличаться - оставляя атакующему меньше подсказоко содержании.