Криптосистемы Диффи-Хеллмана и Эль Гамаля

Криптосистемы Диффи-Хеллмана и Эль Гамаля основаны на вычислительной сложности задачи дискретного логарифмирования.

Криптосистема Диффи-Хеллмана была первым алгоритмом с открытыми ключами (предложен в 1976 г.). Вообще говоря, она не является шифром и предназначена для генерации ключа симметричного шифрования, который затем будет использован субъектами информационных отношений для защищенного обмена сообщениями по открытой сети. Эту криптосистему называют алгоритмом открытого распределения ключей Диффи-Хеллмана.

Предположим, что два пользователя А и В хотят организовать защищенный коммуникационный канал.

1. Обе стороны заранее уславливаются о модуле N (N должен быть простым числом) и примитивном элементе g в Криптосистемы Диффи-Хеллмана и Эль Гамаля - student2.ru ,
(1 < g < N – 1), который образует все ненулевые элементы множества Криптосистемы Диффи-Хеллмана и Эль Гамаля - student2.ru , т.е. Криптосистемы Диффи-Хеллмана и Эль Гамаля - student2.ru . Установлено, что для любого простого N существует ровно Криптосистемы Диффи-Хеллмана и Эль Гамаля - student2.ru примитивных элементов. Здесь Криптосистемы Диффи-Хеллмана и Эль Гамаля - student2.ru – функция Эйлера.

Эти два целых числа N и g могут не храниться в секрете. Как правило, эти значения являются общими для всех пользователей системы. Для обеспечения стойкости число N должно иметь длину, большую или равную 512 бит, и разложение числа N – 1 на множители должно содержать хотя бы один большой простой множитель. При таком выборе числа N в настоящее время не существует эффективного алгоритма для решения задачи дискретного логарифмирования.

2. Затем пользователи А и В независимо друг от друга выбирают собственные секретные ключи Криптосистемы Диффи-Хеллмана и Эль Гамаля - student2.ru и Криптосистемы Диффи-Хеллмана и Эль Гамаля - student2.ru ( Криптосистемы Диффи-Хеллмана и Эль Гамаля - student2.ru и Криптосистемы Диффи-Хеллмана и Эль Гамаля - student2.ru – случайные большие целые числа, которые хранятся пользователями А и В в секрете).

3. Далее пользователь А вычисляет открытый ключ Криптосистемы Диффи-Хеллмана и Эль Гамаля - student2.ru , а пользователь В – открытый ключ Криптосистемы Диффи-Хеллмана и Эль Гамаля - student2.ru .

4. Затем стороны А и В обмениваются вычисленными значениями открытых ключей Криптосистемы Диффи-Хеллмана и Эль Гамаля - student2.ru и Криптосистемы Диффи-Хеллмана и Эль Гамаля - student2.ru по незащищенному каналу.

5. Далее пользователи А и В вычисляют общий секретный ключ, используя следующие сравнения:

· пользователь А: Криптосистемы Диффи-Хеллмана и Эль Гамаля - student2.ru ;

· пользователь В: Криптосистемы Диффи-Хеллмана и Эль Гамаля - student2.ru .

При этом K = K', так как Криптосистемы Диффи-Хеллмана и Эль Гамаля - student2.ru .

Ключ K может использоваться в качестве общего секретного ключа (ключа шифрования ключей) в симметричной криптосистеме.

Кроме того, обе стороны А и В могут шифровать сообщения, используя следующее преобразование шифрования (типа RSA):

Криптосистемы Диффи-Хеллмана и Эль Гамаля - student2.ru .

Для выполнения расшифрования получатель сначала находит ключ расшифрования Криптосистемы Диффи-Хеллмана и Эль Гамаля - student2.ru с помощью сравнения Криптосистемы Диффи-Хеллмана и Эль Гамаля - student2.ru , а затем восстанавливает сообщение

Криптосистемы Диффи-Хеллмана и Эль Гамаля - student2.ru .

Рассмотрим пример. Допустим, модуль N = 47, а примитивный элемент g = 23. Предположим, что пользователи А и В выбрали свои секретные ключи: Криптосистемы Диффи-Хеллмана и Эль Гамаля - student2.ru и Криптосистемы Диффи-Хеллмана и Эль Гамаля - student2.ru .

Для того чтобы иметь общий секретный ключ K, они вычисляют сначала значения частных открытых ключей:

Криптосистемы Диффи-Хеллмана и Эль Гамаля - student2.ru ,

Криптосистемы Диффи-Хеллмана и Эль Гамаля - student2.ru .

После того, как пользователи А и В обменяются своими значениями Криптосистемы Диффи-Хеллмана и Эль Гамаля - student2.ru и Криптосистемы Диффи-Хеллмана и Эль Гамаля - student2.ru , они вычисляют общий секретный ключ:

Криптосистемы Диффи-Хеллмана и Эль Гамаля - student2.ru .

Кроме того, они находят секретный ключ расшифрования, используя следующее сравнение: Криптосистемы Диффи-Хеллмана и Эль Гамаля - student2.ru , откуда Криптосистемы Диффи-Хеллмана и Эль Гамаля - student2.ru

Теперь, если открытый текст М = 16, то шифртекст Криптосистемы Диффи-Хеллмана и Эль Гамаля - student2.ru .

В результате расшифрования получится Криптосистемы Диффи-Хеллмана и Эль Гамаля - student2.ru .

Криптосистема Эль Гамаля, предложенная в 1985 г., может быть использована как для шифрования, так и для цифровых подписей. Безопасность схемы Эль Гамаля обусловлена сложностью вычисления дискретных логарифмов в конечном поле.

Для того чтобы генерировать пару ключей (открытый ключ – секретный ключ), сначала выбирают некоторое большое простое число Р и большое целое число G, причем G < Р. Числа Р и G могут быть распространены среди группы пользователей.

Затем выбирают случайное целое число X, причем Х < Р. Число X является секретным ключом и должно храниться в секрете.

Далее вычисляют Криптосистемы Диффи-Хеллмана и Эль Гамаля - student2.ru . Число Y является открытым ключом.

Для того чтобы зашифровать сообщение М, выбирают случайное целое число K, 1< K < Р – 1, такое, что числа K и (Р – 1) являются взаимно простыми.

Затем вычисляют числа

Криптосистемы Диффи-Хеллмана и Эль Гамаля - student2.ru ;

Криптосистемы Диффи-Хеллмана и Эль Гамаля - student2.ru .

Пара чисел (а, b) является шифртекстом. Заметим, что длина шифртекста вдвое больше длины исходного открытого текста М.

Для того чтобы расшифровать шифртекст (а, b), вычисляют

Криптосистемы Диффи-Хеллмана и Эль Гамаля - student2.ru .

Поскольку

Криптосистемы Диффи-Хеллмана и Эль Гамаля - student2.ru , Криптосистемы Диффи-Хеллмана и Эль Гамаля - student2.ru , то соотношение расшифрования справедливо.

Рассмотрим пример. Выберем Р = 11, G = 2, секретный ключ X = 8. Вычисляем Криптосистемы Диффи-Хеллмана и Эль Гамаля - student2.ru . Итак, открытый ключ Y = 3. Пусть сообщение М = 5. Выберем некоторое случайное число
K = 9. Убедимся, что НОД(K, Р – 1) = 1. Действительно, НОД(9, 10) = 1. Вычисляем пару чисел а и b:

Криптосистемы Диффи-Хеллмана и Эль Гамаля - student2.ru ;

Криптосистемы Диффи-Хеллмана и Эль Гамаля - student2.ru .

Получим шифртекст (a, b) = (6, 9).

Выполним расшифрование этого шифртекста. Вычисляем сообщение М, используя секретный ключ X:

Криптосистемы Диффи-Хеллмана и Эль Гамаля - student2.ru .

Выражение М = 9/68 mod 11 можно представить в виде Криптосистемы Диффи-Хеллмана и Эль Гамаля - student2.ru . Решая данное сравнение, находим М = 5.

В реальных схемах шифрования необходимо использовать в качестве модуля Р большое целое простое число, имеющее в двоичном представлении длину 512...1024 бит.

Наши рекомендации