В режиме Electronic Code Book (ЕСВ) или "Электронная кодовая книга" шифруемый файл разбивают на 64-битовые отрезки (блоки) по 8 байтов. Каждый из этих блоков шифруют независимо с использованием одного и того же ключа шифрования.
Режим пригоден для шифрования при прямом доступе к фрагментам шифруемой информации. В случае ошибки при передаче происходит восстановление, т. е. ошибка влияет только на один блок и не распространяется далее.
Основное достоинство - простота реализации. Криптостойкость режима ЕСВ не ниже криптостойкости используемого блочного алгоритма. Основной недостаток режима в том, что одинаковые блоки шифруются одинаково, что дает материал для статистических атак. Кроме того, открытый текст может быть легко изменен путем удаления, реплицирования и перестановки блоков шифртекста.
Применение режима рекомендуется только для шифрования короткой и случайной информации, например ключей.
3.2. Режим СВС — "Сцепление блоков шифра"
В режиме Ciрher Block Chaining (СВС) или "Сцепление блоков шифра" исходный файл также разбивается на 64-битовые блоки, но обрабатываются они иначе. Первый блок открытого текста m 1 складывается по модулю два с 64-битовым секретным начальным вектором c 0 , называемым вектором инициализации. Полученная сумма шифруется по схеме DES. Полученный 64-битовый блок шифртекста c 1 складывается по модулю два со вторым блоком открытого текста, результат шифруется и получается второй 64-битовый блок шифртекста c 2 и так до конца файла. Таким образом, результат шифрования ci определяется следующим образом:
|
|
ci =DES(mi Å ci -1), " i = 1,..., n,
где n - число блоков исходного файла, а c 0 - начальное значение шифра, равное вектору инициализации. Очевидно, что последний 64-битовый блок шифртекста является функцией секретного ключа, начального вектора и каждого бита открытого текста независимо от его длины. Этот блок шифртекста называют кодом аутентификации сообщения (КАС).
Код КАС может быть легко проверен получателем, владеющим секретным ключом и начальным вектором, путем повторения процедуры, выполненной отправителем. Посторонний, однако, не может осуществить генерацию КАС, который воспринялся бы получателем как подлинный, чтобы добавить его к ложному сообщению либо отделить КАС от истинного сообщения для использования его с измененным или ложным сообщением.
Расшифрование осуществляется путем побитового сложения предыдущего блока шифртекста с расшифрованным блоком текущего текста:
mi = ci -1ÅDES-1(ci)
Применение режима СВС позволяет устранить недостаток режима ЕСВ: каждый блок открытого текста «маскируется» блоком шифртекста, полученным на предыдущем этапе. Таким образом, возможность изменения открытого текста весьма ограничена почти все манипуляции с блоками шифртекста будут обнаружены.
|
|
Достоинство данного режима в том, что он не позволяет накапливаться ошибкам при передаче. Блок mi является функцией только сi и сi -1 Если при передаче будет искажен один из блоков шифрограммы сi, то при расшифровке блок mi окажется полностью искаженным, а в блоке mi +1 будут искажены только биты, изменившиеся в блоке ci. Режим обеспечивает восстановление после ошибок при передаче, но только после таких, которые приводят к изменению отдельных битов, а не к выпадению битов и добавлению новых.
Скорость обработки в данном режиме равна производительности используемого блочного алгоритма, задержка при выполнении операции Å пренебрежимо мала.
В этом режиме последний блок может оказаться короче 64 битов. В таком случае применяется один из следующих способов (здесь j – размер последнего блока mn, операции >> и << означают, как и в языке программирования С, арифметические сдвиги вправо и влево на заданное число разрядов):
1. неполный блок mn открытого текста дополняется фиксированным дополнением p 64- j до 64 битов, например пробелами
cn =DES (((mn <<(64- j))+ p 64-j)Å cn -1).
2. неполный блок mn открытого текста складывается побитно со старшими j разрядами DES преобразования предыдущего блока шифртекста
cn = mn Å (DES(cn -1)>>(64- j)).
В последнем случае сохраняется длина сообщения.
3.3. Режим CFB — "Обратная связь по шифру
В режиме Ciрher Feed Back (CFB) или "Обратная связь по шифру" размер блока может отличаться от 64 бит. Размер блока исходного текста может быть любым, не превосходящим размера блока шифрования 64. Это позволяет зашифровать и отправить любое количество битов, не дожидаясь конца блока.
Файл, подлежащий шифрованию (расшифрованию), считывается последовательными блоками длиной k битов (k =1,..., 64). Пусть в результате разбиения на блоки мы получили n блоков по k битов каждый (остаток дописывается нулями или пробелами). Тогда блоки шифртекста получаются в виде:
ci = mi Å pi -1, " i =1,..., n,
где pi -1 обозначает k старших битов предыдущего зашифрованного блока.
Входной блок DES шифрования (64-битовый регистр сдвига) вначале содержит вектор инициализации, выровненный по правому краю. Обновление сдвигового регистра осуществляется путем удаления его старших k битов и записи ci в регистр (рис.4.4).
Рисунок 4.4. Схема DES шифрования/дешифрования в режиме CFB
Восстановление зашифрованных данных также выполняется относительно просто: pi -1и ci, вычисляется аналогичным образом и
mi = ci Å pi -1.
Режим также обладает свойством восстановления после изменения отдельных битов в шифрограмме. При расшифровке используется функция шифрования, а не функция дешифрования блочного шифра.
Возможности изменения открытого текста те же, что в режиме СВС. Скорость шифрования с полноблочной открытой связью та же, что и блочного шифра.
3.4. Режим OFB — "Обратная связь по выходу"
Режим Outрut Feed Back (OFB) или "Обратная связь по выходу" похож на режим CFB. Отличие состоит в методе обновления сдвигового регистра. Оно осуществляется путем отбрасывания старших k битов входного блока и дописывания справа k старших битов выходного блока DES-шифрования на предыдущем шаге.
Входной блок вначале также содержит вектор инициализации c 0, выровненный по правому краю. При этом для каждого сеанса шифрования данных необходимо использовать новое начальное состояние регистра, которое может пересылаться по каналу открытым текстом. Или порождается псевдослучайная последовательность и побитно складывается с сообщением.
|
|
Разобьем входную последовательность m на блоки длиной k бит: m = m 1 m 2... mn. Тогда блоки шифртекста
ci = mi Å pi -1 " i = 1... n,
где pi -1 - старшие k битов результата операции DES(ci -1).
Рисунок 4.5. Схема DES шифрования/дешифрования в режиме ОFB.
Режим OFB имеет следующее преимущество по сравнению с CFB: ошибки, возникающие при передаче по каналу с шумом, при дешифровании не «размазываются» по всему шифртексту, а локализуются в пределах одного блока. Однако открытый текст может быть изменен путем определенных манипуляций с шифртекстом.
Для устранения известных недостатков разработаны некоторые усовершенствования различных режимов, но они не являются стандартными.