Криптосистема Эль-Гамаля

Автор шифра – Эль-Гамаль (Taher ElGamal). (Данная система является альтернативой RSA и при равном значении ключа обеспечивает ту же криптостойкость).

В отличие от RSA метод Эль-Гамаля основан на проблеме дискретного логарифма. Этим он похож на алгоритм Диффи-Хелмана. Если возводить число в степень в конечном поле достаточно легко, то восстановить аргумент по значению (то есть найти логарифм) довольно трудно.

Пусть имеются абоненты А, В, С, ..., которые хотят передавать друг другу зашифрованные сообщения.

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

Затем каждый j-й абонент выбирает свое секретное число сj , 1 < сj < р-1, и вычисляет соответствующее ему открытое число dj,

dj = gCj mod p.

В результате получаем пары ключей: cA dA , cB dB , cC dC ,

Покажем теперь, как А передает сообщение т абоненту В. Бу­дем предполагать, что сообщение представлено в виде чисел mi < р .

1. А формирует случайное число k , 1 < k < р-2 , вычисляет числа

ri = gk mod p,

еi = m idB k mod p

и передает пару чисел (ri, еi) абоненту В.

2. В,получив (ri, еi), вычисляет

тi = еi • ri р-1-СB mod p.

Пример. Передадим сообщение т = 15 от А к В. Возьмем р = 23, g= 5. Пусть абонент В выбрал для себя секретное число cb =13 и вычислил

dB = 513 mod 23 = 21.

Абонент А выбирает случайно число k, например k = 7, и вы­числяет:

r = 57 mod 23 = 17, е = 15 • 217 mod 23 = 15 • 10 mod 23 = 12.

Теперь А посылает к В зашифрованное сообщение в виде пары чисел (17,12). В вычисляет

т = 12 • 1723-1-13 mod 23 = 12 • 179 mod 23 = 12 • 7 mod 23 = 15.

Заметим, что объем шифра в два раза пре­вышает объем сообщения.

Есть и другой вариант зашифрования и расшифрования, где вместо умножения используется побитовое сложение по модулю 2 (Е):

ei = mi Е dk,

mi = (ri C j mod p) Е ei.

Пример.

е = 15Е(217 mod 23) = 15 Е 10 = 5,

т = (1713 mod 23) Е 5 = 10 Е 5 = 15.