Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Пособие КЗИ учебное пособие.docx
Скачиваний:
131
Добавлен:
08.05.2019
Размер:
1.34 Mб
Скачать

5.2.4. Алгоритм цифровой подписи Эль-Гамаля

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

Так же как и для шифрования Эль-Гамаля выбираются параметры системы:

P – большое простое число (порядка 1024-2048 бит).

Q – простой делитель числа P – 1 (порядка 160 бит).

G – порождающий элемент мультипликативной группы

Секретным ключом является:

x – целое случайное число в диапазоне 2 ≤ xP – 2.

Открытый ключ Y вычисляется по формуле:

Y = Gx (mod P).

Подпись для сообщения M вычисляется при помощи следующего алгоритма:

  1. Выбрать случайный эфемерный сеансовый ключ k, 2 ≤ kP – 2, взаимно простой с P – 1, НОД(k, P – 1) = 1.

  2. Вычислить R = Gk (mod P).

  3. Вычислить S = (M - xR)k -1 (mod P – 1).

  4. Подписью сообщения M служит пара (R, S).

Если сообщениe M большое, то при вычислении S используют его хэш-значение H(M).

Алгоритм проверки подписи заключается в проверке сравнения:

.

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

Пример. Выберем P = 11 и G = 2, а закрытый ключ x = 8.

Вычислим:

Y = Gx mod P = 28 mod 11 = 3.

Открытым ключом являются Y = 3, G = 2, и P = 11. Чтобы подписать M = 5, сначала выберем случайное k = 9. Убеждаемся, что НОД(9, 10) = 1. Вычисляем:

R = Gk mod P = 29 mod 11 = 6.

Далее с помощью расширенного алгоритма Евклида находим k – 1 = 9 mod (11 – 1) и S:

S = (M - xR)k -1 (mod P – 1) = (5 – 8 · 6) 9 mod (11 – 1) = 3.

Подпись составит пару (6, 3).

Для проверки подписи убедимся, что:

36·63 mod 11 = 25 mod 11.

Схема Эль-Гамаля послужила образцом для построения большого семейства во многом сходных по своим свойствам схем подписи. В их основе лежит проверка сравнения вида:

в котором тройка (A, B, C) совпадает с одной из перестановок чисел M, S, R.

Например, исходная схема Эль-Гамаля получается при

A = M, B = – R и C = S.

Еще одно достоинство данного семейства является возможность уменьшения длины подписи путем замены пары чисел (R, S) на пару чисел (R mod Q, S mod Q). При этом проверочное равенство по модулю P следует заменить на модифицированное равенство по модулю Q:

.

На основе семейства данных схем построены стандарты цифровой подписи DSS и ГОСТ Р34.10-94.

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

5.2.5. Алгоритм цифровой подписи Шнорра

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

Параметры системы совпадают с параметрами P, Q, G системы Эль-Гамаля.

Закрытый ключ x – целое число из и

нтервала 1 < x < Q – 1. Открытый ключ определяется формулой Y = Gx (mod P). Чтобы подписать сообщение в алгоритме Шнорра поступают следующим образом:

- Выбирают эфемерный ключ k из промежутка 1 < k < Q – 1.

- Вычисляют соответствующий открытый ключ R = Gk mod P.

- Находят E = H(M||R). Значение функции зависит как от сообщения, так и от эфемерного ключа.

- Вычисляют S = k + x · E (mod Q).

Полученная таким образом пара (E, S) является искомой подписью.

Для проверки подписи вычисляют:

R = GSY-E (mod P) и H(M||R).

Подпись корректна, если верно равенство E = H(M||R).

(Возможен вариант, в котором закрытый ключ вычисляется по формуле Y = G-x (mod P) и тогда проверочное уравнение принимает форму RGSYE (mod P).)

Пример. Параметры домена Q = 101, P = 607 и G = 601.

Чтобы зафиксировать ключевую пару, положим x = 3 и

Y = Gx (mod P) = 6013 (mod 607) = 391.

Затем генерируем эфемерный ключ k = 65 и вычисляем.

R = Gk (mod P) = 60165 (mod 607) = 223.

Теперь находим хэш-значение E = H(M||R). Допустим, что при этом получилось E = 93. Тогда вторая компонента подписи выглядит как

S = k + x · E (mod Q) = 65 + 3 · 93 (mod 101) = 41.

При проверке подписи (E, S) теоретически можно вычислить

R’ YE (mod P) = 223 · 39193 (mod 607) = 172.

GS (mod P) = 60141(mod 607) = 172.

Но так как Rне передается напрямую, а только в виде свертки E = H(M||R), придется вычислять:

R’ = GSY-E (mod P) = 60141 · (39193)-1 (mod 607) = 172 · (537)-1 (mod 607) = 223.

Соответственно совпадут и хэш-значения H(M||R) = H(M||R) = 93.