Гаммирование с обратной связью

 

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

,

или, более обще:

.

У этой схемы шифрования, так же как и у обычного гаммирования, есть проблема получения первого элемента гаммы. Способ ее решения вполне традиционен: исходный текст дополняется фиктивным несекретным блоком , единственное назначение которого – быть основой для выработки первого блока гаммы: .

Как и при гаммировании без обратной связи, этот блок должен быть частью шифрованного сообщения:

.

Если мы решили вырабатывать блоки гаммы из блоков исходного текста, то нам необходимо скрыть при этом любые статистические закономерности этого текста. Самый очевидный и уже опробованный путь для этого – использовать шифрующее преобразование, то есть алгоритм простой замены:

,

.

Но предложенный подход в его первоначальном виде обладает многими недостатками алгоритма простой замены, для преодоления которых мы, собственно, и затеяли различные усовершенствования схемы шифрования. Обратим внимание на то, что при его использовании блок шифротекста зависит только от соответствующего и предшествующего ему блоков исходного текста:

.

Это означает, что при зашифровании массива одинаковых блоков данных соответствующие блоки шифротекста, начиная со второго из них, будут также идентичны – это становится очевидным из рассмотрения уравнений зашифрования:

,

,

.

Как видим, по данному свойству предложенный нами алгоритм шифрования ничуть не лучше простой замены. Однако его очень легко можно усовершенствовать, если для выработки гаммы использовать блоки шифротекста, а не соответствующего открытого текста:

,

– зашифрование,

– расшифрование.

Теперь каждый блок шифротекста зависит не только от соответствующего, но и от всех предшествующих блоков исходного текста:

, но

, поэтому

, где – синхропосылка.

Выполненное нами усовершенствование делает гаммирование с обратной связью свободным от недостатков простой замены. Действительно, как внесение изменений в блоки шифротекста, так и манипулирование целыми блоками приводит к непредсказуемым для злоумышленника изменениям в расшифрованном тексте, в результате чего он теряет возможность оказывать такие воздействия целенаправленно.

Как мы показали ранее, на каждый блок шифротекста при зашифровании оказывают влияние все предшествующие блоки исходного текста и синхропосылка: . Несколько иным, хотя весьма похожим образом на блоки открытого текста, получаемые при расшифровании, влияют блоки шифротекста. Для уяснения характера этого влияния еще раз запишем уравнения расшифрования для двух смежных блоков данных:

,

.

Из этих уравнений становится ясно, что каждый блок шифротекста при расшифровании оказывает влияние лишь на два блока открытого текста: на соответствующий ему блок, и на следующий за ним блок. Причем в первом случае это влияние носит такой же характер, как и при использовании обычного гаммирования, а во втором – как при простой замене. Таким образом, если злоумышленник внесет изменения в блок шифротекста, они отразятся на текущем и следующем блоках сообщения.

Проявление этого влияния удобно пояснить на примере из предыдущего раздела: если сообщение было зашифровано по методу гаммирования с обратной связью и в него были внесены указанные в примере изменения, то после расшифрования получатель увидит следующую картину:

· в измененном блоке все также, как и при обычном гаммировании – вместо верной цифры один стоит навязанная злоумышленником девятка, и больше никаких изменений нет;

· в блоке, следующем за измененным, картина такая же, как и при простой замене – блок представляет собой случайную бессмысленную комбинацию битов;

· все прочие блоки остались неизменными.

Таким образом, режим гаммирования с обратной связью имеет те же преимущества, что и обычное гаммирование, и вместе с тем свободен от его недостатков. Гаммирование с ОС устойчиво к перестановкам блоков и к направленным модификациям шифротекста, если только модифицируется не последний блок. Иными словами, злоумышленник, вносящий изменения в шифротекст, не может точно рассчитать их влияние на открытый текст, если, конечно, не обладает секретным ключом. С другой стороны, для этого режима как для частного случая гаммирования, отсутствует проблема “хвоста” – последнего неполного блока данных и в отличие от гаммирования без ОС не так остра проблема уникальности синхропосылки. Поясним последнее замечание: действительно, при обычном гаммировании вырабатываемая гамма однозначно определяется синхропосылкой и ключом: , тогда как при гаммировании с ОС она зависит еще и от шифруемых данных: . Поэтому, если два сообщения, не содержащих одинаковых блоков, зашифрованы с использованием одного и того же ключа и синхропосылки, то равенство выполняется только при i = 1, что облегчает задачу дешифрования лишь первого, но никак не последующих блоков сообщения. Это снижает остроту проблемы, но, конечно же, не снимает ее полностью. Если криптоаналитик обладает возможностью анализа на основе произвольного открытого текста, включая выбор синхропосылки, такая схема шифрования неустойчива к анализу. Таким образом, и в этом случае необходимо позаботиться об оригинальности синхропосылки.

Завершая рассказ о гаммировании отметим, что Российский стандарт шифрования не предусматривает никаких других режимов шифрования, кроме описанных выше. Американский же стандарт определяет еще несколько режимов с обратной связью, однако они невыгодно отличаются от описанных выше тем, что за одно обращение к процедуре простой замены шифруется порция данных t, по размерам меньшая, чем полный 64-битовый блок данных алгоритма DES, êtï< 64, что, конечно же, снижает быстродействие шифрователя без сколько-нибудь заметного повышения его стойкости. Кроме того отметим, что все сказанное в данном разделе статьи останется верным, если вместо алгоритма простой замены по ГОСТ использовать какой-либо другой алгоритм простой замены – им могут быть DES, FEAL, албер и т.д. – стойкость получаемого таким образом потокового шифра полностью определяется стойкостью использованного шифра простой замены.