为什么主题的公钥不用于 SSL 中的加密?

信息安全 tls 公钥基础设施
2021-08-30 19:33:45

据我了解 SSL 的工作原理 - 客户端生成预主密钥并将其发送到使用服务器公钥加密的服务器。现在,双方都执行了一些步骤来生成主密钥和会话密钥。从现在开始,此会话密钥用于对称加密(例如 HTTPS 中的通信)。

我的问题是,鉴于我们正在将服务器的公钥发送给客户端——并且它也正在通过使用证书颁发机构的数字签名进行身份验证和验证——我们为什么不直接使用这个公钥进行加密呢?

是因为非对称加密效率较低吗?这是在握手期间效率较低的操作(发送预主密钥和生成主密钥)而不是多次非对称加密之间的权衡吗?任何的想法?

澄清:我的问题不建议对会话密钥使用非对称加密,而是我询问完全没有会话密钥,即只使用发送给客户端的公钥进行加密。请参阅我的答案以了解我的问题。

3个回答

有几个原因。主要是性能:非对称加密很慢。

此外,许多这样的算法对于它们可以加密的数据都有一个固定的最大大小(RSA,如 PKCS#1 中所定义,常用密钥大小的最大值为245 字节)。

此外,您不能以这种方式实现前向安全性:任何获得私钥副本的人都将能够解密任何过去的消息。

最后,简单的事实是,协商加密方案以强制它使用用于签署证书的加密方案更加灵活。

我们根本无法做到这一点。让我解释:

如果我们使用公钥进行加密,会出现以下问题:

  1. 从客户端到服务器,一切都会正常工作——客户端将发送加密消息——服务器将使用它的私钥解密。
  2. 当服务器必须发送一些东西时就会出现问题——它将使用哪个密钥进行加密——它不能使用它的私钥,因为它的公钥是公开的。

一种解决方案可能是客户端也可以发送其公钥,服务器将使用客户端的公钥进行加密。好吧,那么最好使用当前的方法,而不是添加更多步骤来验证客户端的公钥。另外,如here所述,它很容易受到攻击

根据这个答案,关键不是非对称加密会“效率较低”,只是它具有不同的属性,因此与对称加密有不同的用途。

SSL 需要来自两个世界的属性,因此它自然地结合了非对称和对称密码。