Добавил:
ivanov666
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Сборник задач по дисциплине «Информатика». Методические указания к проведению практических занятий по дисциплине «Информатика», для студентов первого
.pdf
Открытый
текст
Г Д Е А Б Б А
Десятичное
число
195
196
197
192
193
193
192
Двоичное
число
11000011
11000100
11000101
11000000
11000001
11000001
11000000
Гамма (десятич.)
32
18
36
11
61
23
3
Гамма
(двоич.)
00100000
00010010
00100100
00001011
00111101
00010111
00000011
Криптогр.
(двоич.)
11100011
11010110
11100001
11001011
11111100
11010110
11000011
Криптогр.
(десят.)
227
214
225
203
252
214
195
Криптограмма
г Ц б Л ь Ц Г
Исключающее ИЛИ. Результаты всех преобразований поместим в таблицу.
Для наглядности результат шифрования (строка Криптограмма) переведѐн с помощью
таблицы CP-1251 в буквы. Из таблицы видно, что открытый текст был записан прописными
буквами, а криптограмма содержит как прописные, так и строчные буквы. Естественно, что
при реальном (а не учебном) шифровании набор символов в шифрограмме будет ещѐ богаче.
Кроме русских букв будут присутствовать латинские буквы, знаки препинания, управляющие символы.
При расшифровании таблицу нужно зеркально перевернуть относительно горизонтальной оси (строка Криптограмма должна стать верхней).
51

Задача
Гамма
Шифрограмма
1
1 5 32 7
ЦЦжЙИЙеГВЛрВЛ
2
6 12 22 5 3
ДЬУЙЬДЭУЙРЧЯТЩЬ
3
34 12 25 5 31
бИЬОЯжЮЩЙЧиЗЩБ
4
4 32 5 25
ЗоБЛМхБЩУаФТМх
5
14 2 17 25 34
ДЙПОуЖЙНФзЛЕСХиО
6
41 2 7 27 33
еЗБЫфъДВЦппВ
7
18 1 2 5 7
ЯДБЛГЙРРЕЧНУВЖЙВД
8
32 33 35 34
оузсмълуомвзжйс
9
3 2 5 35
ММЧнПИНрППАжМТАзЙМЗ
10
7 25 3 4 11
ИЧСБЮЗЭЖПШИЧПБЮЗ
11
3 18 21 7 5 12
ВЧСКЛЭСОШВКВУЬЯ
12
31 17 21 37 5
ЫФШщБСЪЫжЕЭФЯпЛПЯЗлП
13
3 17 2 34 41
ЛЫМойУКИсшГПРжзМЯТщ
14
33 17 32 35 42
лЯмрвмСмжамФвзднФк
15
23 14 32 35 22
ЭЮатЫЧЮефКШАгнФЩЮкнИ
16
21 4 32 38
ЪМшхЗЙейРФокХЧмиЩ
4. Задания для выполнения практической работы
«Шифрование методом гаммирования»
4.1. Расшифровать сообщение (метод гаммирования). При необходимости гамму до-
бавлять циклически.
Таблица 9.1
Домашнее задание.
Зашифровать свою фамилию. В качестве гаммы использовать цифры зачѐтки.
52

Практическая работа № 10
«Асимметричный шифр RSA»
1. Цель работы
Получить представление о криптографических методах защиты информации с помощью асимметричного шифрования.
2. Связь с другими темами практических работ
Данная практическая работа опирается на практические работы «Логические основы
работы ЭВМ», «Шифрование методом гаммирования» и позволяет получить представление
о построение криптосистемы с помощью открытых и закрытых ключей.
3. Теоретические сведения и расчѐтные формулы
Алгоритмы шифрования с открытым ключом (асимметричные шифры) используют так
называемые необратимые или односторонние функции. Эти функции обладают следующим свойством: при заданном значении аргумента x достаточно просто вычислить значение
функции f(x). Однако если известно значение функции y = f(x), то нет простого пути для вычисления значения аргумента x.
Для реализации криптосистемы с открытым ключом используют один из следующих типов необратимых преобразований.
1. Разложение больших чисел на простые множители (алгоритм RSA, авторы — Рай-
вест, Шамир и Адлеман — Rivest, Shamir, Adleman).
2. Вычисление логарифма или возведение в степень (алгоритм DH, авторы — Диффи и
Хелман).
3. Вычисление корней алгебраических уравнений.
4. Эллиптические кривые.
Рассмотрим простейший пример «необратимых» функций. Легко в уме найти произведение двух простых чисел 11 и 13. Сложнее быстро в уме найти два простых числа, произведение которых равно 437. Подобные трудности возникают и при использовании ЭВМ для
отыскания двух простых сомножителей для очень большого числа: найти сомножители
можно, но потребуется много времени.
В алгоритме шифрования RSA используются два разных ключа: один для шифрования
сообщения, а второй — отличный от первого, но связанный с ним — для расшифрования.
Ключ шифрования (открытый, несекретный ключ) основан на произведении двух огромных
простых чисел, а ключ расшифрования (закрытый, секретный ключ) — на самих простых
числах.
Заметим, что операцию разложения числа на множители называют факторизацией.
Термин «необратимые» функции не совсем удачен. Правильнее было бы их назвать
быстро (или просто) необратимые функции. Необратимые функции можно обратить, но потребуется много времени.
В 40-х годах ХХ века американский инженер и математик Клод Шеннон предложил
разрабатывать новый шифр таким образом, чтобы его раскрытие было эквивалентно решению сложной математической задачи. Причѐм, сложность задачи должна быть такой, чтобы
объем необходимых вычислений превосходил бы возможности современных ЭВМ.
В асимметричных криптографических системах приходится применять длинные ключи
(2048 бита и больше). Длинный ключ увеличивает время шифрования открытого сообщения.
Кроме того, генерация ключей становится весьма длительной. Зато пересылать открытые
ключи можно по незащищѐнным (незасекреченным, открытым) каналам связи. Это особенно
удобно, например, для коммерческих партнѐров, разделѐнных большими расстояниями. От-
53

Действия
Абонент А
(банкир)
Абонент В
(вкладчик)
1. Выбор двух простых чисел p и q
p = 7; q = 13
p = 11; q = 23
2. Вычисление произведения r = p q
r = 7 13 = 91
r = 11 23 = 253
3. Расчѐт функции Эйлера (r) = r–p–q+1
(r) = 72
(r) = 220
4. Выбор случайного числа s, взаимно простого с (r) из интервала 0 < s < (r)
s = 5
s = 31
5. Расчѐт секретного ключа t с помощью соотношения
s t = 1(mod (r))
5 t = 1(mod(72))
t = 29
31 t = 1(mod(220))
t = 71
6. Публикация открытых ключей s, r
s = 5,
r = 91
s = 31,
r = 253
))(mod(rwz
s
крытый ключ удобно передавать от банкира сразу нескольким вкладчикам. В таких случаях
вкладчики могут зашифровать свои сообщение открытым ключом банкира, но прочитать эти
сообщения может только банкир, обладающий секретным ключом.
Рассмотрим пример ассиметричной криптосистемы (см. таблицу).
Пример 1.
Пусть абонент А (например, банкир) и абонент В (например, вкладчик) решили организовать между собой секретную передачу информации с помощью открытого ключа.
Решение.
Каждый из абонентов независимо друг от друга выбирает два больших простых числа,
находит их произведение, функцию Эйлера от этого произведения и выбирает случайное
число, меньшее вычисленного значения функции Эйлера и взаимно простое с ним.
Напомним, что простое число — это целое положительное число, большее единицы,
не имеющее других делителей, кроме самого себя и единицы. Взаимно простые числа —
целые числа, не имеющие общих делителей (кроме единицы).
Порядок создания ключей иллюстрируется с помощью таблицы. Для наглядности (в
учебных целях) числа выбраны малой величины. Фактически эти числа имеют около 100 десятичных разрядов.
Использованная в таблице запись = (mod( )) означает, что при целочисленном деле-
нии числа на число остаток равен .
Например, 7 = 1(mod(3)), 11 = 2(mod(3)).
Функция Эйлера — арифметическая функция (r), значение которой равно количест-
ву положительных чисел, не превосходящих r и взаимно простых с r.
Предположим, что абонент А решил послать сообщение абоненту В. Вначале методом
замены каждый символ сообщения заменяется (кодируется) числом.
Если требуется зашифровать число z, то необходимо из следующего соотношения най-
ти w:
Допустим, что по открытому каналу связи нужно переслать число 2.
Абонент А шифрует число 2 открытым ключом абонента В. Для шифрования переда-
ваемое число 2 возводится в степень s = 31:
Затем абонент А находит остаток от деления числа m на величину r = 253, в резуль-
тате которого получается число 167, то есть:
Напомним, что числа s и r являются открытым ключом абонента В.
В линию передаѐтся число 167, которое является шифром исходного числа 2.
При расшифровании криптограммы w используется соотношение:
.
m = 231 = 2147483648.
231 = 167 (mod(253)).
54

))(mod(rzw
t
Передача
Канал
связи
Приѐм
Число z Шифрование
Расшифрование
Число
z 2 2
31
= 167(mod(253))
167
167
71
= 2(mod(253))
2 3 35 = 61(mod(91))
61
6129 = 3(mod(91))
3
))(mod(rwz
s
,
из которого находят неизвестное число z.
В рассматриваемом примере абонент В, получив криптограмму (число 167), использует
свой секретный ключ t = 71. Для дешифрации он возводит полученное число 167 в степень
71 и находит остаток от деления на число 253:
16771 = 2(mod(253)).
Остаток от деления равен 2, значит, шифрование и расшифрование произошли пра-
вильно. Было передано число 2, и это же число было принято после всех преобразований.
Предположим, что абонент В решил ответить абоненту А и направить ему число 3.
Абонент В использует открытый (опубликованный) ключ абонента А (s = 5, r = 91) и
выполняет шифрующее преобразование числа 3. Математически это записывается так:
35 = 61(mod(91)).
В линию отправляется число 61. Получив это число, абонент А восстанавливает (де-
шифрирует) исходный текст с помощью своего секретного ключа t = 29:
6129 = 3(mod(91)).
В результате расшифрования на приѐмной стороне получено число 3, которое отправил
абонент В.
Процесс обмена сообщениями между абонентами иллюстрирует следующая таблица.
Вторая снизу строка приведѐнной таблицы поясняет процесс передачи числа 2 от абонента А к абоненту В. Следующая строка показывает, как передаѐтся число 3 от абонента В к
абоненту А.
В приведѐнном примере был рассмотрен порядок передачи одного символа с каждой
стороны. Понятно, что таким образом последовательно передаѐтся целое сообщение, но преобразование над каждым символом происходит по рассмотренной схеме. Заметим, что для
использования этого метода необходимо сообщение предварительно преобразовать в набор
чисел, например, с помощью кодовой таблицы.
Достоинством шифрования с открытым ключом является исключение предварительной
передачи секретного ключа по закрытым каналам связи, например, с помощью курьера.
Однако у этого метода есть существенный недостаток. Используя опубликованный
ключ, сообщение может прислать любой абонент, выдавая себя за другого абонента. В подобных случаях требуется аутентификация — подтверждение авторства присланного документа. Для этих целей разработан способ шифрования, который называется электронной
подписью. Сущность электронной подписи заключается в том, что сообщение шифруется не
только опубликованным открытым ключом абонента, принимающего сообщение, но и секретным ключом абонента, отправляющего сообщение.
Рассмотрим пример цифровой подписи.
Пример 2.
Ввести индексы!
Предположим, что абонент В (вкладчик) решил послать сообщение, состоящее из числа
z = 41, абоненту А (банкиру).
Решение.
Вначале вкладчик шифрует сообщение открытым ключом банкира:
,
55

))(mod(rvw
t
))(mod(rwv
s
))(mod(rzw
t
415 = 6(mod(91)).
В результате шифрования получено число w = 6.
Дальше вкладчик повторно шифрует число w своим секретным ключом t:
,
671 = 94(mod(253)).
Шифрограмма v = 94 отправляется банкиру.
Банкир, получив секретное сообщение v, использует вначале открытый ключ вкладчика
s и определяет w:
,
9431 = 6(mod(253)).
Затем банкир использует свой секретный ключ t для определения присланного и заверенного подписью числа z:
629 = 41(mod(91)).
В результате абонент А (банкир) получает сообщение, состоящее из числа z = 41.
При использовании электронной подписи никто другой не сможет прислать банкиру
сообщение (например, поручение перевести деньги) от имени абонента В, так как на передаче нужно обязательно использовать секретный ключ вкладчика, который известен только
абоненту В.
Наиболее сложным моментом при формировании ключей является расчѐт секретного
ключа в соответствии с выражением s t = 1(mod (r)).
Расчѐт ведѐтся с помощью обобщѐнного алгоритма Евклида [9]. Его можно выполнить
с помощью математической системы Mathcad Prime 3 [10]. В программе приняты такие обозначения: φ( r ) → a, s → b. Понятно, что эти величины должны быть введены в программу
до выполнения расчѐта. В результате получается секретный ключ t1.
Данная программа (обобщѐнный алгоритм Евклида) предназначена для решения уравнения вида:
56

Итерация
q
T1
T2
T3 P 1
14 2 1
-14
-14
2 2 1
-2
29
29
3 2 0
Итерация
m k k целое ?
Ключ
1
73
14,6
Нет
-
2
145
29
Да
29
ax + by = gcd(a,b),
в котором известны два целых положительных числа a и b, а требуется найти целые
числа x, y и наибольший общий делитель чисел gcd(a,b), которые удовлетворяют указанному
уравнению.
Пример 3.
Выполним ручной расчѐт секретного ключа по алгоритму Евклида. Результаты расчѐтов представим в виде таблицы. Согласно обобщѐнному алгоритму Евклида вычисления
нужно завершить при Т1 = 0. Результаты содержатся в переменных Т2 (x) и Т3 (y) на предпоследней итерации.
Решение.
Исходные числа: a = 72, b = 5.
В результате расчѐтов получено: х = -2, y = 29.
Выполним проверку полученных результатов, для этого подставим найденные числа в
уравнение ax + by = gcd(a,b):
72·(-2) + 5·29 = 1, наибольший общий делитель чисел 72 и 5 также равен 1.
Проверка показала, что числа -2 и 29 вычислены верно. Секретный ключ равен 29.
Более рационален, на наш взгляд, другой алгоритм вычисления секретного ключа.
При решении уравнения s t = 1(mod (r)) нужно найти такое целое число t, которое при
целочисленном делении числа m = s t на (r) даст остаток, равный единице. Таким образом,
число m должно быть обязательно больше числа (r) хотя бы на единицу (так как остаток от
целочисленного деления равен 1). Кроме того, число m = (r)+1 должно нацело делиться на
число s, поэтому нужно проверять является ли целым число k = m/s. Если на первой итерации число k не является целым, то следует взять новое число m =2 (r)+1, проверить является
ли целым новое число k = m/s и т.д.
Блок-схема предлагаемого алгоритма показана на следующем рисунке, где использованы такие обозначения: φ( r ) → a, s → b.
Пример 4.
Выполним ручной расчѐт секретного ключа с помощью рассмотренного алгоритма.
Решение.
Исходные числа: a = 72, b = 5.
Сравнение примеров 2 и 3 показывает, что объѐм вычислений с использованием предлагаемого алгоритма значительно меньше, чем в обобщѐнном алгоритме Евклида. Количество вычислений в алгоритме Евклида 10, а в предлагаемом алгоритме 6.
57

s
rn
t
1)(
В соответствии с передоложенным алгоритмом секретный ключ можно рассчитать по
формуле:
.
Здесь n определяет число итераций. Число n следует увеличивать от 1 до такого значения, при котором t станет целым.
Из формулы видно, что число n будет всегда меньше числа s.
Ниже приведѐн текст программы на языке Mathcad, составленный в соответствии с
блок-схемой алгоритма.
58

В программе использовано присвоение переменной d некоторого числа, отличного от
нуля. Это сделано для исключения возможных ошибок, если d задаѐтся по умолчанию.
Чисто внешнее сравнение данной программы с программой, составленной по обобщѐнному алгоритму Евклида, показывает еѐ рациональность. Экономия на времени счѐта в предлагаемом алгоритме возможна на исключении вычисления функции целочисленного деления
и на операциях с матрицами. Однако, количественное сопоставление алгоритмов пока не
производилось. Применительно к использованию ручных расчѐтов преимущество последнего алгоритма очевидно.
Замечание.
Одним из недостатков асимметричных криптосистем является большая ресурсоѐмкость
(большой объѐм вычислительных работ, вычисления ведутся медленно из-за использования
чисел большой разрядности).
Даже использование чисел малой разрядности приводит к тому, что математическая
система Mathcad перестаѐт работать, а калькуляторы разной конструкции дают совершенно
разные результаты.
59

Зада-
ча
q1
p1
secrb
Задача
q1
p1
secrb
1 5 7 4 9 7 13 9 2 7 11 2 10 7 19
10
3
11
13 3 11 7 23
11
4
13 5 4
12
11
19
12
5
11
17 5 13
19 3 13
6
19 5 6
14
19 7 14
7
17 7 7
15
19
13
15
8
17 5 8
16
19
17
16
Действия
Абонент А
(банкир)
Абонент В
(вкладчик)
1. Выбор двух простых
чисел p и q
p1 = …; q1 = …
p2 = …; q2 = …
2. Вычисление произведения r = p q
r1 = …
r2 = …
3. Расчѐт функции Эйлера
(r) = r–p–q+1
(r1) = …
(r2) = …
4. Выбор случайного числа s, взаимно простого с
(r) из интервала 0 < s <
(r)
s1 = …
s2 = …
5. Расчѐт секретного
ключа t из соотношения s t
= 1(mod (r))
t1=…
t2=…
6. Публикация открытых
ключей s, r
s1 = …,
r1 = …
s2 = …,
r2 = …
Передача
Число
в канале
Приѐм
Число
Шифрование
167
Дешифрование
Число
2
2
31
=
167(mod(253))
167
71
= 2(mod(253))
2
4. Задания для выполнения практической работы
«Асимметричный шифр RSA»
4.1. Выполнить моделирование процесса передачи сообщения (числа) secrb от банкира
к вкладчику. Исходные данные для моделирования передачи сообщения от банкира к вкладчику приведены в таблице 10.1. Моделирование выполнить путѐм заполнения таблиц 10.2 и
10.3.
Таблица 10.1
Таблица 10.2
Таблица 10.3
60
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
