Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Книга бельфер.docx
Скачиваний:
173
Добавлен:
20.09.2019
Размер:
9.74 Mб
Скачать
      1. Б.2.2. Режимы блочного шифрования

Симметричный блочный шифр обрабатывает блоки данных по одному. В DES, TDEA и ГОСТ 28147-89 длина блока равна 64 бита, в AES – 128 бит. Для более длинных фрагментов открытый текст необходимо разбить на блоки (дополнив последний блок битами заполнителя, если это необходимо). Дальнейшая обработка блоков называется режимом блочного шифрования. Рассмотрим некоторые из наиболее часто используемых режимов.

        1. Б.2.2.1. Режим электронного шифроблокнота (ecb)

На рис. Б.5. показана схема простейшего режима – режима электронного шифроблокнота ECB (Electronic Code Book). В режиме ECB производится независимое шифрование каждого блока на одном и том же ключе KAB.

Рис. Б.5. Режим электронного шифроблокнота (ECB)

Если в режиме ECB в сообщении присутствуют одинаковые 64-битовые блоки открытого текста, в шифрованном тексте они тоже будут представляться одинаковыми блоками. Поэтому при передаче достаточно длинных сообщений режим ECB может не обеспечивать необходимый уровень защиты. У криптоаналитика появляется возможность использовать регулярности текста. Например, если известно, что в начале сообщения всегда размещается определённый заголовок, криптоаналитик может получить в своё распоряжение целый набор соответствующих пар блоков открытого и шифрованного текста. Если же сообщение содержит повторяющиеся элементы с периодом повторения, кратным 64 бит, такие элементы тоже могут быть выявлены аналитиком. Подобные сведения упрощают задачу криптоанализа и открывают возможность замещения или реорганизации блоков текста передаваемого сообщения. Данный режим нечувствителен также к выпадению, вставке целого числа блоков, замене блоков.

Все остальные режимы реализуют схемы шифрования свободные от недостатков режима ECB. При этом производится сцепление зашифрованных блоков. В случае повторения в сообщении уже встретившегося ранее блока открытого текста эти режимы позволяют генерировать блок шифрованного текста, отличный от сгенерированного ранее. Приведём два из таких режимов, называемый режимом группового шифра OFB и режим счётчика CTR.

        1. Б.2.2.2. Режим группового шифра (ofb)

Рис. Б.6. Режим группового шифра (OFB): шифрование (а); дешифрование (б)

На рис. Б.6. приведена схема группового шифра OFB (Output Feedback). Первый раз выходной блок создаётся с помощью ключа блочным шифрованием случайного значения вектора инициализации IV (Initialization Vector). Затем этот выходной блок снова шифруется, в результате получается второй выходной блок. Для получения третьего блока шифруется второй блок и т.д. Последовательность (произвольной длины) выходных блоков, называемая ключевым потоком, воспринимается как одноразовый блокнот и по модулю 2 складывается с открытым текстом. В результате получается шифрованный текст, как показано на рис. Б.6, а. Обратите внимание: вектор инициализации используется только на первом шаге. После этого шифруются выходные блоки. Кроме того, ключевой поток не зависит от данных, поэтому он в случае необходимости может быть вычислен заранее (что повышает скорость шифрования). Пример дешифрования показан на рис. Б.6, б.

Дешифрование осуществляется путём генерации точно такого же ключевого потока на принимающей стороне. При таком режиме сцепления одинаковым блокам открытого текста не соответствуют одинаковые блоки зашифрованного текста. Замена одного блока вызывает повреждение других блоков открытого текста после их расшифровки.

Б.2.2.3. Режим счётчика (CTR)

Название данного режима происходит от слова «counter» - «счётчик». Всем режимам, кроме электронного шифроблокнота ECB присущ недостаток: доступ к произвольной части зашифрованных данных невозможен. Например, если файл передаётся по сети и затем хранится на диске в зашифрованном виде.

Однако доступ к дискам зачастую бывает необходимо осуществлять в произвольном порядке. Особенно это касается файлов баз данных. Если файл зашифрован в режиме сцепления блоков, придётся вначале дешифровать все блоки, предшествующие нужному. Такой способ работы неудобен. По этой причине был введён ещё один режим шифрования – режим счётчика. Он показан на рис. Б.7. Здесь открытый текст не шифруется напрямую. Вместо этого шифруется вектор инициализации плюс некоторая константа, а уже получающийся в результате шифр складывается по модулю 2 с открытым текстом. Сдвигаясь на 1 по вектору инициализации при шифрации каждого нового блока, можно легко получить способ дешифрации любого места файла. При этом нет необходимости расшифровывать все предшествующие блоки.

Рис. Б.7. Шифрование в режиме счётчика