Составители:
q – простое число – множитель p - 1, длиной от 254 до 256 битов;
a – любое число, меньшее p – 1, для которого a
q
mod p = 1;
K
c
– число, меньше q;
K
o
= a
K
c
mod p.
Этот алгоритм использует также однонаправленную хэш-
функцию H(x). Стандарт ГОСТ З 34.11-94 определяет хэш-
функцию, основанную на симметричном алгоритме ГОСТ 28147-
89.
Первые три параметра p, q, a открыты и могут совместно
использоваться всеми пользователями сети. Число K
c
является
секретным ключом, число K
o
– открытым ключом.
Чтобы подписать сообщение m, а потом проверить подпись,
необходимо предпринять следующие шаги:
- отправитель генерирует случайное число k′, причём k′ < q и
вычисляет значения
r = (a
k′
mod p) mod q,
s = (K
c
∗ r + k′ (H(m))) mod q.
Если H(m) mod q = 0, то его принимают равным 1. Если r = 0, то
выбирают другое значение k′ и начинают снова. Подписью служат
два числа r mod 2
256
и s mod 2
256
.
Затем получатель проверяет полученную подпись,
вычисляя
v = H (m)
q-2
mod q,
Z
1
= (s ⋅ v) mod q,
Z
2
= (( q – r) ⋅ v) mod q,
U = (( a
Z
1
⋅ K
o
Z
2
) mod p) mod q.
Если u = r, то подпись считается подлинной.
Этот алгоритм отличается от DSA уравнением для подсчёта s, в
DSA значение s = (K
c
⋅
r + k′
-1
(H (m))) mod q, что дает другое
уравнение проверки.
119
Страницы
- « первая
- ‹ предыдущая
- …
- 115
- 116
- 117
- 118
- 119
- …
- следующая ›
- последняя »