Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Методическое пособие 371

.pdf
Скачиваний:
6
Добавлен:
30.04.2022
Размер:
1.05 Mб
Скачать

5.

6.Эффективным алгоритмом определения линейной сложности конечной двоичной последовательности является алгоритм Берлекемпа-Месси.

1.5.3. Потоковые шифры основанные на РСЛОС. Усложнение

К сожалению, выходная последовательность РСЛОС легко предсказуема. Так, зная 2L знаков выходной последовательности, легко найти исходное заполнение регистра, решив систему линейных уравнений (см. пункт «Потоковые шифры на регистрах сдвига с линейной обратной связью»).

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

большой период;

высокую линейную сложность;

хорошие статистические свойства.

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

1.использование нелинейной функции, объединяющей выходы нескольких РСЛОС;

2.использование нелинейной фильтрующей функции для содержимого каждой ячейки единственного РСЛОС;

3.использование выхода одного РСЛОС для управления синхросигналом одного (или нескольких) РСЛОС.

19

Нелинейная комбинация генераторов

 

Известно,

что

каждая

Булева

функция

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

функции называется максимальный порядок членов в записи её алгебраической нормальной формы.

Например, Булева функция

имеет нелинейный порядок 3. Максимально возможный нелинейный порядок Булевой функции равен количеству переменных

Предположим теперь, что у нас регистров сдвига с

линейной обратной связью, их длины попарно различны и больше двух. Все регистры объединены

нелинейной функцией , как показано на

рис. 4. Функция представлена в алгебраической нормальной форме. Тогда линейная сложность потока ключей равна

.

Рис. 4. регистров сдвига с линейной обратной связью

20

Если

– попарно взаимно-простые

числа, то длина

периода ключевого потока

равна:

 

.

Например,

если

, то . И длина периода ключевого потока равна .

Пример: генератор Геффа (Рис. 5):

Рис. 5. Генератор Геффа

В этом генераторе используются три РСЛОС, объединённые нелинейным образом. Длины этих регистров

попарно простые числа.

Нелинейную функцию для данного генератора можно записать следующим образом:

Длина периода:

Линейная сложность: Генератор Геффа криптографически слаб, потому что

информация о состояниях генераторов РСЛОС 1 и РСЛОС 3

21

содержится в его выходной последовательности. Для того

чтобы понять это, обозначим -е выходные биты РСЛОС 1,2,3 и потока ключей, соответственно.

Тогда корреляционная вероятность последовательности по отношению к последовательности :

Аналогично, По этой причине, несмотря на длинный период и

достаточно высокую линейную сложность, генератор Геффа поддаётся корреляционным атакам.

Генераторы на нелинейных фильтрах

Выход каждой ячейки подаётся на вход некоторой нелинейной булевой фильтрующей функции (рис. 6).

Рис. 6. Генератор на нелинейных фильтрах

Предположим, что фильтрующая функция порядка , тогда линейная сложность потока ключей не больше

.

22

Генераторы основанные на управлении синхросигналом

В нелинейных комбинациях генераторов и генераторах на нелинейных фильтрах перемещение данных во всех РСЛОС контролируется одним синхросигналом.

Основная идея функционирования рассматриваемого типа генераторов – внести нелинейность в работу генераторов потока ключей, основанных на РСЛОС, путём управления синхросигналом одного регистра выходной последовательностью другого.

Есть 2 типа генераторов основанных на управлении синхросигналом:

1.генератор переменного шага;

2.сжимающий генератор.

Генератор переменного шага

Основная идея:

РСЛОС 1 используется для управления передвижением битов двух других РСЛОС 2 и 3 (рис. 7).

Рис. 7. Генератор переменного шага

Алгоритм работы:

1.Регистр РСЛОС 1 синхронизован внешним синхросигналом;

2.Если на выходе регистра РСЛОС 1 единица, то на регистр РСЛОС 2 подаётся синхросигнал, а РСЛОС 3

23

повторяет свой предыдущий выходной бит (для начального момента времени предыдущий выходной бит РСЛОС 3 принимается равным 0);

3.Если на выходе регистра РСЛОС 1 ноль, то на регистр РСЛОС 3 подаётся синхросигнал, а РСЛОС 2 повторяет свой предыдущий выходной бит (для начального момента времени предыдущий выходной бит РСЛОС 2 также принимается равным 0);

4.Выходная последовательность битов генератора с переменным шагом является результатом применения операции побитового исключающего ИЛИ к выходным последовательностям регистров РСЛОС 2 и РСЛОС 3.

Увеличение безопасности генераторов с переменным шагом:

длины регистров РСЛОС 1, РСЛОС 2, РСЛОС 3 должны быть выбраны попарно простыми числами;

длины этих регистров должны быть близкими

числами.

Сжимающий генератор

Контролирующий регистр РСЛОС 1 используется для управления выходом РСЛОС 2 (рис. 8).

Рис. 8. Сжимающий генератор

24

Алгоритм:

1.Регистры РСЛОС 1 и РСЛОС 2 синхронизованы общим синхросигналом;

2.Если выходной бит РСЛОС 1 равен 1, выход генератора формируется выходным битом регистра РСЛОС 2;

3.Если выходной бит РСЛОС 1 равен 0, выходной бит регистра РСЛОС 2 отбрасывается.

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

Для увеличения безопасности сжимающего генератора: длины регистров РСЛОС 1 и РСЛОС 2 должны быть

взаимно простыми числами; желательно использовать скрытое соединение между

регистрами РСЛОС 1 и РСЛОС 2.

1.6. Сеть Фейстеля

Сеть Фейстеля — один из методов построения блочных шифров. Сеть представляет собой определённую многократно повторяющуюся (итерированную) структуру, называющуюся ячейкой Фейстеля. При переходе от одной ячейки к другой меняется ключ, причём выбор ключа зависит от конкретного алгоритма. Операции шифрования и расшифровки, выполняемые на каждом этапе, очень просты, и при определённой доработке совпадают, требуя только обратного порядка используемых ключей. Сеть Фейстеля легко реализовать как программно, так и аппаратно, что обеспечивает ей широкие возможности применения. Большинство современных блочных шифров используют сеть Фейстеля в качестве основы. Альтернативой сети Фейстеля является подстановочно-перестановочная сеть

25

1.6.1. Конструкция блочного шифра на основе сетей Фейстеля

1.6.1.1. Простое описание

Шифрование

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

Алгоритм шифрования (рис. 9, а):

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

Выбранный блок делится на два равных подблока — «левый» () и «правый» ().

«Левый подблок» видоизменяется функцией

в зависимости от раундового ключа , после чего он складывается по модулю 2 с «правым подблоком» .

Результат сложения присваивается новому левому подблоку , который будет половиной входных данных для следующего раунда, а «левый подблок» присваивается без изменений новому правому подблоку

(см. схему), который будет другой половиной.

После чего операция повторяется N-1 раз. При этом между переходами от одного этапа к другому по какому-либо математическому правилу меняются

раундовые ключи ( на и т. д.), где N — количество раундов в заданном алгоритме.

26

Расшифрование

Расшифровка информации происходит так же, как и шифрование (рис. 9, б), с тем лишь исключением, что ключи идут в обратном порядке, то есть не от первого к N-ному, а от N-го к первому.

а) Шифрование б) Расшифрование

Рис. 9. Алгоритм шифрования (а) и алгоритм расшифрования (б)

Алгоритмическое описание

Блок открытого текста делится на 2 равные части:

.

В каждом раунде вычисляется ( — номер раунда)

,

где — некоторая функция, а ключ -го раунда.

27

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

,

Небольшим изменением можно добиться и полной идентичности процедур шифрования и расшифрования.

Преимущества такой модели:

обратимость алгоритма независимо от используемой функции ; функция может быть сколь угодно сложной.

Функции, используемые в сетях Фейстеля

В своей работе «Криптография и Компьютерная безопасность» Хорст Фейстель описывает два различных блока

преобразований (функций ) — блок подстановок (S-блок) и блок перестановок (P-блок) (рис. 10, 11). Можно показать, что любое двоичное преобразование над двоичным блоком фиксированной длины, сводятся к S-блоку, но на практике в силу сложности строения n-разрядного S-блока при больших n, применяют более простые конструкции.

Термин «блок» в оригинальной статье используется вместо функции вследствие того, что речь идёт о блочном шифре и предполагалось, что S- и P-блоки будут цифровыми микросхемами (цифровыми блоками).

28