DSS - американский стандарт, описывающий Digital Signature Algorithm (DSA), который может быть использован для генерации цифровой подписи.
+
+
+
+
+
Общая информация
+ SA используется одной стороной для генерации подписи данных, а другой для проверки подлинности подписчика. Подпись генерируется при помощи закрытого ключа. Любая сторона может проверить подлинность цифровой подписи при помощи открытого ключа. Открытый ключ посылается вместе с подписанными данными. Открытый и закрытый ключи не совпадают.
+
+При генерации подписи для получения сжатой версии данных используется хэш-функция. Полученные данные обрабатываются при помощи DSA для получения цифровой подписи. Для проверки подписи используется та же хэш-функция. Хэш-функция описана в SHS (Secure Hash Standard).
+DSA использует следующие параметры:
+
+
1. p – простое число p, где 2L-1 < p < 2L, 512 =< L =< 1024 и L кратно 64
+
2. q – простой делитель p-1, причем 2159 < q < 2160
+
3. g = h(p-1)/q mod p, где h любое целое число 1 < h < p - 1 такое, что h(p-1)/q mod p > 1
+
4. x – случайное или псевдослучайное целое число, где 0 < x < q
+
5. y = gx mod p
+
6. k – случайное или псевдослучайное целое число, где 0 < k < q.
+
+
+
Генерация подписи
+
+Подписью сообщения M является пара чисел r и s, где
+r = (gk mod p) mod q
+s = (k−1(SHA(M) + xr)) mod q.
+SHA(M) — 160-битная бинарная строка.
+
+Если r = 0 или s = 0, должно быть сгенерировано новое k и вычислена новая подпись. Если подпись вычислялась правильно, вероятность того, что r = 0 или s = 0 очень мала.
+
+Подпись вместе с сообщением пересылается получателю.