
- •Современные симметричные криптоалгоритмы
- •1.1. Базовые требования к симметричным шифрам
- •1.2. Упрощенная модель
- •1.3. Поточные шифры
- •1.4. Блочные шифры
- •1.5. Сеть Фейстеля
- •1.6.2. Основные характеристики и структура алгоритма
- •1.6.3. Алгоритм разворачивания ключа
- •1.6.4. Стойкость алгоритма des
- •1.7.2. Режим ecb (Electronic Code Book)
- •1.7.3. Режим cbc (Cipher Block Chaining)
- •Библиографический список
1.7.2. Режим ecb (Electronic Code Book)
Данный режим является простейшим среди стандартных способов использования блочного шифра. Суть его состоит в том, что каждый блок шифруемых данных обрабатывается алгоритмом шифрования отдельно и независимо от других блоков:
,
где
–
i-й
блок открытого текста,
– i-й
блок шифротекста, E
– шифрующая функция, k
– секретный ключ.
Аналогично выполняется и расшифрование – блоки шифротекста обрабатываются поочередно и независимо.
Режим ECB плох тем, что если открытый текст содержит какое-либо количество блоков с одинаковым содержимым (например, большой массив, проинициализированный нулевыми или единичными битами), то и шифротекст будет содержать такое же количество одинаковых блоков. Это непозволительно, поскольку дает криптоаналитику информацию о структуре зашифрованных данных, что может существенно облегчить вскрытие шифра (т.е. получение открытого текста из зашифрованного или вычисление ключа шифрования). Поэтому режим ECB должен использоваться только для шифрования ключей друг на друге в многоключевых схемах. Допускается также шифрование небольших фрагментов данных при условии их неповторяемости.
Другой недостаток режиме ECB заключается в том, что алгоритм шифрует данные только поблочно. При необходимости, например, зашифровать алгоритмом DES 8 битов придется дополнить эти данные до 64-битного размера блока, зашифровать блок целиком, а при расшифровании отбросить дополняющие биты. Такое не всегда возможно.
Есть и еще один недостаток – режим ECB слабо защищен от возможных атак с удалением и вставкой блоков шифротекста. Так как блоки шифруются независимо друг от друга, то удаление из сообщения какого-либо блока не оставляет следов, и атакующий может таким образом исказить передаваемую информацию. То же самое можно сказать и относительно вставки блоков из других сообщений.
1.7.3. Режим cbc (Cipher Block Chaining)
Существенно более стойким является режим CBC. В этом режиме перед зашифрованием каждого i-го блока шифруемых данных выполняется его побитовое сложение по модулю 2 с результатом шифрования предыдущего, (i-1)-го блока. То есть для режима CBC шифрование выглядит так:
.
Видно, что результат шифрования каждого блока зависит не только от содержимого шифруемого блока, но и от всех предыдущих блоков открытого текста. При шифровании первого блока открытого текста вместо результата зашифрования предыдущего блока используется вектор инициализации V:
.
Варьируя значение вектора инициализации, можно получать различные шифротексты для одинаковых открытых текстов. Естественно, что при расшифровании шифротекста, полученного в режиме CBC, вектор инициализации должен быть известен. Нет необходимости скрывать значение V, и на практике его передают в открытом виде как часть сообщения.
Аналогично предыдущему режиму, данные, размер которых меньше 64-битного блока (для алгоритма DES), придется перед обработкой дополнять до 64 битов.
Режим CBC используется непосредственно для зашифрования данных, в том числе в больших объемах. Кроме того, последний блок шифротекста может использоваться для контроля целостности сообщений, поскольку его значение зависит от содержимого всех блоков открытого текста, вектора инициализации и ключа.
1.7.4. Режим CFB (Cipher Feed Back)
Данный режим более сложен в реализации, чем два предыдущих. Шифрование данных в этом режиме выполняется следующим образом:
-
Вектор инициализации V записывается в регистр 1.
-
64-битное содержимое регистра 1 зашифровывается, результат помещается в регистр 2.
-
Из регистра 2 выбираются L левых битов (1 ≤ L ≤ 64), которые накладываются операцией XOR на L-битный битный блок шифруемого текста. Результат этого шага – L-битный блок шифротекста.
-
Содержимое регистра 1 сдвигается влево на L битов.
-
Регистр 1 дополняется справа L-битным блоком шифротекста. При необходимости продолжить шифрование данных шаги 2-5 повторяются в цикле до обработки всех шифруемых данных.
1.7.5. Режим OFB (Output Feed Back)
Данный режим похож на предыдущий:
-
Вектор инициализации V записывается в регистр 1.
-
64-битное содержимое регистра 1 зашифровывается, результат помещается в регистры 1 и 2.
-
Из регистра 2 выбираются L левых битов (1 ≤ L ≤ 64), которые накладываются операцией XOR на L-битный битный блок шифруемого текста. Результат этого шага – L-битный блок шифротекста. При необходимости продолжить шифрование данных шаги 2-3 повторяются в цикле до обработки всех шифруемых данных.
Здесь приведена более поздняя версия режима OFB (описанная в стандарте ISO 10116); согласно [8] в регистр 1 «возвращался» не полностью 64-битный результат зашифрования регистра 1, а младшие L битов (что больше напоминает режим CFB); исходный вариант режима OFB считается менее криптостойким, чем модифицированный.