【问题标题】:RSA Send A Message That Everyone Can VerifyRSA 发送每个人都可以验证的消息
【发布时间】:2017-04-02 17:48:17
【问题描述】:
我无法理解 RSA 加密算法。
假设我们有两个人 Alice 和 Bob,每个人都有自己的私钥和公钥。为了让 Alice 发送只有 Bob 可以阅读的消息,我们是否只需使用 Bob 的公钥发送加密消息?
同样,为了让 Alice 发送一条所有人都可以验证它来自她的消息,我们是否只需使用 Alice 的公钥发送一条加密消息?
谢谢!
【问题讨论】:
标签:
encryption
rsa
digital-signature
public-key
【解决方案1】:
您需要了解的是公钥基础架构。此结构由每个“用户”2 个密钥组成,一个公共密钥,一个私有密钥。 PKI 使用的算法可以使用 User1 的公钥对消息进行加密,并且只有知道 User1 的私钥,才能解密此消息。以您的示例为例,任何人都可以使用 Alice 的公钥加密消息,但只有 Alice 可以解密它,因为 Alice 是唯一拥有私钥对应方的人。
PKI 或非对称密码比对称密码慢,这就是为什么 PKI 仅用作对称密钥密码的先驱。如需更多信息,请参阅https://en.wikipedia.org/wiki/Public-key_cryptography。
【解决方案2】:
假设我们有两个人 Alice 和 Bob,每个人都有自己的私钥和公钥。为了让 Alice 发送一条只有 Bob 可以阅读的消息,我们是否只需使用 Bob 的公钥发送一条加密消息?
是的,消息用 Bob 的公钥加密,用私钥加密。 (注意消息的大小受 RSA 密钥大小的限制,所以对于大消息的加密,使用 RSA 加密来共享一个对称加密密钥)
同样,为了让 Alice 发送一个所有人都可以验证它来自她的消息,我们是否只需使用 Alice 的公钥发送一个加密消息?
这是不正确的。这种情况称为“数字签名”。消息使用 SHA 等散列算法进行消化,结果使用 Alice 的私钥加密。这是签名。 Bob 可以使用 Alice 的公钥验证消息和签名(解密签名并检查消息的哈希值是否与加密的哈希值相同)。如果验证成功,您就知道它是由 Alice 颁发的,因为她拥有私钥