Примеры схем электронной цифровой подписи. К наиболее известным схемам цифровой подписи с прикладной точки зрения относятся схемы RSA, схемы РабинаУильямса, ЭльГамаля, Шнорра и ФиатаШамира [15], а также схема электронной цифровой подписи отечественного стандарта ГОСТ Р 34.1094 [7].
Рассмотрим несколько подробнее четыре наиболее известные схемы цифровой подписи:
Подпись RSA: Вход: Числа n, p, q, где p и q большие l разрядные простые числа, n=pq. Открытый ключ p=(e, n), секретный ключ s=d, такой, что ed1(mod φ(n)) и наибольший общий делитель НОД(e,φ(n))=1, где φ(n)=(p1)(q1).
Генерация ключей:(d,(e, n))=Ak(l, b). Подпись:As: 1. md(mod n)c, где c подпись
кода программы m. Верификация:Ap: 1. [c]e(mod n)m, 2 если m=m, подпись верна.
Подпись ЭльГамаля: Вход: Числа p и g, где p простое l разрядное число, а g первообразный корень по модулю p. Секретный ключ s=d, открытый ключ p=e, такой, что egd (mod p), m подписываемый код программы.
Генерация ключей:(d,(e, g, p))=Ak(l, b).
Подпись: As: 1.rgk(mod p), где kRZp1;
2 находится такое c, что
m[kc+dr](mod p1),
где (c, r) подпись кода m.Верификация:Ap: 1. если gm=errc(mod p),
то подпись верна.
Подпись Фиата Шамира: Вход: Числа n, p, и q, где p и q большие l разрядные простые числа, открытый ключ p есть вектор (v1, v2,., vk), где vj квадратичные вычеты по модулю n, j=, секретный ключ p есть вектор (s1, s2,., sk), где каждый sj наименьший квадратный корень из v1j, m подписываемый код, f псевдослучайная функция. Генерация ключей: ((s1, s2,., sk),(v1, v2,., vk))=Ak(l, b).
| Подпись: | As: 1. xir2i(mod n), где {r1, r2,., rk}RZn; 2 вычисляется значение a=f(m, x1, x2,., xt); 3 выбирается первые kt битов числа a как матрица 4 вычисляется: где Тогда (eij, yi) подпись кода m. |
| Верификация: | 2 если первые kt битов значения функции f(m, z1, z2,., zt) равны eij, подпись верна. |
Подпись стандарта ГОСТ Р 34.1094. Вход: Числа p, g и q где p простое l разрядное число, g первообразный корень по модулю p, а q большой простой делитель p1. Пусть также gq1(mod p), g1. Секретный ключ подписи x (1 < x < q) и открытый ключ ygx(mod p).
| Генерация ключей: | (x,(g, p, q, y))=Ak(l, b). |
| Подпись: | Ax: 1.r[gk(mod p)](mod q), где kRZq. 2s[xr+km)](mod q), где m=h(M) рассматривается как значение хэшфункции h, соответствующей отечественному стандарту на функцию хэширования сообщений ГОСТ Р 34.1194. Таким образом, пара (r, s) есть подпись кода программы M. |
| Верификация: | Ay: 1.vm1(mod q). 2 u[gsvyrv(mod p)](mod q); 3 Если u=r, то (r, s) есть подпись кода программы M, где m=h(M). |