Для наиболее полного удовлетворения всем требованиям, предъявляемым к коммерческим системам шифрования, реализованы несколько режимов работы алгоритма DES. Наиболее широкое распространение получили режимы:
· электронный шифроблокнот (Electronic Codebook) – ECB;
· цепочка цифровых блоков (Cipher Block Chaining) – CBC;
· цифровая обратная связь (Cipher Feedback) – CFB;
· внешняя обратная связь (Output Feedback) – OFB.
DES-ECB
В этом режиме исходный файл M разбивается на 64-битовые блоки (по 8 байтов): M = M(1) M(2)… M(n). Каждый из этих блоков кодируется независимо с использованием одного и того же ключа шифрования (рис. 5). Основное достоинство этого алгоритма – простота реализации. Недостаток – относительно слабая устойчивость против квалифицированных криптоаналитиков.
Рис. 5. Работа алгоритма DES в режиме ECB
В частности, не рекомендуется использовать данный режим работы для шифрования EXE файлов, потому что первый же блок – заголовок файла, является вполне удачным началом для взлома всего шифра.
В то же время следует признать, что этот режим в силу своей простой реализации наиболее популярен среди любительских разработок.
DES-CBC
В этом режиме исходный файл M также, как и в режиме ECB, разбивается на 64-битовые блоки: M = M(1) M(2)… M(n). Первый блок M(1) складывается по модулю 2 с 64-битовым начальным вектором IV, который меняется ежедневно и держится в секрете. Полученная сумма затем шифруется с использованием ключа DES, известного и отправителю, и получателю информации. Полученный 64-битовый блок шифртекста C(1) складывается по модулю 2 со вторым блоком исходного текста, результат шифруется и получается второй 64-битовый блок шифртекста C(2) и т.д. Процедура повторяется до тех пор, пока не будут обработаны все блоки исходного текста (рис. 6).
Рис. 6. Работа алгоритма в режиме CBC
Таким образом для всех i = 1…n блок шифртекста C(i) определяется следующим образом:
C(i) = DES (M(i) xor C (i-1)),
C(0) = IV – начальное значение шифра, равное начальному вектору.
Расшифровка выполняется следующим образом:
M(i) = C (i-1) xor DES-1 (C(i)),
C(0) = IV – начальное значение шифра, равное начальному вектору.
Прелесть данного режима состоит в том, что он не позволяет накапливаться ошибкам при передаче. Блок M(i) является функцией только C (i-1) и C(i). Поэтому ошибка при передаче приведет к потере только двух блоков исходного текста.
DES-CFB
В этом режиме размер блока может отличаться от 64. Исходный файл M считывается последовательными t-битовыми блоками (t <= 64): M = M(1) M(2)… M(n) (остаток дописывается нулями или пробелами).
Для всех i = 1…n блок шифртекста C(i) определяется следующим образом:
C(i) = M(i) xor P (i-1),
где P (i-1) – старшие t битов операции DES (С(i-1)), причем C(0)=IV.
Обновление сдвигового регистра осуществляется путем удаления его старших t битов и дописывания справа C(i).
Восстановление зашифрованных данных также не представляет труда: P (i-1) и C(i) вычисляются аналогичным образом и
M(i) = C(i) xor P (i-1).
Рис. 7. Работа алгоритма DES в режиме CFB
DES-OFB
Режим OFB очень похож на режим CFB.
Отличие от режима CFB состоит только в методе обновления сдвигового регистра. В данном случае это осуществляется путем удаления его старших t битов и дописывания справа P (i-1) (рис. 8).
Рис. 8. Работа алгоритма DES в режиме OFB
Каждому из рассмотренных режимов свойственны свои достоинства и недостатки, что обусловливает области их применения.