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

 

Помимо RSA есть другая криптосистема с открытым ключом Эль-Гамаля (ElGamal), которая названа по имени ее изобретателя, Тахира Эль-Гамаля (Taher ElGamal).

Если p – очень большое простое число, e1 – первообразный корень в группе и r – целое число, тогда e2 = e1r mod p просто вычисляется с использованием быстрого показательного алгоритма (метод «возведения в квадрат и умножения»). Но по данным e2, e1 и p, невозможно вычислить r = loge1e2 mod p (проблема дискретного логарифма).

Рис. 8 показывает генерацию ключей, шифрование и дешифрование в криптосистеме Эль-Гамаля.

 

Рис. 8 Генерация ключей, шифрование, и дешифрование в криптосистеме Эль-Гамаля

 

Определение общедоступного и частного ключей

• Выбор двух взаимно простых чисел p и e1, e1<p

• Выбор значения секретного ключа d, d<p

• Определение значения открытого ключа e2 из выражения:

e2=e1d (mod p)

• Общедоступный ключ (e1,e2,p) может быть объявлен публично

Боб использует данный алгоритм, чтобы создать свой общедоступный и частный ключи. Любой может передавать сообщение Бобу, используя открытый ключ. Процесс шифрования сообщения представлен ниже.

Алгоритм шифрования сообщения P

• Выбор случайного числа r, удовлетворяющего условию:

0≤r<p-1 и НОД(r,p-1)=1

• Определение значения C1 из выражения: C1=e1r (mod p)

• Определение значения C2 из выражения: C2=e2r P(mod p)

• Криптограмма С, состоящая из C1 и C2, отправляется получателю

• Получатель расшифровывает криптограмму с помощью выражения:

P = [C2(C1d)-1]mod p

Пример 6

Боб выбирает 11 в качестве p. Затем он выбирает e1 = 2. Обратите внимание, что 2 – первообразный корень в Z11* (см. приложение J). Затем Боб выбирает d = 3 и вычисляет e2 = e1d = 8. Получены открытые ключи доступа – (2, 8, 11) и секретный ключ – 3. Алиса выбирает r = 4 и вычисляет C1 и C2 для исходного текста 7.

Исходный текст: 7

C1 = e1r mod 11 = 16 mod 11= 5 mod 11

C2 = (P × e2r) mod 11 = (7 × 4096) mod 11 = 6 mod 111

Зашифрованный текст: (5, 6)

Боб получает зашифрованные тексты (5 и 6) и вычисляет исходный текст.

Зашифрованный текст: [C1 × (C2d)-1] mod 11 = 6 × (53)-1 mod 11 = 6 × 3 mod 11 = 7 mod 11

Исходный текст: 7




Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: