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

Рацеев.Лабораторные по криптографии

.pdf
Скачиваний:
124
Добавлен:
18.04.2015
Размер:
921.63 Кб
Скачать

Федеральное агентство по образованию

Форма

 

Ульяновский государственный университет

 

 

 

 

 

 

«Криптографические методы защиты информации»

 

 

 

 

 

Li Ri 1

 

 

Ri Li 1 f Ri 1, ki

 

 

Функция f действует по следующему правилу. Сначала правый блок Ri 1

складывается по модулю 232 с подключом ki . Полученное 32-битовое сообщение

делится на восемь 4-битовых частей. Каждое из этих 4-битовых чисел преобразуется

соответствующим S-блоком в другое 4-битовое число. Поэтому любой S-блок

определяется некоторой 16-битовой перестановкой на множестве из 16 элементов 0, 1,

..., 15. Например, в Центробанке использовались следующие S-блоки:

S1 = (4 10 9 2 13 8 0 14 6 11 1 12 7 15

5

3),

S2 = (14 11 4

12 6 13 15 10 2 3 8 I 0

7

5

9),

S3

= (5 8 1 13 10

3

4

2 14

15 12 7 6 0

9

11),

S4 = (7 13 10

I 0

8

9

15

14 4 6 12 11 2 5 3),

S5

= (6 12 7 1 5 15

13 8

4

10 9 14 0 3 11 2),

S6

= (4 11 10

0

7

2 1 13

3

6 8 5

9

12 15 14),

S7 = (13 11 4

1

3

15 5 9

0

10 14

7

6 8 2 12),

S8 = (l 15 13 0 5 7 10 4 9 2 3 14 6 11 8 12).

После преобразования S-блоками полученное 32-битовое сообщение сдвигается циклически влево на 11 позиций.

Ключевое расписание. Исходный 256-битовый ключ делится на восемь 32-битовых подключей ki , i 1,8, они используются в 32 тактах в следующем порядке: 1 2 3 4 5 6 7

8 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 8 7 6 5 4 3 2 1. При расшифровании порядок использования подключей меняется на противоположный.

Варианты заданий.

1.Реализовать шифр ГОСТ 28147-89 в режиме простой замены.

2.Реализовать шифр ГОСТ 28147-89 в режиме гаммирования.

3.Реализовать шифр ГОСТ 28147-89 в режиме гаммирования с обратной связью.

4.Реализовать шифр ГОСТ 28147-89 в режиме выработки имотовставки (имитовставка вырабатывается с помощью «усеченного» 16-раундового алгоритма ГОСТ, при этом вектор имитовставки – это 32 младших бита последнего блока шифртекста).

Форма А

Страница 11из 24

Федеральное агентство по образованию

Форма

 

Ульяновский государственный университет

 

 

 

 

 

 

«Криптографические методы защиты информации»

 

 

 

 

 

Лабораторная работа 6 Генерация простого большого числа.

Цель работы

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

Указание к работе

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

Конкретно для реализации алгоритма RSA используются большие простые числа. Простых чисел не так мало, как кажется, например, существует приблизительно 10151 простых чисел длиною от 1 бита до 512 включительно. Для чисел близких n, вероятность того, что выбранное число окажется простым, равна 1/ln n. Поэтому полное число простых чисел, меньших n равно n/ln n. Считается, что вероятность выбора двумя людьми одного и того же большого простого числа пренебрежимо мала.

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

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

Тест Rabin-Miller

Выберите для проверки случайное число p. Вычислите b как наибольшее число делений p-1 на 2 т.е. 2b – наибольшая степень числа 2, на которое делится p-1. Затем вычислите m, такое, что p=1+2b m

Выберите случайное число a, меньшее p. Установите j=0 и z=am mod p

Если z=1 или если z=p-1, то p проходит проверку и может быть простым числом.

Если j>0 и z=1, то p не является простым числом. Установите j=j+1.

Если j<b и z<p-1, установите z=z2 mod p и вернитесь на .

Если z=p-1, то p проходит проверку и может быть простым числом.

Форма А

Страница 12из 24

Федеральное агентство по образованию

Форма

 

Ульяновский государственный университет

 

 

 

 

 

 

«Криптографические методы защиты информации»

 

 

 

 

 

Если j=b и z p-1, то p не является простым числом. Повторить эту проверку нужно t раз.

Доказано, что в этом тесте вероятность прохождения проверки составным числом убывает быстрее, чем в прочих. Гарантируется, что 75% возможных значений а окажутся показателями того, что выбранное число p составное. Это значит, что вероятность принять составное число p за простое не превышает величины (¼)t.

Генерация простого числа

Сгенерируйте случайное n-битовое число p.

Установите его старший и младший биты равными 1. Старший бит будет гарантировать требуемую длину искомого числа, а младший бит обеспечивает его нечетность.

Убедитесь, что p не делится на небольшие простые числа: 3, 5, 7, 11 и т.д. Наиболее эффективной является проверка на делимость для всех простых чисел, меньших 2000.

Выполните тест Rabin-Miller минимум 5 раз.

Если p не прошло хотя бы одну проверку из или , оно не является простым. Проверка, что случайное нечетное p не делится на 3, 5 и 7 отсекает 54%

нечетных чисел. Проверка делимости на все простые числа, меньшие 256 отсекает 80% составных нечетных чисел.

Даже, если составное число «просочилось» через этот алгоритм, это будет сразу же замечено, т.к. шифрование и дешифрование не будут работать.

Задание

Реализовать программу, генерирующую простые числа.

1.Предусмотреть возможность выдачи всех простых чисел в заданном диапазоне.

2.Выдавать время, затраченное на вычисление простых чисел.

Форма А

Страница 13из 24

Федеральное агентство по образованию

 

Форма

 

Ульяновский государственный университет

 

 

 

 

 

 

 

 

 

«Криптографические методы защиты информации»

 

 

 

 

 

 

 

Лабораторная работа 7

 

 

Построение первообразного корня по модулю n

Цель работы

 

 

Ознакомится с теоремой Эйлера, а также построить первообразные корни по

модулю n.

 

 

Указание к работе

 

 

В силу теоремы Эйлера, для любых взаимно простых а и n выполняется

соотношение:

 

 

a (n) 1 mod n,

(9.1)

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

(p)=p-1,

Если предположить, что два числа p и q простые, тогда для n=p *q функция Эйлера

будет иметь вид

 

(n)= (p *q )= (p )* (q )=[(p-1) p -1]*[(q-1)q -1].

(9.2)

Рассмотрим более общее соотношение, чем (9.1). Говорят, что число a, взаимно простое с модулем n, принадлежит показателю m, если m – такое наименьшее

натуральное число, что выполняется сравнение

 

 

am

1 mod n.

(9.3)

Если а и n являются взаимно простыми, то существует, по крайней мере, одно число m= (n), удовлетворяющее (9.3). Наименьшее из положительных чисел m, для которых выполняется (9.3), является длиной периода последовательности, генерируемой степенями а.

Справедливы следующие свойства.

Свойство 1. Числа a0, a1,… ,am-1 попарно несравнимы по модулю n. Действительно, al

ak mod n, l > k al-k 1 mod n, где l – k , l – k < m.

Свойство 2. a a mod n ’ mod m. Разделим , на m с остатками

= mq + r, ’ = mq’ + r’. Тогда a a amq+r amq’+r’ ar ar’ r’=r. Отсюда вытекает следующее свойство.

Свойство 3. m| (n). Число, принадлежащее показателю (n), называется

первообразным корнем по модулю n.

Свойство 4. По любому простому модулю p существует первообразный корень.

Первообразные корни существуют по модулям 2, 4, p , 2p , где p – нечетное простое,

.

Свойство 5. Пусть c = (n) и q1, q2,…, qk – различные простые делители числа c. Число a, взаимно простое с модулем n, будет первообразным корнем тогда и только тогда, когда не выполнено ни одно из следующих сравнений:

ac / q1 1mod n, ac / q2 1mod n,..., ac / qk 1mod n

Необходимость следует из того, что a (n) 1 mod n и сравнение не имеет места при меньших показателях степени. Обратно, допустим, что a не удовлетворяет ни одному из сравнений, и пусть a принадлежит показателю m < c. Тогда m|c c=mn.

Форма А

Страница 14из 24

Федеральное агентство по образованию

Форма

 

Ульяновский государственный университет

 

 

 

 

 

 

«Криптографические методы защиты информации»

 

 

 

 

 

Обозначим через q простой делитель u. Тогда легко получить противоречие: ac/q= amu/q =( am)u/q 1 mod n.

Если некоторая последовательность имеет длину (n), тогда целое число а генерирует своими степенями множество всех ненулевых вычетов по модулю n. Такое целое число называют первообразным корнем числа а по модулю n. Количество их равно для числа n

(n-1),

(9.4)

где - функция Эйлера.

Пример (Проверка Свойства 5.). Пусть n=41. Имеем c = (41) = 40 = 23 5. Итак,

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

a 8 1(mod41),

a20 1(mod41).

 

Испытаем числа 2, 3, 4, …: 28 10, 220 1,

38 1, 48 18, 420 1, 58 18,

520 1, 68

10, 620 40. Отсюда видим, что 6 является наименьшим первообразным корнем по модулю 41.

Задание

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

Форма А

Страница 15из 24

Федеральное агентство по образованию

Форма

 

Ульяновский государственный университет

 

 

 

 

 

 

«Криптографические методы защиты информации»

 

 

 

 

 

Лабораторная работа 8 Обмен ключами по схеме Диффи-Хеллмана

Цель работы

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

Указание к работе

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

дискретных логарифмов.

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

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

 

 

абонент A

 

 

 

абонент B

 

 

 

YA

YB

 

 

 

Y

A

a X A mod q, a q

Y

B

a X B mod q, a q

 

 

 

 

 

 

 

 

K Y X A mod q

 

 

K Y X B mod q

 

 

B

 

 

 

 

A

a, q общедоступны

 

 

a, q общедоступны

K общий _ ключ

 

 

К общий _ ключ

 

 

 

 

 

 

 

 

Рис. Обмен ключами по схеме Диффи - Хеллмана.

Алгоритм заключается в следующем:

1.Глобальные открытые элементы: q - простое число

a - первообразный корень q

2.Вычисление ключа абонентом A:

Форма А

Страница 16из 24

Федеральное агентство по образованию

Форма

 

Ульяновский государственный университет

 

 

 

 

 

 

«Криптографические методы защиты информации»

 

 

 

 

 

выбирается секретное число XA (XA< q)

вычисление открытого значения YA: YA a X A (mod q)

3.Вычисление ключа абонентом B:

выбирается секретное число XB (XB< q)

вычисление открытого значения YB: YB a X B (mod q)

4.Вычисление секретного ключа абонентом A: K (YB ) X A (mod q)

5.Вычисление секретного ключа абонентом B: K (YA ) X B (mod q)

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

Пример:

Пусть q = 97 и a = 5

Абонент A: Сгенерировал случайное число XA = 36

Абонент B: Сгенерировал случайное число XB = 58

Эти элементы они держат в секрете. Далее каждый из них вычисляет новый

элемент:

Y 536

(mod 97) 50

,

Y 558

(mod 97) 44

 

A

 

 

B

 

Потом они обмениваются этими элементами по каналу связи. Теперь абонент A, получив YB и зная свой секретный элемент XA, вычисляет общий ключ:

K A 4436 (mod 97) 75 .

Аналогично поступает абонент B: KB 5058 (mod 97) 75

Задание

Реализовать программу, генерирующую алгоритм обмена ключей по схеме ДиффиХеллмана.

Форма А

Страница 17из 24

Федеральное агентство по образованию

Форма

 

Ульяновский государственный университет

 

 

 

 

 

 

«Криптографические методы защиты информации»

 

 

 

 

 

Лабораторная работа 9

Шифр RSA

Цель работы

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

Указание к работе

Алгоритм RSA был разработан в 1977 году Роном Ривестом, Ади Шамиром и Леном Адлеманом и опубликованный в 1978 году. С тех пор алгоритм Rivest-Shamir- Adleman (RSA) широко применяется практически во всех приложениях, использующих криптографию с открытым ключом.

Алгоритм RSA состоит из трех этапов:

I. Вычисление ключей

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

1.Выбираются два простых РАЗЛИЧНЫХ числа p и q. Вычисляется их произведение n=p*q, называемое модулем.

2.Вычисляется функция Эйлера Ф(n)=(p - 1)*(q - 1).

3.Выбирается произвольное число e (e <n), такое, что 1< e <Ф(n) и не имеет общих

делителей кроме 1 (взаимно простое) с числом

(p - 1)*(q - 1).

4.Вычисляется d методом Евклида таким образом, что (e*d - 1) делится на (p - 1)*(q - 1).

5.Два числа (е, n) - публикуются как открытый ключ.

6.Число d хранится в секрете - закрытый ключ есть пара (d, n), который позволит читать все послания, зашифрованные с помощью пары чисел (е, n).

II.Шифрование

Шифрование с помощью этих чисел производится так:

Отправитель разбивает

свое сообщение M на блоки

mi . Значение mi n ,

поэтому длина блока mi

в битах не больше k=[log2(n)]

бит, где квадратные

скобки обозначают, взятие целой части от дробного числа.

 

Например, если n=21, то максимальная длина блока k=[log2(21)]=[4.39…]=4 бита.

Форма А

Страница 18из 24

Федеральное агентство по образованию

Форма

 

Ульяновский государственный университет

 

 

 

 

 

 

«Криптографические методы защиты информации»

 

 

 

 

 

Подобный блок может быть интерпретирован как число из диапазона (0;2k-1). Для каждого такого числа mi вычисляется выражение (ci – зашифрованное

сообщение): сi ((mi )e ) mod n .

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

сi до размера k=[log2(n)] бит.

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

Чтобы получить открытый текст надо каждый блок расшифровать отдельно: mi ((ci )d ) mod n

Пример:

Выбрать два простых числа: р = 7, q = 17.

Вычислить n = p·q = 7 · 17 = 119. Вычислить Ф(n) = (p - 1)·(q - 1) = 96.

Выбрать е так, чтобы е было взаимнопростым с Ф(n) = 96 и меньше, чем Ф(n): е = 5. Определить d так, чтобы d·e ≡ 1 mod 96 и d < 96.

d = 77, так как 77 · 5 = 385 = 4 · 96 + 1.

Результирующие ключи открытый {5, 119} и закрытый ключ {77, 119}. Например, требуется зашифровать сообщение М = 19.

195 = 66 (mod 119); С = 66.

Для расшифрования вычисляется 6677 (mod 119) = 19.

Задание

Реализовать программу, работающую по алгоритму RSA Программа должна уметь работать с текстом произвольной длины.

Форма А

Страница 19из 24

Федеральное агентство по образованию

Форма

 

Ульяновский государственный университет

 

 

 

 

 

 

«Криптографические методы защиты информации»

 

 

 

 

 

Лабораторная работа 11

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

Асимметричная схема Эль Гамаль, предложенная автором (El Gamal), использует операцию возведения в степень по модулю простого числа. При этом трудноразрешимой задачей для злоумышленника является отыскание не числа, которое возведено в степень, а то, в какую степень возведено известное число. Эта задача носит название проблемы дискретного логарифма.

На этапе выработки ключей:

1.Выбирается произвольное (правда достаточно большое) простое число р.

2.Для этого простого числа определяется любой образующий элемент (англ.

primitive root) – т. е. такое число а, при многократном возведении которого в степень по модулю р (а1 mod p, a2 mod p, …) , будут перебираться (в произвольном порядке, но обязательно по одному разу) все числа от 1 до (p-1) включительно.

3. Генерируется произвольное случайное число х (0<х<p) – это и есть закрытый ключ.

4. Вычисляется значение b = ax mod p – комбинация (a, p, b) представляет собой открытый ключ получателя.

На этапе шифрования:

1. Отправитель генерирует произвольное случайное число y (0<y<p).

2.Помещает в начале шифрограммы число (ay mod p) .

3.Вычисляет величину k = (by mod p) = ((ax mod p)y mod p).

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

5.Надежно стирает числа y и k из оперативной памяти и других мест, куда они могли случайно попасть.

На этапе дешифрования:

1. По приходу зашифрованного сообщения получатель отделяет от пакета величину (ay mod p) и вычисляет на ее основе ((ay mod p)x mod p) – математика доказывает, что полученное число будет равно тому самому k, которое вычислил отправитель, так как в данной формуле операнды x и y можно менять местами.

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

Проблема дискретного логарифма состоит в том, что, зная основание степени и получившийся после возведения результат по модулю простого числа, невозможно за обозримое время определить, в какую именно степень было возведено основание. В схеме Эль Гамаль потенциальный злоумышленник может получить значения a, p, (ax mod p) и (ay mod p). Однако из-за сложности определения чисел х и y "в чистом виде"

Форма А

Страница 20из 24