Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Все о крипто / КРИПТОГРАФИЯ. Первое знакомство / Раздел 2.Криптографические системы с открытым ключом.doc
Скачиваний:
17
Добавлен:
04.11.2020
Размер:
275.46 Кб
Скачать

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

И оба выработают один и тот же ключ:

Алиса: 91738 mod 103 Боб: 251138 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 вариантов, что является нереализуемым ни за какое приемлемое время.