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

все лекции

.pdf
Скачиваний:
84
Добавлен:
13.03.2016
Размер:
9.73 Mб
Скачать

Функциональная схема РЕЖИМА ГАММИРОВАНИЯ приведена на

рисунке 6.4.

``

Тшi

 

 

 

 

СМ5

Тоi

 

 

 

входной 64-разрядный

 

Накопитель N6

 

 

Накопитель N5

32-разрядная константа С1

 

32-разрядная константа С2

32…

 

 

 

…1

32…

 

 

 

 

…1

 

Сумматор СМ4

 

 

 

 

 

 

 

 

 

 

Сумматор СМ3

 

32…

 

 

 

'

 

 

 

 

 

 

'

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

…1

 

 

 

 

 

 

 

 

 

 

 

32…

 

 

 

 

…1

 

Накопитель N4

 

 

Накопитель N3

32…

 

 

 

…1

32…

 

 

 

 

…1

~

 

 

S

Накопитель N2

Накопитель N1

 

Схема режима простой замены

Рисунок 6.4 – Функциональная схема для режима гаммирования

На рисунке символ ' - операция сложения двух 32-разрядных чи-

сел «по модулю 232 – 1».

Число двоичных разрядов в блоке Т0m (m номер последнего блока) мо-

6

жет быть меньше 64, при этом неиспользованная для зашифрования

часть гаммы шифра из блока ГШm отбрасывается.

Правила суммирования чисел «по модулю 232 – 1»:

а ' в = а + в, если (а + в) < 232 – 1;

а '

в = а + в – (232 – 1), если (а + в) (232 – 1).

(6.7, 6.8)

 

 

Гамма шифра определяется

:

 

Г

= A(Y

' C , Z

i–1

' C ), i = 1, …, m,

(6.9)

шi

i–1

2

1

 

где А(…) функция зашифрования в режиме простой замены;

Yi, Zi 32-разрядные двоичные последовательности.

Значения Yi, Zi определяются итерационно по мере формирования

гаммы Гш следующим образом:

 

(Y0, Z0) = А( S~ ),

(6.10)

~

 

 

 

 

 

(64-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

где S

синхропосылка

разрядная двоичная последовательность

);

 

(Y , Z ) = (Y

i–1

' C , Z

' C ),

i = 1, …, m.

(6.11)

 

i i

 

2 i–1

1

 

 

 

 

 

 

 

 

 

 

64-

 

 

То есть,

в накопители

N1, N2

вводится

разрядная двоичная по-

 

 

 

 

 

 

 

 

 

 

 

 

~

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

следовательность

(синхропосылка) S = (S1, S2, …, S64).

 

 

 

 

 

 

 

 

~

 

 

 

 

 

N1, N2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Синхропосылка

S в накопителях

зашифровывается в режи-

ме простой замены: А( ~ ) = (Y0, Z0) и переписывается в накопители:

S

N1 в N3, а N2 в N4.

Содержимое N3 и N4 суммируется в CM3 и CM4 с константами C2

и C1 соответственно, и результаты записываются в N3 и N4.

Далее заполнение N3 и N4 переписывается в N1 и N2 соответственно с

7

сохранением данных в N3 и N4.

Заполнение N1 и N2 зашифровывается в режиме простой замены,

образуя 64-разрядный блок гаммы шифра.

Для получения следующего блока ГШ, содержание накопителей N3

и N4 опять суммируется со своими константами, и далее процесс по-

вторяется.

В канал связи передаются блоки зашифрованных данных Тшi и

~

синхропосылка S .

СИНХРОПОСЫЛКА не является секретным элементом шифра и

может передаваться по каналу связи вместе с зашифрованными данными.

Функциональная схема РЕЖИМА ГАММИРОВАНИЯ С

ОБРАТНОЙ СВЯЗЬЮ приведена на рисунке 6.5.

8

ТШi

Тш (i-1)

 

СМ

Тoi

 

 

 

 

Гшi

N2

N1

 

 

 

 

 

 

Схема режима простой замены

Рисунок 6.5 – Функциональная схема для режима гаммирования с обрат-

ной связью

 

Уравнения зашифрования имеют вид:

 

 

 

 

Т

= А( ~ ) Т

01

= Г

ш1

Т ;

(6.12, 6.13)

 

ш1

 

 

S

 

01

 

 

 

 

Тшi = А[Tш(i–1)] T0i = Гшi T0i, i = 2, …, m.

 

 

 

 

 

 

 

 

Аргументом функции

А(…)

на первом шаге

итеративного алгоритма

 

 

 

64-

 

 

 

 

 

 

~

 

 

является

разрядная синхропосылка

на всех последующих ша-

S ,

гах предыдущий блок зашифрованных данных Тш(i–1) .

РЕЖИМ ВЫРАБОТКИ ИМИТОВСТАВКИ блока из P бит, ко-

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

с использованием ключа и затем добавляется к зашифрованным дан-

9

ным, предназначен для обеспечения их имитозащиты.

ИМИТОЗАЩИТА защита системы от навязывания ложных данных.

Имитовставка ИР вырабатывается из блоков открытых данных

либо перед шифрованием сообщения, либо параллельно с шифрованием по блокам.

Первые блоки данных со служебной информацией могут не за-

шифровываться (адрес, время, синхропосылка).

Число двоичных разрядов Р в имитовставке определяется крипто-

графическими требованиями с учётом того, что вероятность навязы-

1

вания ложных помех равна 2P .

Первый блок Т01 подвергается преобразованию ~ (…), соответ-

A

ствующему первым 16 циклам алгоритма шифрования в режиме простой замены.

Полученное после 16 циклов 64-разрядное число ~ (Т01) суммируется

A

«по модулю 2» со вторым блоком открытых данных Т02. И так далее.

Последний блок Т0m (дополненный нулями до 64 бит) суммируют «по

модулю с результатом на шаге (m – 1), после чего зашифровывают

в режиме простой замены, используя преобразование ~ (…).

A

Из полученного 64-разрядного числа выбирают отрезок ИР (ими-

товставку) длиной P бит:

10

 

 

 

 

 

 

 

 

,

И p a32 p 1,m 16 ,

a32 p 2,m 16

, ,

a32,m 16

 

 

 

 

 

 

 

 

где ai ,m i-й бит 64-разрядного числа, полученного после 16-го цикла послед-

него преобразования A~ (…); (32 – Р + 1) i 32.

ИМИТОВСТАВКА ПЕРЕДАЕТСЯ по каналу связи в конце зашиф-

рованных данных.

Получатель после расшифровки по блокам открытых данных

аналогичным образом вырабатывает имитовставку И p , которая и

сравнивается с полученной по каналу связи И р .

При несовпадении, расшифрованные блоки данных считаются ложными.

6.2 Поточные шифры

Они преобразуют открытый текст в шифротекст по одному биту за операцию [5, 14].

Поточные шифры, в отличие от блочных, осуществляют поэлементное

шифрование потока данных без задержки в криптосистеме. Их важнейшее

достоинство – высокая скорость преобразования, соизмеримая со скоро-

стью поступления входной информации. То есть обеспечивается шифрование практически в реальном масштабе времени вне зависимости от объёма и разряд-

ности потока преобразуемых данных.

Генератор потока ключей (генератор с бегущим ключом) выдаёт по-

ток битов k1, k2, …, ki.

Этот поток и поток битов открытого текста p1, p2, …, pi под-

11

вергаются операции XOR, давая биты шифротекста:

 

Ci = pi ki.

(6.14)

 

 

 

 

 

 

 

 

 

 

При дешифровании

операция XOR

выполняется с тем же самым

 

 

 

 

 

 

 

 

потоком ключей

:

 

 

 

 

 

 

 

 

pi = Ci ki.

(6.15)

 

 

 

 

 

 

 

Здесь рi Ci = ki.

Если

ki

строка нулей

,

шифротекст совпадет с

открытым текстом, что бессмысленно.

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

Поточные шифры больше подходят для аппаратной реализации,

а блочные – для программной (удобство манипулирования с битами или бло-

ками данных).

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

Регистр сдвига генерирует ключевую последовательность: новый

крайний левый бит является функцией всех остальных битов реги-

стра.

Период регистра длина получаемой последовательности до начала её повторения.

Простейший вариант – регистр сдвига с линейной обратной связью (РС

ЛОС), рисунок 6.6.

Так как здесь обратная связь – это операция ХОR некоторых битов реги-

стра, эти биты называются отводной последовательностью.

12

bn

bn-1

b...

b3

b2

b1

 

 

 

 

 

выходной бит

 

 

 

+

 

 

Рисунок 6.6 – Регистр сдвига с линейной обратной связью

6.3 Ключи в асимметричной криптосистеме RSA

Криптосистема RSA (по первым буквам фамилий создателей) предложена

в 1977 году и является наиболее распространённой криптосистемой и

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

основана на трудоёмкости разложения на множители (факторизации)

больших чисел.

Алгоритм основан на математических положениях и понятиях (ниже). Натуральное число – результат счёта конечного числа предметов.

Простое число – натуральное число p > 1, натуральными делителями которого являются только два числа: 1 и р.

Согласно малой теореме Ферма, если р – простое число, то для любого х, взаимно простого с р (взаимно простые числа – целые числа, не имеющие общих (простых) делителей, т.е., х не делится на р), справедливо

xp–1 1(mod p), – { xp–1 сравнимо с 1 по (mod p)} – а также xp x(mod p).

Функция (n) натурального аргумента n, равная количеству положительных целых чисел,

меньших n и взаимно простых с n, называетсяся функцией Эйлера. Для неё справедливы соотно-

шения: (1)=1; (pr) = pr–1(p–1); (ab)= (a) (b), где р – простое, r, a и b натуральные, (a, b)=1.

Это позволяет легко вычислить (n), когда известно разложение n на простые множители. Ес-

ли натуральное число е (это не основание натурального алгоритма!) удовлетворяет условию [e,(n)]=1, то существует единственное натуральное число d< (n), для которого справедливо de 1[mod

(n)].

Если n=pq, где p и q – большие различные простые числа, и [x, (n)]=1, то согласно т. Эйлера

для любого натурального x выполняется сравнение xed(mod n), и следовательно, xed(mod n)=x при условии x<n.

**********

Два целых числа a и b сравнимы по модулю натурального числа n (или равноостаточны при делении на n), если при делении на n они дают одинаковые остатки. Число n называется модулем сравнения.

Эквивалентные формулировки: a и b сравнимы по модулю n, если их разность a - b делится на n без остатка, или если a может быть представлено в виде a = b + kn, где k – некоторое целое число. Например: 32 и −10 сравнимы по модулю 7, так как: 32 = 7 4 + 4 и –10 = 7 (–2) + 4. Утверждение «a и b сравнимы по модулю n» записывается в виде: a b(mod n).

Сравнения первой степени

13

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

Решение такого сравнения начинается с вычисления НОД (a, m)=d. При этом возможны 2 слу-

чая:

Если b не кратно d, то у сравнения нет решений.

Если b кратно d, то у сравнения существует единственное решение по модулю m / d, или, что то же самое, d решений по модулю m. В этом случае в результате сокращения исходного сравнения на d получается сравнение:

где a1 = a / d, b1 = b / d и m1 = m / d

являются целыми числами, причём a1

и m1 взаимно просты.

Поэтому число a1 можно обратить

по модулю m1, то есть найти

такое число c, что

(другими словами, ). Теперь решение находится умножением полученного сравнения на c:

Практическое вычисление значения c можно осуществить разными способами: с помощью теоремы Эйлера, алгоритма Евклида, теории цепных дробей (см. алгоритм) и др. В частности, теорема Эйлера позволяет записать значение c в виде:

Пример

Для сравнения имеем d = 2, поэтому по модулю 22 сравнение имеет два решения. Заменим 26 на 4, сравнимое с ним по модулю 22, и затем сократим все 3 числа на 2:

Поскольку 2 взаимно просто с модулем 11, то его можно обратить по модулю 11 и найти

.

Умножая сравнение на 6, получаем решение по модулю 11:

,

эквивалентное совокупности двух решений по модулю 22:

и

.

********************

 

Открытый и секретные ключи являются функциями двух боль-

ших (100 200 и более разрядов) простых чисел. Задача восстановления от-

рытого текста по шифротексту и открытому ключу эквивалентна задаче факторизации.

ДЛЯ ГЕНЕРАЦИИ парных ключей используются два больших слу-

чайных простых числа p и q, выбранных равной длины для криптостойко-

сти. При этом:

а) вычисляется произведение n = pq;

б) случайным образом выбирается ключ шифрования е (это не осно-

вание натурального алгоритма!), такой, что е взаимно простое число с (p – 1)(q

14

1) ;

в) для нахождения (вычисления) ключа дешифрования d использу-

ется алгоритм еd 1 [mod (p – 1)(q – 1)] (ed сравнимо с 1 по модулю (p

1)(q – 1), или:

 

d = е–1 [mod (p – 1)(q – 1)],

(6.16)

где d и n простые числа.

д) ОТКРЫТЫЙ КЛЮЧ зашифрования числа n, e;

е) ЗАКРЫТЫЙ КЛЮЧ РАСШИФРОВАНИЯ числа p, q, и d (хра-

нятся в секрете).

Для шифрования сообщения m его разбивают на блоки, каждый из

которых меньше n: для двоичных данных выбирается самая большая степень числа 2, меньшая n.

То есть, если p и q – это 100-разрядные простые числа, то n будет содержать около 200 разрядов. И каждый блок сообщения mi должен иметь такое же число разрядов.

Зашифрованное сообщение C будет состоять из блоков Сi той же длины.

Шифрование сводится к вычислению:

 

Ci mi e ( mod n) .

(6.17)

 

 

 

 

 

При дешифровании для каждого зашифрованного блока

Сi

вы-

 

 

 

 

числяется

:

 

 

 

 

mi Ci d ( mod n) .

( 6.18)

 

 

 

15