Глава 5. Режимы работы блочных шифров
5.1
Дополнение
Режим работы блочного шифра — это способ зашифровать открытый
текст
P
, преобразуя его в шифрованный текст
C
, причем и тот и другой текст
имеет произвольную длину. Большинство режимов работы блочных шифров
требуют, чтобы длина открытого текста
P
была кратной размеру блока. Для
этого сообщение приходится дополнять до нужной длины. Существует мно-
жество способов дополнения открытого текста. Главное требование состоит
в том, чтобы дополнение было обратимым, т.е. чтобы по дополненному сооб-
щению можно было уникальным образом определить исходное сообщение.
Довольно часто открытый текст просто дополняют нулями до нужной
длины. Это не очень удачная идея. Такое дополнение не является обратимым,
поскольку открытый текст
p
при дополнении принимает ту же форму, что
и открытый текст
p
k
0
. (Оператор
k
обозначает конкатенацию.)
В этой книге мы ограничимся рассмотрением открытого текста, состояще-
го из целого числа байтов. Некоторые криптографические алгоритмы предна-
значены для работы с сообщениями произвольной длины, в которых послед-
ний байт считается неполным. Подобное обобщение вряд ли может оказаться
полезным, в то время как недостатков от его использования очень много.
Большинство реализаций алгоритмов шифрования не принимают сообще-
ний с неполными байтами, поэтому в дальнейшем все размеры приводятся
в байтах.
В идеале правило дополнения не должно было бы увеличивать длину от-
крытого текста, если она уже подходит для применения шифра. Зачастую,
однако, это невозможно. Всегда найдется хотя бы несколько сообщений, дли-
ну которых, несмотря на то что она уже является подходящей, требуется
еще более увеличить с помощью любой обратимой схемы дополнения. На
практике все правила дополнения увеличивают длину открытого текста, как
минимум, еще на один байт.
Итак, как же дополнить открытый текст? Пусть
P
— это открытый текст,
l
(
P
)
— его длина в байтах,
b
— размер блока используемого блочного шифра
в байтах. Предлагаем воспользоваться одной из двух простых схем допол-
нения.
Добавьте к открытому тексту один байт со значением 128, а затем такое
количество нулевых байтов, чтобы общая длина сообщения стала кратной
b
.
Количество добавляемых нулевых байтов лежит в диапазоне
0
, . . . , b
−
1
.
Определите, сколько байтов нужно добавить к открытому тексту, чтобы
его длина стала кратной
b
. Обозначим это количество байтов как
n
, где
1
≤
n
≤
b
и
n
+
l
(
P
)
кратно
b
. Присоедините к открытому тексту
n
байтов, каждый
из которых будет иметь значение
n
.
5.2. Электронная шифровальная книга (ECB)
89
Каждая из этих схем одинаково хорошо подходит для дополнения откры-
того текста. Никаких криптографических нюансов, связанных со схемами до-
полнения, не существует. Любая схема будет приемлема, если она обратима.
Мы лишь привели примеры наиболее простых схем дополнения.
После того как открытый текст дополнен до длины, кратной размеру бло-
ка, он разбивается на блоки. В результате этого открытый текст
P
превра-
щается в последовательность блоков
P
1
, . . . , P
k
. Количество блоков
k
может
быть подсчитано по формуле
d
(
l
(
P
) + 1)
/b
e
, где
d
. . .
e
— функция округления
сверху, которая округляет число до следующего целого числа. В оставшейся
части главы будем предполагать, что открытый текст
P
состоит из целого
числа блоков
P
1
, . . . , P
k
.
Когда шифрованный текст будет расшифрован с использованием одного
из рассмотренных далее режимов работы, добавленные байты следует уда-
лить. Перед этим необходимо убедиться, что дополнение было выполнено
корректно. Следует проверить правильность значения каждого из добавлен-
ных байтов. Неправильное дополнение должно быть обработано так же, как
и ошибка аутентификации.
5.2
Электронная шифровальная книга (ECB)
Самый простой метод шифрования открытого текста, длина которого пре-
вышает длину блока, называется режимом
электронной шифровальной книги
(electronic codebook — ECB)
. Он определяется следующим образом:
C
i
=
E
(
K, P
i
)
для
i
= 1
, . . . , k.
Данный режим довольно прост: каждый блок сообщения шифруется от-
дельно. Разумеется, на практике все не может быть так просто, иначе зачем
посвящать целую главу обсуждению режимов работы блочных шифров? Ни-
когда не используйте режим ECB! Он обладает серьезными недостатками
и включен в эту книгу только затем, чтобы посоветовать вам держаться от
него подальше.
Так какими же недостатками обладает ECB? Если два блока просто-
го текста одинаковы, соответствующие блоки шифрованного текста также
будут одинаковы, что непременно заметит злоумышленник. В зависимости
от структуры сообщения, подобный недостаток может привести к серьезной
утечке информации.
Существует довольно много ситуаций, в которых повторяются большие
блоки текста. Например, в данной главе часто повторяется словосочетание
“блоки шифрованного текста”. Если сообщение содержит два повторяющихся
|