17.3. Криптосистема rsa, криптосистема Эль-Гамаля и протокол согласования ключей Диффи-Хэллмана.
Широко
известная криптографическая система
RSA, предложенная в 1978 году, является
асимметричной криптосистемой, основанной
на односторонней функции с лазейкой, в
качестве которой выбрана степенная
функция в кольце вычетов целых чисел
по составному (двупростому) модулю
.
Стойкость системы основана на сложности задачи факторизации больших двупростых чисел.
Криптосистема
RSA
на каждом такте шифрования преобразует
двоичный блок открытого текста
длины
,
рассматриваемый как целое число, с
помощью возведения в степень по модулю
:
.
Показатель степени и модуль являются
элементами открытого ключа.
Лазейка обеспечивается
за счет секретного ключа
,
построенного таким образом, что для
всех
выполняется соотношение
.
Построение криптосистемы обеспечивает получатель сообщений.
Сначала
случайным образом выбираются два
различных больших простых числа
и
.
Выбранные простые числа должны
удовлетворять некоторым дополнительным
условиям.
Затем вычисляется
модуль
,
функция Эйлера от модуля
,
а также выбирается случайное число
,
взаимно простое с
.
Секретный ключ
строится с помощью расширенного алгоритма
Эвклида, как число
,
удовлетворяющее сравнению
.
После этого все данные, кроме
,
включая данные промежуточных вычислений,
уничтожаются. Пара
объявляется в качестве открытого ключа.
Расшифрование
обеспечивается тем, что для
из теоремы Эйлера следует
и, кроме того, для других значений
соотношение
также имеет место, вследствие свойств
модуля вида
.
Рассмотрим пример построения (учебной) криптосистемы RSA.
1.
,
.
2.
![]()
3.
![]()
4.
![]()
5.
![]()
Открытый
ключ -
.
Зашифруем сообщение из трех блоков: 3,1,2.
,
,
.
Для
расшифрования возведем каждый блок в
степень
по модулю 33:
,
,
.
Секретный
ключ для учебной системы легко найти
перебором. На практике это невыполнимо,
т.к. реальный размер модуля (длина
битового представления)
находится в диапазоне от 512 до 4096 битов.
В настоящее время в системах связи общего назначения широко распространены т.н. смешанные криптосистемы. В таких системах конфиденциальность сообщений обеспечивается за счет шифрования с помощью симметричной криптосистемы, рассылка ключей для которой осуществляется с помощью асимметричных криптоалгоритмов.
Как уже было сказано, здесь возникает новый тип задач, связанный с т.н. недоверием корреспондентов друг к другу.
Имеется большое количество стандартизованных протоколов безопасного ключевого обмена, применимых в различных ситуациях. Обычно в ходе таких протоколов обеспечивается аутентификация абонентов и построение общего секретного набора данных для дальнейшей генерации ключей.
Наиболее
ранний протокол обмена ключами при
взаимном недоверии участников обмена
предложен Диффи и Хэллманом. В этом
протоколе используется
показательная функция в простом поле
Галуа
,
обратной к которой является дискретный
логарифм.
Пусть абонент А является инициатором обмена. Он намерен выработать общий секретный ключ для симметричной криптосистемы с абонентом В.
При этом обоим
корреспондентам известен первообразный
элемент
поля
и, конечно, простое число
.
Протокол решает
задачу построения общего секретного
блока данных вида
,
где
- случайные вычеты по модулю
.
Абонент А случайно
выбирает
,
вычисляет значение
и отправляет это значение абоненту В.
Абонент В действует аналогично: выбирает
,
вычисляет значение
и отправляет это значение абоненту А.
Каждый из абонентов в состоянии теперь
вычислить значение общего секретного
блока
.
Получить это значение, исходя из
перехвата, оказывается, невозможно,
вследствие свойств дискретного логарифма,
а подходов, неэквивалентных дискретному
логарифмированию, не найдено.
Пример системы экспоненциального ключевого обмена Диффи-Хэллмана.
1.
,
,
поскольку
,
.
2. Абонент А
генерирует псевдослучайное число,
например,
и передает абоненту В значение
.
3. В, аналогично,
генерирует
и отправляет А значение
.
4. А вычисляет общий
секретный параметр
.
5. В вычисляет общий
секретный параметр
.
Криптосистема
Эль-Гамаля является асимметричной. Для
построения пары ключей выбирается
большое простое число
и два псевдослучайных числа, меньших
.
Одно из них,
,
должно быть элементом большого порядка
по модулю
,
скажем, первообразным корнем. Второе
число,
,
выбирается в качестве секретного ключа.
Полагается, что сообщения – вычеты по
модулю
.
Открытым ключом
является тройка чисел
.
Заметим, что дискретное возведение в степень ведет себя как односторонняя функция, но не как односторонняя функция с лазейкой.
Поэтому для каждого сообщения формируются дополнительные данные, играющие роль лазейки для конкретного сеанса шифрования.
Для зашифрования
сообщения
выбирается псевдослучайное число
(рандомизатор, разовый ключ) с условием
НОД
.
Рандомизаторы не должны повторяться и
должны содержаться в секрете.
Затем вычисляются
числа
- лазейка и
- шифртекст. Криптограммой является
пара блоков данных
.
Для расшифрования
достаточно получить сомножитель
,
что можно сделать с помощью секретного
ключа, вычислив значение
.
Действительно,
,
поэтому
.
