ssl - 在 PKI 中,如果每个人都知道公钥,是否意味着任何人都可以解密……?

标签 ssl encryption openssl ssl-certificate pki

在 PKI 中,如果每个人都知道服务器的公钥,这是否意味着任何人都可以解密服务器对由私钥加密的客户端的响应,只要有人可以嗅探,私钥又可以由服务器公钥解密其他人在中间交通?

最佳答案

在最简单的形式中,公钥加密用于单向通信。

如果 Alice 有一对公钥/私钥,并且她将公钥发给每个人,那么任何人都可以使用 Alice 的公钥加密一条消息,而只有 Alice 可以使用她的私钥解密该消息。爱丽丝使用她的私钥加密消息以供其他人阅读。

对于双向安全通信,公钥加密通常用于传输双方可用于安全通信的 session key 。

假设 Bob 想与 Alice 交谈。有了爱丽丝的公钥,鲍勃用它来加密一个私钥,然后把它发送给爱丽丝。然后爱丽丝使用她的私钥来解密私钥。现在 key 只有 Alice 和 Bob 知道。因此他们都可以使用 key 和 AES 等对称加密算法在他们两者之间来回发送消息。

爱丽丝可以用她的私钥做的一件事是创建一个数字签名。爱丽丝可以编写一条消息,对消息进行哈希处理,然后用她的私钥对哈希进行编码。然后 Alice 将消息连同加密的哈希一起公开发送出去。任何拥有 Alice 公钥的人都可以解码哈希并确保消息的哈希与编码后的哈希相匹配。因为只有 Alice 可以创建编码哈希,所以读者知道 Alice 实际上确实发送了该消息。

关于ssl - 在 PKI 中,如果每个人都知道公钥,是否意味着任何人都可以解密……?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32636108/

相关文章:

SSL 证书在创建当天过期

ssl - 使用过时的密码套件对连接进行加密

haskell - 使用随机数加密消息

java - 如何在 Java 中加密,在 Android 和 iOS 中解密

perl - 将公钥参数从 Crypt::OpenSSL::RSA 转换为 JWK 失败

python - aiohttp 和基于证书的身份验证 (cba)

ssl - 如何在 Cloudfront 中使用 Amazon ACM 证书?

ssl - 在 mTLS 中,客户端 CN 名称真的很重要吗?

ssl - 不明白 OpenSSL_add_all_algorithms 方法

openssl - "openssl verify"对于坏的证书链给出 OK