Шифрование по алгоритму Эль-Гамаля
Пусть имеются абоненты А, В, С, ..., которые хотят передавать друг другу зашифрованные сообщения, не имея никаких защищенных каналов связи. Шифр, предложенный Эль-Гамалем (Tahcr ElGamal), решает эту задачу, используя, в отличие от шифра Шамира, только одну пересылку сообщения. Фактически здесь используется схема Диффи-Хеллмана, чтобы сформировать общий секретный ключ для двух абонентов, передающих друг другу сообщение, и затем сообщение шифруется путем умножения его на этот ключ. Для каждого следующего сообщения секретный ключ вычисляется заново. Перейдем к точному описанию метода.
Для всей группы абонентов выбираются некоторое большое простое число р и число g,такие, что различные степени g суть различные числа по модулю р. Числа р и g передаются абонентам в открытом виде (они могут использоваться всеми абонентами сети).
Затем каждый абонент группы выбирает свое секретное число ci, 1 < сi < р - 1 и вычисляет соответствующее ему открытое число di,
di=gcimodp.(3.1)
Результат представлен в таблице 3.3.
Необходимо выбрать числа p и g так, чтобы они отвечали следующим требованиям:
gq mod p 1, где p=2q+1.
Таблица 3.3- Ключи пользователей в системе Эль-Гамаля
Абонент | Секретный ключ | Открытый ключ |
А | сА | dA |
В | сВ | dB |
С | сD | dC |
Покажем теперь, как А передает сообщение абоненту В. Будем предполагать, как и при описании шифра Шамира, что сообщение представлено в виде числа m < р.
Шаг 1. А формирует случайное число к, 1 к р-2, вычисляет числа
r = gk mod p,(3.2) e = m dBk mod p(3.3)