Скачиваний:
37
Добавлен:
01.05.2014
Размер:
121.27 Кб
Скачать

Симметричные криптографические системы 2. Симметричные криптографические системы  

 

2.1 Алгоритмы типа DES (Digital Encription Standart)

2.2 Блочные алгоритмы. Blowfish алгоритм

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

2.4 Архивация  

 

2.1 Алгоритмы типа DES (Digital Encription Standart)  

2.1.1 Основные параметры алгоритма DES

 

Название/статус

DES (Data Encryption Standard). Федеральный стандарт шифрования США в 1977-2001 годах.

Время/место разработки

Создан в 1972-1975 годы в исследовательской лаборатории корпорации IBM. В качестве федерального стандарта США принят в 1977 году. В декабре 2001 года утратил свой статус в связи с введением в действие нового стандарта.

Авторы

Группа под руководством д-ра. У.Тачмена.

Архитектура

Классическая сбалансированная сеть Файстеля с начальной и конечной битовыми перестановками общего вида.

Параметры

pазмер блока, бит

64

pазмер ключа, бит

56 (64, 8 из которых служат для контроля четности)

число раундов

16

pазмер ключевого элемента, бит

48

число ключевых элементов

16 (равно числу раундов)

Патент

Не запатентован.

Особенности

Широкое использование битовых перестановок в DES делает алгоритм неудобным для программных реализаций на универсальных процессорах, а сами такие реализции крайне неэффективными. По сравнению с Российским стандартом шифрования DES содержит вдвое меньше раундов, однако его оптимальная реализация для процессоров линии Intel x86 уступает реализации Российского стандарта по скорости в 3-5 раз в зависимости от марки процессора, эта разница увеличивается от младших моделей к старшим. Кроме того, по единодушному мнению криптографов начальная и конечная битовые перестановки являются не более чем "украшениями" алгоритма т.е. бесполезны с криптографической точки зрения, а размера ключа в 56 бит явно недостаточно для обеспечения приемлемой стойкости, что регулярно демонстрируется успехами во вскрытии шифровок DES путем подбора ключа методом прямого перебора с помощью распределенной сети или спецпроцессора.

 

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

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

На практике обычно используют два общих принципа шифрования: рассеивание и перемешивание. Рассеивание заключается в распространении влияния одного символа открытого текста на большое количество символов шифртекста: это позволяет скрыть статистические свойства открытого текста. Развитием этого принципа является распространение влияния одного символа ключа на большое количество символов шифрограммы, что позволяет исключить восстановление ключа  по  частям.  Перемешивание состоит в  использовании таких шифрующих преобразований,  которые исключают восстановление взаимосвязи статистических свойств открытого и шифрованного текста.  Распространенный способ достижения хорошего рассеивания состоит в  использовании  составного  шифра, который может быть реализован в виде некоторой последовательности простых шифров, каждый из которых вносит небольшой вклад в значительное суммарное рассеивание и перемешивание. В качестве простых шифров чаще всего используют простые подстановки и перестановки. Одним из наилучших примеров криптоалгоритма, разработанного в соответствии с принципами рассеивания  и  перемешивания,  может служить принятый  в  1977  году  Национальным бюро стандартов США стандарт шифрования данных DES (decryption-encryption standard).

Алгоритм DES с самого начала предназначался для широкого распространения. Уже в течение более 20 лет он является одним из наиболее популярных криптоалгоритмов и все это время привлекает пристальное внимание специалистов. За это время данный стандарт прошел достаточную апробацию и показал достаточно высокую надежность для защиты коммерческой информации.

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

В криптосистеме DES используется многократное чередование перемешивающих и рассеивающих преобразований, не управляемых ключом, и простых криптографических преобразований, выполняемых под управлением секретного ключа. Алгоритм DES преобразует входную информацию блоками объемом 64 бит. Двумя основными составными процедурами являются подстановка и перестановка, реализуемые соответственно S- и P-блоками. Функция P-блока заключается в перестановке входных битов без изменения количества нулевых и единичных битов. Их техническая реализация весьма проста для любого размера входного блока (P-блок представляет собой переплетение проводников). Блоки S-типа воплощаются достаточно сложными схемами, реализующими заданные стандартом таблицы подстановок. Операции, выполняемые S-блоками и P-блоками, относятся к нелинейному типу, и именно они определяют надежность криптографического закрытия данных. Длительное время принципы выбора таблиц подстановок держались в секрете, хотя алгоритм и сами таблицы были предоставлены для широкого использования и обсуждения. Позднее в открытых публикациях были сформулированы условия, накладываемые на S-блоки, и показано, что число блоков размера 4 х 4, удовлетворяющих всем требованиям, равно 170, а до нескольких тысяч доходит число блоков, удовлетворяющих ослабленным требованиям. После появления многих публикаций по дифференциальному криптоанализу DES фирма IBM опубликовала критерии выбора S-блоков. Одним из основных критериев является обеспечение размножения ошибок. Каждый S- блок выбран таким образом, что изменение одного бита на ходе приводит к изменению на выходе по крайней мере двух битов.

Криптосистема DES управляется 56-битовым секретным ключом пользователя, из которого в каждом из 16 проходов используются выбираемые псевдослучайно 48 бит Ki. Общая схема алгоритма DES состоит в следующем. 64-битовый блок открытого текста после начальной перестановки делится на две части по 32 бит каждая. Левую и правую половины обозначим соответственно L и R. Затем выполняются 16 шифрующих итераций (раундов) вида:

                 

                             Li = Ri-1

                             Ri = Li-1 Å F(Ri-1, Ki),

 

где Ki – 48-битовый подключ, вырабатываемый по простым процедурам из 56-битового секретного ключа и используемый на i-м раунде.

Сущность алгоритма DES раскрывается преобразованиями, которые выполняются для получения значения функции F(Ri-1, Ki). Процедура вычисления значения этой функции включает в себя:

1.      простую процедуру расширения 32-битового подблока R в 48-битовый подблок R¢;

2.      линейное преобразование, заключающееся в выполнении операции поразрядного суммирования по модулю два над подблоком R¢ и подключом Ki;

3.      8 операций подстановок типа 6 х 4 S1S2, …, S8 и

4.      операцию перестановки P.

Все детали преобразований являются известными, исключая значение Ki . Схема вычисления F(Ri-1, Ki) показана на рис:

Операция расширения подблока R (R ® R¢) заключается в следующем. 32 бита подблока R разбиваются на 8 4-битовых подблока. К каждому 4-битовому подблоку  с обоих сторон присоединяется по одному биту, в качестве которого берется ближайший крайний бит соседнего подблока (для первого 4-битового подблока соседним слева считается восьмой 4-битовый подблок; для 8-го 4-битового подблока соседним справа считается 1-й 4-битовый подблок). Схема процедуры расширения показана на рис:

После выполнения операции расширения R ® R¢ имеются 8 6-битовых подблока, над каждым из которых выполняется оперция подстановки типа 6 х 4 , дающяя на выходе 4-битовое значение. Каждая из 8 подстановок задается таблицей из 4-х строк, которые представляют собой некоторые перестановки полного набора 4-битовых чисел {0,1,2, … , 15}. Например, подстановка S1 задается такой таблицей:

Выполнение операции подстановки состоит в следующем. На основе 6-битового входного подблока формируется 2 двоичных вектора n1 и n2. Вектор n1 представляет собой 2-битовый подблок, содержащий 1-й и 6-й биты входного подблока, а вектор n2 содержит 4 средних бита. Число, находящееся на пересечении строки сномером n1 и столбца с номером n2 , берется в качестве выходного 4-битового подблока. Всего используются 8 разных таблиц подстановки, аналогичных приведенной выше. После выполнения 8 операций подстановки все 4-битовые выходные значения объединяются в 32-битовый подблок, над которым затем выполняется операция перестановки в соответствии с таблицами:

,

.

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

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

 

2.1.2 Варианты DES

 

Многократный DES

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

 

 

Соответственно, если ключи разные и их два, то стойкость возрастает. Полученный шифротекст гораздо сложнее вскрыть, используя исчерпывающий поиск: 2112  попыток вместо 256. В виде формул тройной DES выглядит так:

EK1(DK2(EK1(Data8))),

EK1-операция шифрования (Encryption) DES на ключе K1,

DK2-операция дешифрования (Decryption) DES на ключе K2,

Data8 - данные длиной 8 байт.

Здесь видно, что если K1=K2, то DK2(EK1(Data8))=Data8 как результат последовательного за- и расшифрования на одном и том же ключе.

Согласно сообщению Центра общественных технологий США от 13 февраля 1995 года (Center for Democratic Technology - CDT), разработкой нового стандарта, основанного на трехкратном применении DES (triple-DES) занимается подкомитет X9 комитета Accredited Standards Committee (ASC), осуществляющего стандартизацию защиты данных в финансовой и банковской сфере США. Кроме того AT&T и VLSI Technologies, - крупные разработчики специального оборудования и элементной базы,- анонсировали свои планы относительно создания приложений на базе triple-DES.

Можно добавить, что ведущий мировой производитель смарт-карт GEMPLUS International уже заявил о переходе на новый стандарт шифрования triple DES для новой линии своих продуктов - карт серии MPCOS.

Какие же практические выводы можно сделать:

1.      Если ключи хранятся надежно идлина ключа (пары ключей) составляет 112 бит, то алгоритм шифрования DES обеспечивает достаточнуюстойкость.

2.      Тройное шифрование DES на паре ключей по стойкости не превосходит двойного шифрования на той же паре и обеспечивает полную совместимость как с одинарным, так и двойным DES.

Тройной DES стал де-факто стандартом для защиты информации в банковской и финансовой сферах. В ближайшем будущем следует ожидать появления соответствующего стандарта ANSI.

 

DES с независимыми подключами

Другой возможностью является использование различных подключей на каждом этапе, не создавая их из одного 56-битового ключа. Так как на каждом из 16 этапов используется 48 битов ключа, то длина ключа для такого варианта составит 768 битов. Такой вариант резко увеличивает сложность вскрытия алгоритма грубой силой, сложность такого вскрытия составит 2768.

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

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

 

DESX

DESX - это вариант DES, разработанный RSA Data Security, Inc., и включенный в 1986 году в программу обеспечения безопасности электронной почты MailSafe, а в 1987 году в набор BSAFE. DESX использует метод, называемый отбеливанием, для маскировки входов и выходов DES. Кроме 56-битового ключа DES в DESX используется дополнительный 64-битовый ключ отбеливания. Эти 64 бита используются для выполнения операции XOR с блоком открытого текста перед первым этапом DES. Дополнительные 64 бита, являющиеся результатом применения однонаправленной функции к полному 120-битовому ключу DESX, используются для выполнения XOR с шифртекстом, полученным в результате последнего этапа. По сравнению с DES отбеливание значительно повышает устойчивость DESX к вскрытию грубой силой, вскрытие требует 2120/n операций при n известных открытых текстах. Также повышается устойчивость к дифференциальному и линейному криптоанализу, для вскрытия потребуется 261 выбранных и 260 известных открытых текстов, соответственно.

 

CRYPT(3)

CRYPT(3) представляет собой вариант DES,  используемый в системах UNIX. Он в основном используется в качестве однонаправленной функции для паролей, но иногда может быть использован и для шифрования. Различие между CRYPT(3) и DES состоит в том, что в CRYPT(3) включена независимая от ключа перестановка с расширением с 212 вариантами. Это сделано для того, чтобы для создания аппаратного устройства вскрытия паролей нельзя было использовать промышленные микросхемы DES.

 

Обобщенный DES

Обобщенный DES (Generalized DES, GDES) был спроектирован для ускорения DES и повышения устойчивости алгоритма. Общий размер блока увеличился, а количество вычислений осталось неизменным.

На рисунке показана поблочная диаграмма GDES. GDES работает с блоками открытого текста переменной длины. Блоки шифрования делятся на q 32-битовых подблоков, точное число которых зависит от полного размера блока (который по идее может меняться, но фиксирован для конкретной реализации). В общем случае q равно размеру блока, деленному на 32.

Функция f для каждого этапа рассчитывается один раз для крайнего правого блока. Результат при помощи операции XOR объединяется со всеми остальными частями, которые затем циклически смещаются направо. GDES использует переменное число этапов n. В последний этап внесено незначительное изменение, чтобы процессы шифрования и дешифрирования отличались только порядком подключей (точно также, как в DES). Действительно, если a=2 и n=16, то описанный алгоритм превращается в DES.

Израильские математики Бихам и Шамир показали, что дифференциальный криптоанализ вскрывает GDES с a=8 и n=16 с помощью всего шести выбранных открытых текстов. При использовании независимых подключей требуется16 выбранных открытых текстов. GDES с  a=8 и n=22 вскрывается с помощью всего 48 выбранных открытых текстов, а для вскрытия GDES с a=8 и n=31 требуется всего 500000 выбранных открытых текстов. Даже GDES с a=8 и n=64 слабее, чем DES - для его вскрытия нужно только 249 выбранных открытых текстов. Действительно, любая более быстрая, чем DES, схема GDES является также и менее безопасной.

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

Существует также много других модификаций алгоритма DES (DES с измененными S-блоками, RDES, snDES, DES с S-блоками, зависящими от ключа).

 

2.2 Блочные алгоритмы. Blowfish алгоритм.  

2.2.1 Шифр Blowfish

 

Название/статус

Blowfish

Время/место разработки

1993 год.

Авторы

Брюс Шнайер (Bruce Schneier)

Архитектура

Сбалансированная сеть Файстеля.

Параметры

pазмер блока, бит

64

pазмер ключа, бит

32-448

число раундов

16

pазмер ключевого элемента, бит

32 (половина размера блока)

число ключевых элементов

16 (равно числу раундов)

Патент

Не запатентован

Особенности

Использование необратимых подстановок, зависимость узлов замен от ключа, большой размер узлов замен (используются 4 узла замен 8-в-32 бита, зависящие от ключа), переменный размер ключа от 32 до 448 бит, сложная схема выработки ключевых элементов - подготовка ключевых элементов требует выполнения 521 цикла шифрования, что существенно затрудняет переборную атаку на алгоритм, однако делает его непригодным для использования в системах, где ключ часто меняется и на каждом ключе шифруется небольшие по объему данные. Алгоритм лучше всего подходит для систем, в которых на одном и том же ключе шифруются большие массивы данных.

 

Шифр Blowfish был предложен Б. Шнейером как альтернатива широко используемой криптосистеме DES. При его создании были использованы следующие конструктивные критерии:

1.      Высокая скорость шифрования при программной реализации.

2.      Компактность. Алгоритм не должен требовать большого объема оперативной памяти для своего размещения.

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

4.      Возможность использования секретного ключа произвольной длины.

Blowfish является 64-битовым блочным шифром, который состоит из двух частей:

·        алгоритма расширения ключа и

·        алгоритма шифрования/дешифрования

В дальнейшем при рассмотрении программно-ориентированных криптосистем мы часто будем встречать конструктивный прием использования предвычислений для формирования расширенного ключа шифрования в зависимости от секретного ключа. В Blowfish процедура расширения ключа состоит в преобразовании секретного ключа, длина которого не лимитирована и может иметь значение до 448 бит, в ключ шифрования фиксированного размера (4168 бит), представленного в виде нескольких массивов подключей: массива 32-битовых ключевых непосредственных констант K1, K2, K3, … , K18 и четырех последовательностей 32-битовых подключей, каждая из которых содержит 256 элементов,

                 

Q0(1) , Q1(1) , … , Q255(1) ;

Q0(2) , Q1(2) , … , Q255(2) ;

Q0(3) , Q1(3) , … , Q255(3) ;

Q0(4) , Q1(4) , … , Q255(4) .

 

Последовательности Q(i) используются для задания функции F(X), где X – 32-битовый аргумент. При заданном X значение этой функции определяется следующим образом. 32-битовое слово X представляется в виде конкатенации четырех 8-битовых слов: X =  x3 | x2 |x1 |x0. Затем производится вычисление:

                  F(X) = {[(Qx3(1) + Qx2(2)) mod 232] Å Qx1(3) } + Qx0(4) (mod 232).

Последовательности Q(i) фактически задают большую таблицу отображения входных 32-битовых подблоков в выходные 32-битовые подблоки.

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

 

Алгоритм шифрования

 

ВХОД: 64-битовый блок открытых данных T = L | R , представленный в виде конкатенации 32-битовых подблоков L и R.

1.      Установить счетчик i = 1.

2.      Преобразовать подблок L и вычислить текущее значение переменной V:

L := L Å Ki;

V := F(L).

3.      Преобразовать подблок R:

R := R Å V.

4.      Если i=16, то перейти к шагу 7.

5.      Прирастить i := i + 1 и переставить подблоки R и L:

W := R;

 R := L;

 L := W.

6.      Перейти к шагу 2.

7.      Преобразовать подблок R:

R := R Å K17 .

8.      Преобразовать подблок L:

9.      СТОП.

ВЫХОД: 64-битовый блок шифртекста L | R.

 

Алгоритм шифрования:

 

ВХОД: 64-битовый блок шифртекста C = L | R.

1.      Преобразовать подблок R:

R := R Å K17.

2.      Преобразовать подблок L:

L := L Å K18.

3.      Установить счетчик i =16.

4.      Вычислить текущее значение переменной V и преобразовать подблок R:

V := F(L);

R :+ R Å V.

5.      Преобразовать подблок L:

L := L Å K17-i.

6.      Если i = 1, то перейти к шагу 9.

7.      Переставить подблоки R и L:

W := R;  R := L;  L :=W.

8.      Уменьшить на 1 значение счетчика i := i-1 и перейти к шагу 4.

9.      СТОП.

ВЫХОД: Блок открытого текста L | R.

Схема шифрующих преобразований проясняется на рис:

Blowfish применяется в ряде зарубежных программных продуктов и представляется стойким к известным методам криптоанализа.

 

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 , а блочный шифр – непредсказуемость ключевого потока. Генерация ключевого потока осуществляется следующим образом. Текущее значение счетчика зашифровывается с помощью блочного шифра и младший бит на выходе блочного шифра берется в качестве текущего ключевого потока. После этого устанавливается очередное значение счетчика и процедура повторяется снова и т.д. Если в поточном шифре преобразуются

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