Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Статьи / symmetr.doc
Скачиваний:
43
Добавлен:
01.05.2014
Размер:
217.09 Кб
Скачать

2.3 Потоковые алгоритмы

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

Для этого режима шифрующие преобразования описываются следующим выражением:

Ci=EK(TiÅCi-1),

где EK– функция блочного шифрования;K– секретный ключ. В качествеC0 может использоваться блок, состоящий только из нулевых битов или значение, вырабатываемое по случайному закону передатчиком и отправляемое в пункт приема в открытом виде вместе с криптограммой (такие инициализмрующие значения называются указателями).

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

Ti=DK(Ci)ÅCi-1 ,

где EK– функция блочного дешифрования.

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

Ci =Ti ÅEK (Ci-1).

В этом случае также используется вектор инициализации C0 , а дешифрование выполняется по формуле:

Ti =Ci ÅEK (Ci-1).

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

Ci = Ti-1 Å EK (Ti Å Ci-1) (шифрование);

Ti = Ci-1 Å DK (Ci Å Ti-1) (дешифрование).

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

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

В двоичных аддитивных шифрах секретный ключ используется только для генерации длинной ключевой гаммы, накладываемой на преобразуемое сообщение с помощью побитового суммирования по модулю два и называемой ключевым потоком. Процедуры (или устройство), генерирующее ключевой поток, называетсягенератором ключевого потока. Секретный ключ управляет генератором ключевого потока и определяет очень длинную последовательность псевдослучайных битовk1¢,k2¢, … ,kN¢, вырабатываемую по детерминированному закону и имеющую очень большой периодN. Пусть дан открытый текст в виде последовательности битовt1,t2, … ,tn. Как правило даже для очень больших сообщений (сотни и тысячи Гбайт) выполняется соотношениеN>>n. Шифрование выполняется путем последовательного суммирования по модулю 2 одного бита текста с соответствующим битом ключевого потока:

ci=tiÅki¢,

где ci– текущий бит шифртекста;i= 1, 2, … ,n. Поскольку суммирование и вычитание по модулю 2 совпадают, то процедура дешифровния полностью совпадает с процедурой шифрования:

ti=ciÅki¢.

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

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

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

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

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

Счетчик задает период, равный 2b, а блочный шифр – непредсказуемость ключевого потока. Генерация ключевого потока осуществляется следующим образом. Текущее значение счетчика зашифровывается с помощью блочного шифра и младший бит на выходе блочного шифра берется в качестве текущего ключевого потока. После этого устанавливается очередное значение счетчика и процедура повторяется снова и т.д. Если в поточном шифре преобразуютсяr-битовые элементы исходного текста, то после каждого шага блочного шифрования берутсяrмладших битов преобразованного значения счетчика.

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

В этой схеме генерация ключевого потока начинается с подачи на вход блочного шифра некоторого начального значения u0, называемого указателем или вектором инициализации. Указатель шифруется с использованием секретного ключа. Из выходного блока берется один бит (илиr битов) для преобразования первого бита (или первого элемента) входного текста, а само выходное значение подается на вход блочного шифра и зашифровывается. Новое выходное значение задает очередной элемент ключевого потока и снова подается на вход блочного шифра и т.д. В этой схеме ожидаемый период ключевой последовательности равен 2b-1. Длина периода зависит от ключа, управляющего функцией блочного шифрования, и от значения вектора инициализации.

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

Соседние файлы в папке Статьи