Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
43
Добавлен:
28.06.2014
Размер:
8.81 Кб
Скачать

Алгоритм Эль-Гамаля (ElGamal)

Шифросистема Эль-Гамаля была предложена в 1984 году американским аспирантом - криптографом арабского происхождения, по имени которого и была впоследствии названа (T. ElGamal, "A Public-Key Cryptosystem and a Signature Scheme Based on Discrete Logarithms," Advances in Cryptology: Proceedings of CRYPTO 84, Springer-Verlag, 1985, pp. 10-18.). Алгоритм не запатентован, что позволяет использовать его без каких-либо ограничений. В частности стандарты ЭЦП в США и России базируются именно на нем (в модификации варианта Шнорра: C.P. Schnorr, "Efficient Signature Generation for Smart Cards," Advances in Cryptology-CRYPTO '89 Proceedings, Springer-Verlag, 1990, pp. 239-252.).

Стойкость данной схемы основана на сложности проблемы целочисленного логарифмирования в мультипликативной группе конечного поля.

Для генерации ключевой пары вначале выбирается простое число p и два случайных числа g и x, меньших числа p. Затем вычисляется

y = gx mod p

Открытым ключом являются y, g, и p. при этом числа g и p можно сделать общими для группы пользователей. Секретным ключом является x.

Схема шифрования

Модификация алгоритма позволяет шифровать сообщения. Для шифрования сообщения M, выбираем случайное секретное число k, взаимно простое с p - 1 (т.е. НОД этих чисел равен 1). После этого вычисляем:

a = gk mod p

b = ykM mod p

Пара чисел a и b является шифротекстом. Причем, длина шифротекста длинней открытого текста вдвое.

Для расшифрования a и b, вычисляем:

M = b/ax mod p

Учитывая тот факт, что:

ax ≡ gkx (mod p)

и

b/ax ≡ ykM/ax ≡ gxkM/gxk ≡ M (mod p) ,

то вышеприведенные формулы верны.

Схема подписи.

Для подписания сообщения M, вначале выберем случайное число k, такое, что k взаимно простое с p - 1. После чего вычисляем:

a = gk mod p

и, используя расширенный алгоритм Евклида, решаем уравнение относительно числа b :

M = (xa + kb) mod (p - 1)

Подписью является пара чисел: a и b. Случайное число k должно держаться в строгом секрете и являться уникальным для каждого подписываемого сообщения М.

Для проверки правильности подписи, проверяется следующее равенство:

yaab mod p = gM mod p

В общем-то и все. Разве, что еще раз повторюсь, что случайное значение k должно быть уникальным для каждой подписи и/или шифрования и обязательно держаться в секрете. Если криптоаналитик противника сможет получить два сообщения, подписанных или зашифрованных на одном k, то он способен раскрыть секретный ключ отправителя x, даже не зная самого значения k. Если криптоаналитик противника сможет найти (украсть) значение k для сообщения M, то он сможет раскрыть секретный ключ отправителя. К чему это может привести совершенно очевидно.

В качестве замечания, необходимо отметить, что в последние годы в качестве мультипликативной группы используются множество точек, лежащих на эллиптической кривой. Наиболее известными стандартами, основанными на этом подходе, является DSA (Digital Signature Algorithm FIPS 186-2, точнее его часть, относящаяся к ANSI X9.62 ECDSA -Elliptic Curve DSA), входящий в DSS (Digital Signature Standard) и ГОСТ 34.10-2001. «Эллиптической кривой» называется множество пар точек {X,Y}, удовлетворяющих уравнению вида Y2=aX3+bX+c. Аналогично предыдущим рассуждениям, можно сказать, что применительно к криптографии, мы будем говорить об эллиптической кривой над конечным простым полем Галуа, как пары {x,y} (собственно, эти пары и являются «точкой» в терминах эллиптических кривых), таких, что x,yОGF(p), удовлетворяющих уравнению y2=(x3+ax+b) mod p. Простое число p - это модуль преобразования групп точек эллиптической кривой. В качестве одного из параметров кривой рассматривается также величина m - это порядок поля (данный термин описывает мощность множества точек, образующих данное поле). Удобство описанной конструкции в том, что если в «чистой» схеме Эль-Гамаля длина ключа (порядка поля) требуется не хуже 2512, то для эллиптических кривых достаточно 2255 (по некоторым оценкам даже порядка 2180) при аналогичной трудоемкости вскрытия.

Сложностью использования этого алгоритма является то, что в международном стандарте X9.62 предлагается сразу 3 способа получения параметров эллиптической кривой:

Первый способ состоит в использовании кривых, заданных в Х9.62 (в приложении «J»). Исследование этих готовых кривых показывает, что только одна, а именно последняя кривая удовлетворяет требуемому простому числу. Эта кривая может использоваться только в качестве тестового варианта, поэтому данный способ не пригоден. Второй способ состоит в случайном выборе эллиптической кривой и проверке ее параметров. Это продолжается до тех пор, пока не будет найдена требуемая кривая. Очевидно, что поскольку процесс является вероятностным, то поиск эллиптических кривых с требуемым порядком в этом случае может продолжаться очень долго. Третий способ заключается в выборе требуемых параметров и построении кривой по этим параметрам. Последний способ сразу дает одну или несколько эллиптических кривых с заданным порядком.

Подробное изложение теории эллиптических кривых, в том числе применительно к криптографии, уважаемый Читатель может найти в Приложениях.

DigitalSecurity, Межутков Андрей, © 2003

Соседние файлы в папке Криптоалгоритмы