Как стать автором
Обновить

Комментарии 4

Существует множество криптографических алгоритмов, которые используются для шифрования и которые можно применять для создания цифровой подписи. Например RSA и AES.

AES (Advanced Encryption Standard) - это алгоритм шифрования, он не используется для подписей. Более того, это алгоритм симметричного шифрования и не работает с парами открытый-закрытый ключ.

Но для создания цифровой подписи уже придуман отдельный криптографический алгоритм под названием DSA (Digital Signature Algorithm). Он основан на использовании пары открытого и закрытого ключа. Подпись создается секретно при помощи закрытого ключа, а проверяется публично открытым ключом. Тем самым закрытый ключ остается никому неизвестным.

Это не какой-то алгоритм, который один придуман специально для подписей и полностью решает проблему. Есть множество алгоритмов подписей, один из которых - DSA. RSA - это тоже схема подписи с публичным ключом, в этом плане DSA и RSA подписи ничем не отличаются.

Спасибо за корректировку. Хотел бы дополнить здесь еще, что на сколько я знаю, RSA действительно подходит для подписи тоже. При этом он быстрее шифрует, но медленнее расшифровывает и подписывает, чем DSA.

в Sign message and verify using ECDSA описаны 4 пункта, но нигде не описано как используется приватный ключ. как используется приватный ключ в подписи?

Хорошо подмечено, потому что я опустил там формулы для расчета значений {r, s, v}.
Добавлю сюда шаги с формулами.
Приватный ключ обозначим в расчетах, как d.

Упрощенный алгоритм подписи сообщения:
1. Рассчитывается хеш сообщения e
2. Создается случайное безопасное значение k
3. Рассчитывается точка (x1, y1) на эллиптической кривой, путем умножения k на G (это константа эллиптической кривой)
4. Рассчитывается значение r сигнатуры по формуле: r = x1 mod n. Если r = 0, то вернуться на шаг 2.
5. Рассчитывается значение s сигнатуры по формуле: s = (k ** -1) * (e + r*d) mod n. Если r = 0, то вернуться на шаг 2.

Ответ: получается, что приватный ключ используется для вычисления значения s для получения подписи сообщения.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий