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