Может ли RSA использоваться как для шифрования, так и для подписи? - PullRequest
5 голосов
/ 24 марта 2011

Извините, но мой ум внезапно исчезает из-за этого вопроса ....

РЕДАКТИРОВАТЬ (Сценарий)

Если я хочу, чтобы информация обходила простые фильтры, например f-ck, можно ли шифровать информацию с помощью открытого ключа и подписывать его закрытым ключом?

Возможно, открытый ключ уже был обменен обеими сторонами, и получить открытый ключ даже трудно.

РЕДАКТИРОВАТЬ 2

Сама информация может не так много удостоверений.

Точка шифрования и подписи для обхода и целостности.

Ответы [ 2 ]

12 голосов
/ 25 марта 2011

RSA - это два алгоритма: один для асимметричного шифрования и один для подписей. Случается, что оба алгоритма могут использовать одну и ту же структуру закрытого ключа (это является источником путаницы: многие документы, в том числе стандарт RSA , пытаются объяснить подпись как «шифрование с помощью закрытого ключа», что, в лучшем случае, неточно).

Использование одного и того же ключа для обоих видов использования возможно, но на самом деле не рекомендуется, поскольку взаимодействия между обоими видами использования не были полностью изучены; Кроме того, ключи для шифрования и ключи для подписей обычно имеют разные жизненные циклы с различными механизмами защиты (например, обычно вы хотите сохранить резервную копию личного ключа для шифрования, чтобы предотвратить потерю данных: потеря личного ключа означает потерю всех данных, которые был зашифрован с этим ключом, в то время как вы не хотите создать резервную копию ключа подписи).

Ваш сценарий немного неясен. Асимметричное шифрование использует открытый ключ, а при создании подписи - закрытый ключ. Если A хочет отправить сообщение B с шифрованием (для конфиденциальности) и подписью (для целостности), то A зашифрует данные открытым ключом, для которого B знает закрытый ключ; и A подпишет данные закрытым ключом, для которого B знает открытый ключ. Это требует двух пар ключей: одна пара используется для шифрования и дешифрования (A шифрует, B дешифрует, B знает закрытый ключ), а другая пара используется для подписей (A подписывает, B проверяет , А знает закрытый ключ). Если и A, и B знают закрытый ключ, то у них есть общий секрет, и гораздо проще (и быстрее) использовать симметричное шифрование ( AES ) и проверки целостности ( HMAC ).

Стандартный отказ от ответственности: вы выглядите так, будто разрабатываете свой собственный криптографический протокол. Не делайте этого. Эта дорога ведет к тем же сбоям безопасности, на которые наткнулись бесчисленные другие умные люди. Используйте проверенный протокол, такой как SSL / TLS или OpenPGP .

0 голосов
/ 24 марта 2011

Да:

  • шифрование: вы шифруете с открытым ключом, дешифруете с помощью личного (очевидно)
  • подписывания: вы шифруете дайджест контента (хеш) с помощью закрытого ключа, проверяете с помощьюобщедоступный

См. http://en.wikipedia.org/wiki/RSA#Signing_messages

...