Отечественный стандарт цифровой подписи обозначается как ГОСТ Р 34.10−94. В этом алгоритме цифровой подписи используются следующие параметры:
р — большое простое число длиной от 509 до 512 бит либо ст 1020 до 1024 бит;
q — простой сомножитель числа (р-1), имеющий длину 254.256 бит;
а — любое число, меньшее (р-1), причем такое, что aq mod р = 1;
х — некоторое число, меньшее q;
у = ax mod р.
Кроме того, этот алгоритм использует однонаправленную хэш-функцию Н (х). Стандарт ГОСТ Р 34.11−94 определяет хэш-функцию, основанную на использовании стандартного симметричного алгоритма ГОСТ 28 147–89.
Первые три параметра p, q и, а являются открытыми и могут быть общими для всех пользователей сети. Число х является секретным ключом. Число у является открытым ключом.
Чтобы подписать некоторое сообщение m, а затем проверить подпись, выполняются следующие шаги:
- 1. Пользователь, А генерирует случайное число k, причем k
- 2. Пользователь, А вычисляет значения
r = (аk mod р) mod q,.
s = (x * r + k (H (m))) mod q.
Если H (m) mod q = 0, то значение H (m) mod q принимают равным единице. Если r = 0, то выбирают другое значение к и начинают снова.
Цифровая подпись представляет собой два числа:
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 = ((az1 * yz2) mod p) mod q.
Если u = r, то подпись считается верной.
Следует также отметить, что в отечественном стандарте ЭЦП параметр q имеет длину 256 бит. Западных криптографов вполне устраивает q длиной примерно 160 бит. Различие в значениях параметра q является отражением стремления разработчиков отечественного стандарта к получению более безопасной подписи.
Этот стандарт вступил в действие с начала 1995 г.