Отечественный стандарт цифровой подписи обозначается как ГОСТ Р 34.10-94. Алгоритм цифровой подписи, определяемый этим стандартом, концептуально близок к алгоритму DSА. В нем используются следующие параметры:
р - большое простое число длиной от 509 до 512 бит либо от 1020 до 1024 бит;
q - простой сомножитель числа (р -1), имеющий длину 254...256 бит;
а - любое число, меньшее (р-1), причем такое, что аq mod p=1;
х - некоторое число, меньшее q;
у = аx mod р.
Кроме того, этот алгоритм использует однонаправленную хэш-функцию Н(х). Стандарт ГОСТ Р 34.11-94 определяет хэш-функцию, основанную на использовании стандартного симметричного алгоритма ГОСТ 28147-89.
Первые три параметра р, q и а являются открытыми и могут быть общими для всех пользователей сети. Число х является секретным ключом. Число у является открытым ключом. Чтобы подписать некоторое сообщение m, а затем проверить подпись, выполняются следующие шаги.
1. Пользователь А генерирует случайное число k, причем k<q.
2. Пользователь А вычисляет значения
r = (аk mod p) mod p,
s = (х * r + k (Н(m))) mod p.
Если Н(m) mod q=0, то значение Н(m) mod q принимают равным единице. Если r=0, то выбирают другое значение k и начинают снова.
Цифровая подпись представляет собой два числа:
r mod 2256 и s mod 2256
Пользователь А отправляет эти числа пользователю В.
3. Пользователь В проверяет полученную подпись, вычисляя
v = Н(m)q-2 mod q,
z1 = (s * v) mod q,
z2 = ((q-r) * v) mod q,
u = ((аz1 * уz2 ) mod р) mod p.
Если u = r, то подпись считается верной.
Различие между этим алгоритмом и алгоритмом DSА заключается в том, что в DSА
s = (k-1 (х * r + (Н(m)))) mod q,
что приводит к другому уравнению верификации.
Следует также отметить, что в отечественном стандарте ЭЦП параметр q имеет длину 256 бит. Западных криптографов вполне устраивает q длиной примерно 160 бит. Различие в значениях параметра q является отражением стремления разработчиков отечественного стандарта к получению более безопасной подписи.
Этот стандарт вступил в действие c начала 1995г., на данный момент не действует.
Вывод:
В данном разделе представлено несколько примеров алгоритмов, на самом деле их достаточно много, вот еще несколько примеров: Схема Диффи-Лампорта, Украинский стандарт электронной цифровой подписи ДСТУ 4145-2002, Белорусский стандарт электронной цифровой подписи СТБ 1176.2-99, Схема Шнорра, Вероятностная схема подписи Рабина, Групповая цифровая подпись, Неоспоримая цифровая подпись и т.д.