Добавил:
ivanov666
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Сборник задач по дисциплине «Информатика» для ВУЗов. Методические указания к проведению практических занятий по дисциплине «Информатика», для студенто
.pdf
71
сел, а ключ расшифрования (закрытый, секретный ключ) — на самих простых числах.
Заметим, что операцию разложения числа на множители называют
факторизацией.
Термин «необратимые» функции не совсем удачен. Правильнее было бы их назвать быстро (или просто) необратимые функции. Необратимые
функции можно обратить, но потребуется много времени.
В 40-х годах ХХ века американский инженер и математик Клод
Шеннон предложил разрабатывать новый шифр таким образом, чтобы его
раскрытие было эквивалентно решению сложной математической задачи.
Причём, сложность зада
чи должна быть такой, чтобы объем необходимых
вычислений превосходил бы возможности современных ЭВМ.
В асимметричных криптографических системах приходится применять длинные ключи (2048 бита и больше). Длинный ключ увеличивает
время шифрования открытого сообщения. Кроме того, генерация ключей
становится весьма длительной. Зато пересылать открытые ключи можно по
незащищённым (незасекреченным, открытым) каналам связи. Это особенно удоб
но, например, для коммерческих партнёров, разделённых большими расстояниями. Открытый ключ удобно передавать от банкира сразу
нескольким вкладчикам. В таких случаях вкладчики могут зашифровать
свои сообщение открытым ключом банкира, но прочитать эти сообщения
может только банкир, обладающий секретным ключом.
Рассмотрим пример ассиметричной криптосистемы (см. таблицу).
Пример 1.
Пусть абонент А (например, банкир) и абонент В (например, вклад-
чик) решили организовать между собой секретную передачу информации с
помощью асимметричной криптосистемы.
Решение.
Каждый из абонентов независимо друг от друга выбирает два больших простых числа, находит их произведение, функцию Эйлера от этого
произведения и выбирает случайное число, меньшее вычисленного значения функции Эйлера и взаи
Напомним, что
простое число — это целое положительное число,
мно прос
тое с ним.
большее единицы, не имеющее других делителей, кроме самого себя и еди-
Взаимно простые числа — целые числа, не имеющие общих дели-
ницы.
телей (кроме единицы).
Порядок создания ключей иллюстрируется с помощью таблицы. Для
наглядности (в учебных целях) числа выбраны малой величины.
Использованная в таблице запись
целочисленном делении числа
на число остаток равен .
= (mod()) означает, что при
Например, 7 = 1(mod(3)), 11 = 2(mod(3)).

72
Действия
1. Выбор двух простых
чисел p и q
2. Вычисление произ-
ведения r = p
3. Расчёт функции Эй-
(r) = r–p–q+1
лера
4. Выбор случайного
числа s, взаимно простого с
ла 0 < s <
5. Расчёт секретного
ключа t с помощью
соотношения
t = 1(mod(r))
s
6. Публикация откры-
ключей s, r
тых
Функция Эйлера — арифметическая функция
рой равно количеству положительных чисел, не превосходящих r и взаимно простых с r.
Предположим, что абонент А решил послать сообщение абоненту В.
Вначале методом замены каждый символ сообщения заменяется (кодируется) числом.
Если требуется зашифровать число z, то необходимо из следующего
соотношения найти w:
Допустим, что по открытому каналу связи нужно переслать число 2.
Абонент А шифрует число 2 открытым ключом абонента В. Для
шифрования передаваемое число 2 возводится в степень s2 = 31:
Затем абонент А находит остаток от деления числа m на величину
r 2= 253, в результате которого получается число 167, то есть:
Напомним, что s2 и r 2 являются открытым ключом абонента В.
В линию передаётся число w = 167, которое является криптограммой
исходного числа 2.
При расшифровании криптограммы w используется соотношение:
q
(r) из интерва-
(r)
Абонент А
(банкир)
p1 = 7; q1 = 13 p2 = 11; q2 = 23
r1 = 713 = 91 r2 = 1123 = 253
(r1) = 72
s1 = 5 s2 = 31
5t = 1(mod(72))
t 1= 29
s1 = 5,
r1 = 91
2
31
= 2147483648.
m = 2
31
= 167 (mod(253)).
2
.
))2(mod(
rwzs
Абонент В
(вкладчик)
(r2) = 220
31t = 1(mod(220))
t2 = 71
s 2= 31,
r 2= 253
(r), значение кото-

73
2
))2(mod(
rzwt
,
из которого находят неизвестное число z.
В рассматриваемом примере абонент В, получив криптограмму (число 167), использует свой секретный ключ t2 = 71. Для расшифрования он
возводит полученное число 167 в степень 71 и находит остаток от деления
на число 253:
71
= 2(mod(253)).
167
Остаток от деления равен 2, значит, шифрование и расшифрование
произошли правильно. Было передано число 2, и это же число было принято после всех преобразований.
Предположим, что абонент В решил ответить абоненту А и направить ему число 3.
Абонент В использует открытый (опубликованный) ключ абонента А
(s1 = 5,
r 1= 91) и выполняет шифрующее преобразование числа 3. Матема-
тически это записывается так:
5
= 61(mod(91)).
3
В линию отправляется число 61. Получив это число, абонент А восстанавливает (расшифровывает) исходный текст с помощью своего секретного ключа t1 = 29:
29
= 3(mod(91)).
61
В результате расшифрования на приёмной стороне получено число
3, которое отправил абонент В.
Процесс обмена сообщениями между абонентами иллюстрирует
следующая таблица.
Передача
Число
z
2 2
3 35 = 61(mod(91)) 61
Шифрование
31
= 167(mod(253)) 167 167
Канал
связи
Расшифрование
71
6129 = 3(mod(91))
Приём
Число
z
= 2(mod(253)) 2
3
Вторая снизу строка приведённой таблицы поясняет процесс передачи числа 2 от абонента А к абоненту В. Нижняя строка показывает, как передаётся число 3 от абонента В к абоненту А.
В приведённом примере был рассмотрен порядок передачи одного
символа с каждой стороны. Понятно, что таким образом последовательно
передаётся целое сообщение, но преобразование над каждым символом
ходит по рассмотренной схеме. Заметим, что для использования этого
проис
метода необходимо сообщение предварительно преобразовать в набор чисел, например, с помощью кодовой таблицы.

74
Достоинством шифрования с открытым ключом является исключение предварительной передачи секретного ключа по закрытым каналам
связи, например, с помощью курьера.
Однако у этого метода есть существенный недостаток. Используя
опубликованный ключ, сообщение может прислать любой абонент, выдавая себя за другого абонента. В подобных случаях требуется
— подтверждение авторства присланного документа. Для этих це-
кация
лей разработан способ шифрования, который называется
подписью
. Сущность электронной подписи заключается в том, что сооб-
аутентифи-
электронной
щение шифруется не только опубликованным открытым ключом абонента,
принимающего сообщение, но и секретным ключом абонента, отправляющего сообщение.
Рассмотрим пример цифровой подписи.
Пример 2.
Предположим, что абонент В (вкладчик) решил послать сообщение,
состоящее из числа z = 41, абоненту А (банкиру).
Решение.
Вначале вкладчик шифрует сообщение открытым ключом банкира:
1
))1(mod(
rwzs
, 415 = 6(mod(91)).
В результате шифрования получено число w = 6.
Дальше вкладчик повторно шифрует число w своим секретным клю-
чом t2:
2
rvwt , 6
71
))2(mod(
= 94(mod(253)).
Шифрограмма v = 94 отправляется банкиру.
Банкир, получив секретное сообщение v, использует вначале откры-
тый ключ вкладчика s2 и определяет w:
2
))2(mod(
rwvs
, 9431 = 6(mod(253)).
Затем банкир использует свой секретный ключ t1 для определения
присланного и заверенного подписью числа z:
1
rzwt , 6
29
))1(mod(
= 41(mod(91)).
В результате абонент А (банкир) получает сообщение, состоящее из
числа z = 41.
При использовании электронной подписи никто другой не сможет
прислать банкиру сообщение (например, поручение перевести деньги) от
имени абонента В, так как на передаче нужно обязательно использовать
секретный ключ вкладчика, который известен только абоненту В.

75
Наиболее сложным моментом при формировании ключей является
расчёт секретного ключа в соответствии с выражением s
t = 1(mod(r)).
Расчёт ведётся с помощью обобщённого алгоритма Евклида [9]. Его
можно выполнить с помощью математической системы Mathcad Prime 3
[10]. В программе приняты такие обозначения: φ( r ) → a, s → b. Понятно,
что эти величины должны быть введены в программу до выполнения расчёта. В результате получается секретный ключ t1.
Данная программа (обобщённый алгоритм Евклида) предназначена
для решения уравнения вида:
ax + by = gcd(a,b),
в котором известны два целых положительных числа a и b, а требу-
ется найти целые числа x, y и наибольший общий делитель чисел gcd(a,b),
которые удовлетворяют указанному уравнению.
Пример 3.
Выполним ручной расчёт секретного ключа по алгоритму Евклида.

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

77
щённом алгоритме Евклида. Количество вычислений в алгоритме Евклида
10, а в предлагаемом алгоритме 6.
В соответствии с передоложенным алгоритмом секретный ключ
можно рассчитать по формуле:

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

79
4. Задания для выполнения практической работы
«Асимметричный шифр RSA»
4.1. Выполнить моделирование процесса передачи сообщения (чис-
ла) secrb от банкира к вкладчику. Исходные данные для моделирования
передачи сообщения от банкира к вкладчику приведены в таблице 11.1.
Моделирование выполнить путём заполнения таблиц 11.2 и 11.3.
Таблица 11.1
Зада-
ча
1. Выбор двух простых
чисел p и q
2. Вычисление произведения r = p
3. Расчёт функции Эйлера
4. Выбор случайного
числа s, взаимно простого с
ла 0 < s <
5. Расчёт секретного
ключа t из соотношения s
6. Публикация откры-
тых
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
Действия
Абонент А
(банкир)
q1 p1 secrb
Таблица 11.2
Абонент В
(вкладчик)
p1 = …; q1 = … p2 = …; q2 = …
q
(r) = r–p–q+1
(r) из интерва-
(r)
r1 = … r2 = …
(r1) = …
(r2) = …
s1 = … s2 = …
t1=… t2=…
t = 1(mod(r))
ключей s, r
s1 = …,
r1 = …
s2 = …,
r2 = …

80
Таблица 11.3
Передача Число
Приём
в канале
Число Шифрование Дешифрование Число
2 2
31
= 167(mod(253))
167
167
71
=
2
2(mod(253))
Выполнить моделирование процесса передачи сообщения
4.2.
(числа) secrb от банкира к вкладчику с использованием цифровой подписи.
Результаты расчётов оформить в виде таблицы.
Домашняя работа.
Выполнить моделирование процесса передачи сообщения (числа)
secrv от вкладчика к банкиру. Значение числа secrv принять равным на
единицу большим последней цифры зачётки.
Простые числа q2, p2 выбрать самостоятельно. Таблица простых чи-
иведена в Прил
сел пр
ожении 2.
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
