DSA
Материал из Википедии — свободной энциклопедии
DSA (Digital Signature Algorithm) — алгоритм с использованием открытого ключа для создания электронной подписи, но не для шифрования. Секретное создание хеш-значения и возможность её публичной проверки означает, что только один субъект может создать хеш-значение сообщения, но любой может проверить её корректность. Основан на вычислительной сложности взятия логарифмов в конечных полях.
Алгоритм был предложен Национальным Институтом Стандартов и Технологий (США) в августе 1991 и является запатентованным U.S. Patent 5231668 (англ.), но НИСТ сделал этот патент доступным для использования без лицензионных отчислений.
Содержание |
[править] Выбор параметров
Для подписывания сообщений необходима пара ключей — открытый и закрытый. При этом закрытый ключ должен быть известен только тому, кто подписывает сообщения, а открытый — любому желающему проверить подлинность сообщения. Также общедоступными являются параметры самого алгоритма.
[править] Параметры алгоритма
- Выбор хеш-функции H(x). Для использования алгоритма необходимо, чтобы подписываемое сообщение являлось числом. Хеш-функция должна преобразовать любое сообщение в число
- Выбор большого простого числа q, размерность которого в битах совпадает с размерностью в битах значений хэш-функции H(x)
- Выбор простого числа p, такого, что (p-1) делится на q. Размерность p задаёт криптостойкость системы. Ранее рекомендовалась длина в 1024 бита. В данный момент для систем, которые должны быть стойкими до 2010 (2030) года, рекомендуется длина в 2048 (3072) бита.
- Выбор числа g такого, что его мультипликативный порядок по модулю p равен q. Для его вычисления можно воспользоваться формулой
, где h — некоторое произвольное число,
такое, что
. В большинстве случаев значение h = 2 удовлетворяет этому требованию
[править] Генерация открытого и закрытого ключа
- Закрытый ключ представляет собой число в интервале

- Открытый ключ вычисляется по формуле

Открытыми параметрами являются числа (p, q, g, y). Закрытый параметр только один — число x.
[править] Подпись сообщения
Подпись сообщения выполняется по следующему алгоритму:
- Выбор случайного числа

- Вычисление

- Вычисление

- Выбор другого k, если оказалось, что r=0 или s=0
Подписью является пара чисел (r, s)
[править] Проверка подписи
Проверка подписи выполняется по алгоритму:
- Вычисление

- Вычисление

- Вычисление

- Вычисление

Подпись верна, если v = r
[править] См. также
Для улучшения этой статьи желательно?:
|
| Это незавершённая статья по математике. Вы можете помочь проекту, исправив и дополнив её. |
| Это незавершённая статья по криптографии. Вы можете помочь проекту, исправив и дополнив её. |

