Недостатки режима простой замены

 

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

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

Можно предложить модификацию схемы шифрования по алгоритму простой замены, устраняющую данный недостаток – для этого перед зашифрованием сообщения надо выполнить его рандомизацию. Это действие заключается в том, что блоки исходного текста модифицируются индивидуальным образом, например, комбинируются с данными, вырабатываемыми датчиком псевдослучайных чисел (ПСЧ) с помощью некоторой бинарной операции °, имеющей обратную операцию •. Зашифрование и расшифрование будет выполняться согласно следующим уравнениям:

,

.

где Gi – блоки данных, вырабатываемые датчиком ПСЧ. Как уже отмечалось ранее, в качестве операции наложения/снятия гаммы наиболее всего подходит процедура побитового "исключающего или". Период повторения последовательности ПСЧ Gi, вырабатываемых датчиком, должен превышать максимально возможное число блоков в сообщении.

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

, где U – вероятный блок-заполнитель,

.

Если выполняется условие , это означает, что Ti = U, и наш криптографический протокол не выполняет возложенных на него задач.

Чтобы избавиться от указанного недостатка, протокол шифрования должен обеспечить уникальность последовательности элементов гаммы Gi. Как это можно осуществить? Как правило, все алгоритмы выработки ПСЧ имеют некоторый набор числовых параметров, однозначно определяющий получаемую выходную последовательность Gi. Это позволяет обеспечить ее уникальность для различных процессов шифрования одним из следующих двух способов:

· сделать числовые параметры алгоритма выработки ПСЧ Gi секретными. Этот способ нельзя назвать хорошим, так как он приводит к возрастанию общего объема секретной ключевой информации, то есть, по своей сути, предполагает использование дополнительного алгоритма шифрования;

· обеспечить уникальность используемого набора числовых параметров соответствующим построением шифрователя. Этот способ также нельзя считать приемлемым, так как шифрователь в этом случае должен содержать некоторый блок, обеспечивающий получение уникального вектора начальных параметров для выработки Gi, что усложнит его структуру. Кроме того, в этом случае придется запретить шифрование по алгоритму простой замены без использования элементов Gi, так как если этого не сделать, криптоаналитик может выполнить комбинирование блока-заполнителя с элементами самостоятельно, подвергнув зашифрованию последовательность блоков {Ui}, где Ui = U°Gi.

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

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

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

· можно дополнять "хвосты" данными из полных блоков. В целом это неплохое решение, но оно не работает, если неполный блок - единственный, то есть если длина сообщения меньше размера блока шифра. Кроме того, используя данный подход, мы рано или поздно столкнемся с ситуацией, когда для дополнения "хвоста" будут использованы фиксированные части сообщения, обладающие недостаточной неопределенностью для криптоаналитика. Так, например, многие сообщения начинаются с грифа, который может принимать всего два - три возможных значения, а различных форм его записи в текстовом виде может быть максимум несколько десятков вариантов. Если для дополнения "хвоста" используется часть такого блока, то складывается ситуация, подобная рассмотренной в предыдущем пункте - "хвост" может стать легкой добычей криптоаналитика;

· применение для дополнения "хвоста" отдельного постоянного секретного элемента не подходит по той же самой причине, что и первый способ - использование данного элемента по частям делает его уязвимым к криптоанализу. Такая схема оказывается беззащитной перед анализом на основе выбранного открытого текста. Кроме того, данный способ увеличивает общий объем секретной (ключевой) информации, что весьма нежелательно;

· пожалуй, наилучший возможный способ заключается в том, чтобы использовать для дополнения "хвоста" данные с аппаратного датчика случайных чисел. Здесь нужен датчик, вырабатывающий действительно случайные числа, имеющие высокое статистическое качество. По этой причине различные программные датчики ПСЧ здесь не подходят. В силу этого часто такой способ оказывается неприемлемым по экономическим соображениям, так как требует наличия на каждом компьютере-шифрователе весьма дорогостоящей аппаратной компоненты.

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

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

На первый взгляд, перечисленные выше особенности делают практически невозможным использование режима простой замены, ведь он может применяться только для шифрования массивов данных с размером кратным 64 битам, не содержащим повторяющихся 64-битных блоков. Кажется, что для любых реальных данных гарантировать выполнение указанных условий невозможно. Это почти так, но есть одно очень важное исключение: вспомните, что размер ключа составляет 32 байта, а размер таблицы замен - 64 байта. Кроме того, наличие повторяющихся 8-байтовых блоков в ключе или таблице замен будет говорить об их весьма плохом качестве, поэтому в реальных ключевых элементах такого повторения быть не может. Таким образом мы выяснили, что режим простой замены вполне подходит для шифрования ключевой информации, тем более, что прочие режимы для этой цели менее удобны, поскольку требуют наличия дополнительного синхронизирующего элемента данных - синхропосылки (см. следующий раздел). Наша догадка верна, ГОСТ предписывает использовать режим простой замены исключительно для шифрования ключевых данных.

В силу изложенных выше соображений использование блочного шифра в режиме простой замены может быть рекомендовано только для шифрования небольших по объему массивов данных, размер которых кратен размеру блока используемого блочного криптоалгоритма и которые не содержат повторяющихся блоков. Этому набору требований вполне удовлетворяют лишь массивы ключевой информации. Именно поэтому DES не рекомендует, а Российский стандарт ГОСТ 28147-89 прямо запрещает использовать шифрование в режиме простой замены для данных, не являющихся ключевыми.