В августе 19991 года Национальный институт стандартов и техники (National Institute of Standards and Technology, NIST) предложил для использования в своем Стандарте цифровой подписи (Digital Signature Standard, DSS) Алгоритм цифровой подписи (Digital Signature Algorithm, DSA). DSA, представляющий собой вариант алгоритмов подписи Schnorr и EIGamal.
Алгоритм использует следующие параметры:
· p = простое число длиной L битов, где L принимает значение, кратное 64, в диапазоне от 512 до 1024. (В первоначальном стандарте размер p был фиксирован и равен 512 битам.)
· q= 160-битовой простое число - множитель p-1.
· g= h(p-1)/qmod p, где h- любое число, меньшее p-1, для которого h(p-1)/qmod p больше 1.
· x = число, меньшее q.
· y= gxmod p.
В алгоритме также используется однонаправленная хэш-функция: H(m). Стандарт определяет использование SHA.
Первые три параметра, p, q и g, открыты и могут быть общими для пользователей сети. Закрытым ключом является x, а открытым - y. Чтобы подписать сообщение, m:
(1) Алиса генерирует случайное число k, меньшее q
(2) Алиса генерирует
r= (gk mod p)mod q
s = (k -1(H(m)+ xr))mod q
Ее подписью служат параметры rи s, она посылает их Бобу.
(3) Боб проверяет подпись, вычисляя
w = s-1 mod q
u1 = (H(m) * w)mod q
u2 = (rw)mod q
v= ((
) mod p) mod q
Если v= r, то подпись правильна.
Таблица 3.4. представляет собой краткое описание алгоритма.
Открытый ключ:
| p | простое число длиной от 512 до 1024 битов (может использоваться группой пользователей) |
| q | 160-битовый простой множитель p-1 (может использоваться группой пользователей) |
| g | = h(p-1)/qmod p, где h- любое число, меньшее p-1, для которого h(p-1)/qmod p > 1 (может использоваться группой пользователей) |
| y | = gxmod p (p-битовое число) |
Закрытый ключ:
| x | < q(160-битовое число) |
Подпись:
| k | выбирается случайно, меньшее q |
| r | (подпись) = (gk mod p)mod q |
| s | (подпись) = (k -1(H(m)+ xr))mod q |
Проверка:
| w | = s-1 mod q |
| u1 | = (H(m) * w)mod q |
| u2 | = (rw)mod q |
| v | = (( ) mod p) mod q
|
| Если v= r, то подпись правильна. |






