Алгоритм DSA |
|
1. Общее описание алгоритма |
|
Алгоритм DSA основывается на двух вычислительный задачах, связанных с дискретным логарифмированием. Одной задачей является сложность вычисления логарифма в Z*p, другая задача - сложность логарифмирования в циклической подгруппе порядка q. Алгоритм является частным случаем цифровой подписи Эль-Гамаля (ElGamal) и был представлен как стандарт FIPS PUB 186-94 (DSS). | |
1.2 Генерация ключей DSA |
|
Секретным ключом является a, открытым ключом - (p,q,a ,y) |
|
1.2 Подпись сообщения |
|
Имеется сообщение m.
Подпись сообщения секретным ключом выглядит
следующим образом.
Подписью для сообщения m является пара (r,s). |
|
1.3 Проверка подписи |
|
Имеется открытый ключ
(p,q,a
,y), сообщение m, подпись сообщения (r,s).
|
|
1.4 Док-во корректности подписи |
|
Если (r,s) является корректной подписью для сообщения m, тогда должно выполняться h(m)=-ar+ks (mod q). Умножим обе части равенства на w и получим, что wh(m)+arw=k (mod q). А это есть u1+au2=k (mod q). Т.е. получаем, что (a u1a au2 mod p) mod q=(a k mod p) mod q. Или (au1yu2 mod p) mod q=(a k mod p) mod q. Это есть v=r, что и требовалось доказать. | |
2. Практические рекомендации |
|
В данном алгоритме
предлагается использовать простое p
размером от 512 до 1024 бит. Размер в 512 бит
обеспечивает минимальную защищенность.
Рекомендуемый размер - не менее 768 бит. Согласно
FIPS 186, алгоритм не допускает простых чисел больше
1024 бит. Совершенно не обязательно существование уникальных p и q для каждого пользователя алгоритма. FIPS допускает использование p,q и a в качестве системных параметров для группы пользователей. Однако для повышения безопасности работы лучше использовать уникальные значения. |
|