Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Основы криптографии. Учебное пособие.pdf
Скачиваний:
0
Добавлен:
12.08.2026
Размер:
706 Кб
Скачать

ГЛАВА 6 Принципы построения симметричных шифров

Принципы построения поточных шифров. Принципы построения блочных шифров.

6.1. Принципы построения поточных шифров

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

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

ляющий блок в данном случае является распределителем.

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

y = (x + g)(mod 2)= xXORg .

Для этой операции также используют обозначение x g.

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

48

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

Одним из распространенных методов построения псевдослучайной последовательности является использование генераторов псевдослучайных чисел (ПСЧ). Рассмотрим частный случай генератора ПСЧ – линейный конгруэнтный генератор.

Определение 6.1

Линейным конгруэнтным генератором ПСЧ называется алгоритм,

генерирующий периодическую последовательность псевдослучайных чисел {gi}, описываемых соотношением:

gi+1 = (a gi +c)(mod 2k ),

где g0 – порождающая величина;

a, с, k – константы, задающие параметры алгоритма.

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

Для линейного конгруэнтного генератора ПСЧ известно, что период последовательности будет максимальным, если c – нечетное число, а число a удовлетворяет условию a(mod 4) = 1.

Большинство генераторов ПСЧ построено на основе линейных реги-

стров сдвига с обратной связью (Linear Feedback Shift Register LFSR). Они получили широкое распространение благодаря тому, что используют только простейшие операции сложения и умножения, реализованные практически на всех вычислительных средствах, вследствие чего алгоритмы, построенные на их основе, отличаются высоким быстродействием.

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

49

Определение 6.2

Последовательность чисел g0, g1, g2, … называется линейной рекуррентной последовательностью порядка m>0 над полем P, если существуют m чисел f0, f1, f2, …, fm-1 из P, таких, что

gi+m = m1 f jgi+ j ; i=1,2,…

j=0

Начальный отрезок линейной рекуррентной последовательности длины m g0,g1,…,gm-1 называется начальным заполнением линейного регистра сдвига.

Рассмотрим схему линейного регистра сдвига (рис. 6.1).

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

×

 

 

×

 

 

×

 

 

×

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Накопитель,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

f0

 

 

f1

 

 

f2

 

 

 

fm-1

 

 

 

 

 

 

 

 

 

 

 

 

 

состоящий из m

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

+

)

Сумматор

Рис. 6.1. Схема линейного регистра сдвига

Перед началом работы LFSR ячейки накопителя заполняются m элементами начального заполнения линейной рекуррентной последовательности g0, g1,…, gm-1. Начальное заполнение LFSR определяется секретным ключом.

На очередном такте работы LFSR значения, содержащиеся в ячейках накопителя, умножаются на соответствующие коэффициенты f0, f1,…, fm-1, называемые отводами. Результаты умножения суммируются, и полученная сумма записывается в крайнюю правую ячейку накопителя. В это время все значения в накопителе сдвигаются влево на одну ячейку, чтобы освободить место новому значению. В результате значение, которое находилось в крайней левой ячейке, выталкивается из накопителя и становится

50

очередным элементом сгенерированной линейной рекуррентной последовательности.

Следует отметить, что операции умножения и сложения выполняются в том поле, элементами которого являются значения линейной рекуррентной последовательности. Если мы говорим о бинарных последовательностях, в качестве сложения выступает операция сложения по модулю 2 (то есть «исключающее ИЛИ» (XOR)).

6.2. Принципы построения блочных шифров

Если длина шифрвеличины в шифре замены отличается от единицы, такой шифр называется блочным. Как правило, множеством шифрвеличин в блочных шифрах является множество двоичных векторов фиксированной длины 64, 128, 256 и так далее.

Два общих принципа, применяемых к построению блочных шифров, носят названия перемешивания и рассеивания.

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

Такими базовыми преобразованиями являются следующие группы преобразований.

1.Бинарные математические операции: сложение, исключающее ИЛИ, умножение по модулю 2N.

2.Битовые правый и левый сдвиги, в том числе циклические.

3.Табличные замены.

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

51

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

 

 

 

 

 

 

шифруемый блок

 

 

 

 

 

 

на i-1 итерации

Li-1

Ri-1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

fi

ki

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

блок ключа

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Li

 

Ri

 

шифруемый блок

 

 

 

 

 

 

 

 

 

 

 

 

на i итерации

 

 

 

 

 

 

Рис. 6.2. Одна итерация алгоритма шифрования, основанного на архитектуре «сеть Фейстеля»

Основной принцип алгоритма состоит в том, что шифруемый блок делится на два полублока: левый L и правый R. Правый полублок зашифровывается на ключе k с использованием функции f. К результату шифрования применяется побитовое сложение по модулю 2 с левым полублоком. Исходный же правый полублок становится левым. Функция f может быть одной и той же для всех итераций алгоритма, а может зависеть от номера итерации.

Шифрующее преобразование, реализуемое сетью Фейстеля на i-той итерации, имеет вид:

 

 

Li = Ri 1;

 

).

R

= L

f

(R

, k

 

i

i 1

i

i 1

i

 

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

52

второго соотношения Li-1 и подставим Li вместо Ri-1, то получим обратное преобразование, не обращая функцию fi:

L

= R

f

(L

, k

);

 

i 1

i

i

i

i

 

 

 

Ri 1 = Li .

 

 

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

53