
2.3. Простейшие криптосистемы с открытым ключом
2.3.1. Двухступенчатая передача сообщений с использованием модульной арифметики [ 2 ]
Сообщение может быть передано непосредственно от А к В за несколько шагов при использовании очень больших модулей.
Рассмотрим сначала случай, когда по открытому каналу Алиса и Боб договариваются использовать для шифрования своих сообщений некоторое очень большое простое число P. Пусть, например, P имеет 100 десятичных знаков. Тогда Алиса может зашифровать сообщение m возведением в некоторую степень x, известную только ей, и передать Бобу. Боб может возвести полученное сообщение в степень y, известную только ему и возвратить Алисе. Алиса “снимет” свою степень x и передаст сообщение Бобу. Боб “снимет” свою степень y и прочитает сообщение.
Общая схема выглядит следующим образом:
Алиса берет сообщение m, которое хочет передать Бобу, возводит в некоторую степень x, при этом (x, P-1) = 1, т.е. x и P-1 взаимно простые числа:
mx S1 mod P
и передает S1 Бобу.
Б
об
возводит S1
в некоторую степень y,
(y,
P-1)
= 1:
mxy
S2
mod
P
и возвращает S2 Алисе.
Алиса должна снять свой ключ x, для этого она должна извлечь корень степени x из S2. Это можно сделать при учете, что (x, P-1) = 1 следующим образом.
Если возвести S2
в степень k1
=
,
где t1-
некоторое целое, такое, что числитель
дроби k1
делится на x
нацело, то в результате будет получено
значение
m y S3 mod P.
Это значение (S3) Алиса передает Бобу.
Для того чтобы
снять свой ключ, Боб может возвести S3
в степень k2
=
и в результате восстановит исходное
сообщение m.
Пример. Пусть P = 103. P-1 = 102 = 2*51. Алиса хочет передать сообщение m = 83. Алиса возводит число 83 в известную только ей степень, например, x = 35, (35,102)=1:
8335 (((((83)2)2)2)2)2*(83)2*83 ((((91)2)2)2)2*91*83 (((41)2)2)2* 34 ((33)2)2* 34 (59)2*34 7 mod 103 и результат (число 7) передает Бобу. Боб полученное число возводит в известную только ему степень, например, y = 41 (это число также взаимно просто с 102):
(7)41 ((73)3)3*(73)3*73*72 (343)3*34*49 613*61*18 55 mod 103 и результат (55) возвращает Алисе. Алиса “снимает” свою степень x, решая сравнение:
k1
35 mod
103 и возводя число 55 в степень 35:
(55)35 (((553)3)3* (((552)2)2 (303)3* (382)2 143*22 58 mod 103. Результат (число 58) Алиса передает Бобу. Боб “снимает” свою степень y, решая сравнение:
k2
5 mod
103 и возводя число 58 в степень 5:
(58)5 (582)2*58 682*58 83 mod 103, получает сообщение, которое было адресовано ему Алисой. Таким образом, Боб расшифровал переданное сообщение, а незаконный перехватчик, получив все числа, которыми обменивались Алиса и Боб, не сумеет расшифровать это сообщение.
2.3.2. Формирование общего ключа по открытому каналу
Для формирования общего ключа по открытому каналу можно воспользоваться идеей Диффи и Хэллмана [2]. Пусть Алиса и Боб договорились использовать некоторое очень большое простое число Р в качестве модуля. Кроме того, Алиса и Боб для этого числа Р выбрали первообразный корень g, т.е. такое число, что для него самое малое число а, удовлетворяющее сравнению: gа 1 mod Р, равно а = Р-1.
Алиса берет
первообразный корень g,
возводит его в степень, известную только
Алисе, находит остаток по модулю Р:
S1
mod
P
и открыто передает остаток S1
Бобу.
Боб возводит
первообразный корень g
в известную только ему степень k2,
получает остаток S2
по модулю Р и передает S2
Алисе. Далее Алиса возводит S2
в степень к2,
а Боб возводит S1
в степень k2
по модулю Р и оба получают один и тот же
ключ K
=
mod
P.
Далее Алиса и Боб могут воспользоваться
этим общим ключом, например, при применении
симметричной криптосистемы DES.
При необходимости произвести смену
ключа операция обмена повторяется, при
этом k1
и k2
выбираются заново.
Пример. Пусть P = 103. Первообразным корнем для данного P будет g = 2. Чтобы это проверить, представим P-1 в канонической форме: 102 = 2*51. Так как ни 22, ни 251 не сравнимы с 1 по модулю 103, то 102 является самой минимальной степенью, которая обеспечивает сравнение: 2102 1 mod 103 (теорема Ферма). Пусть Алиса выбрала к1 = 7, а Боб выбрал к2 = 11. Тогда они обменяются следующими данными:
27 25 mod 103
211 91 mod 103
И оба выработают один и тот же ключ:
Алиса: 917 38 mod 103 Боб: 2511 38 mod 103
Незаконный перехватчик, зная P и g и перехватив S1 и S2, не сумеет вычислить значение общего ключа mod P. Эта уверенность исходит из следующих соображений.
Пусть имеется уравнение аx = b, из которого требуется найти x. Прологарифмируем левую и правую части уравнения. Получим:
x
log
a
= log
b,
откуда x
=
,
т.е. для степенного уравнения решение
находится просто.
Если же имеется сравнение аx b mod P, ( 1 )
в котором известны значения a, b, и P, то x находится в общем случае с помощью перебора. Задача решения сравнений вида ( 1 ) называется задачей дискретного логарифмирования. Несмотря на безусловные успехи последних лет в этой области, для произвольных модулей P решение близко к полному перебору. Если же P имеет порядка 100 десятичных разрядов, то и значения k1 и k2 имеют примерно тот же порядок и для решения сравнения требуется производить перебор около 10100 вариантов, что является нереализуемым ни за какое приемлемое время.