了解 2048 位 SSL 和 256 位加密

信息安全 加密 tls 证书
2021-09-01 08:55:58

在 DigiCert 的页面上,他们宣传使用 256 位加密的 2048 位 SSL:http ://www.digicert.com/256-bit-ssl-certificates.htm

这里到底有什么区别,为什么要引用两个加密位?

这是广告的截图:

在 Geotrust 的 Premium SSL 广告中,他们将其宣传为:

Security: domain control validation, strong 256-bit encryption, 2048-bit root

那么256位加密和2048位根有什么区别呢?

希望能澄清这个问题。

4个回答

2048 位是关于 RSA 密钥对:RSA 密钥是包含一个大整数的数学对象,“2048 位密钥”是一个大整数大于2 2047但小于2 2048的密钥。

256 位是关于 SSL 的。在 SSL 中,服务器密钥仅用于传输一个随机的 256 位密钥(那个没有数学结构,只是一堆位);粗略地说,客户端生成一个随机的 256 位密钥,用服务器的 RSA 公钥(服务器证书中的“2048 位密钥”)对其进行加密,并将结果发送到服务器。服务器使用自己的 RSA 私钥进行反向操作,从而获得客户端选择的 256 位密钥。之后,客户端和服务器使用 256 位进行对称加密和完整性检查,并且 RSA 不再用于该连接。

有关更多详细信息,请参阅此答案。这种设置通常称为“混合加密”。这样做是因为 RSA 不适合批量加密,但对称加密无法完成启动所需的初始公共/私人业务。

(SSL 可以与 RSA 以外的其他算法进行密钥交换,所以我在上面的文字中稍微简化了描述,但这就是这个想法的要点。)

添加更多细节,2048 位 RSA 密钥称为非对称加密。它用于验证身份(签名)并确保只有预期的接收者才能访问发送的信息(加密)。它由两部分组成,一个公钥和一个私钥。密钥实际上是相互关联的,但是因为它们是由两个非常大的伪素数(彼此相关的素数)关联的,所以很难从公众那里找出私钥。

也就是说,因为该算法基于一些非常难以计算(但可以解决)的东西,所以它不如基于共享秘密的对称算法安全,后者在数学上不可解决且不依赖于复杂性关于安全的数学问题(稍后会详细介绍)。这就是为什么密钥比对称密钥(只有 256 位)大得多的原因。为了使方程难以求解,需要更大的密钥,而且使用非对称密钥传输的信息越多,它被破坏的可能性就越大(此外,加密/解密的处理器强度更高)。

因此,SSL 仅将 RSA 用于验证和密钥交换阶段。相反,生成一个对称密钥(如果客户端上的浏览器支持,则在这种情况下为 256 位)并通过 RSA 加密传输回服务器,然后通过共享密钥和对称算法交换其余数据。

这发生在客户端首先解码对服务器使用其私钥加密的挑战的响应,然后客户端可以查看服务器的公钥(由 CA(在本例中为 DigiCert ) 已包含在大多数浏览器中)。当解码的响应与挑战匹配时,客户端知道服务器响应了请求(尽管可能有中间人中继它)。客户端然后生成 256 位对称密钥并使用服务器的公钥对其进行加密并将其发送到服务器。因为密钥是用服务器的公钥加密的,所以只有知道私钥的服务器才能解密它。这意味着上一步中的任何中间人都无法知道新的共享密钥。

只是为现有答案添加一些细节......

我的问题是客户端如何知道生成随机 256 位密钥?(为什么不是 128?)。

这取决于协商的密码套件。定义为 TLS 1.1 一部分的列表在RFC 4346 附录 A.5中。例如TLS_RSA_WITH_AES_128_CBC_SHA将使用 128 位密钥,而TLS_DHE_RSA_WITH_AES_256_CBC_SHA将使用 256 位密钥。

协商哪个密码套件将取决于客户端和服务器配置,而不是服务器上安装的证书。当客户端使用Client Hello消息启动连接时,它会发送它支持的密码套件列表。然后服务器选择它想要的并在它的Server Hello消息中这样说。

然后,该密码套件确定这些对称密钥最终如何共享。SSL/TLS 握手的直接目的是在客户端和服务器之间建立一个共享的pre-master secret 。这更广泛地称为密钥交换(参见 RFC 4346 附录 F.1.1)

这分为两类(不包括匿名密钥交换):

  • RSA 密钥交换(例如TLS_RSA_WITH_AES_128_CBC_SHA):客户端使用服务器的公钥(在证书中找到)加密预主密钥。
  • DH(E) 密钥交换(例如TLS_DHE_RSA_WITH_AES_256_CBC_SHA):发生 Diffie-Hellman 密钥交换。服务器对其 DH 参数进行签名,客户端根据服务器证书中的公钥验证签名。(拥有基于 RSA 的证书并不意味着 RSA 密钥交换。)

在握手结束时,无论使用这两个步骤中的哪一个,客户端和服务器都拥有一个共同的pre-master secret,它们从中派生一个主密钥(参见RFC 4346 第 8.1 节)。

如RFC 4346 第 6.3 节中所述,双方都可以从该主密钥导出加密密钥(和 MAC 密钥) 。

除了密钥类型(RSA 或 DSS)之外,其中没有任何内容使加密密钥的大小取决于证书。此外,这两种类型都有使用 256 位密钥的密码套件:例如TLS_DHE_DSS_WITH_AES_256_CBC_SHATLS_DHE_RSA_WITH_AES_256_CBC_SHA. (DSS 是一种仅签名算法,因此您不会获得类似 RSA 的密钥交换来加密预主密钥。)

证书中密钥的大小仅对防止伪造密钥交换(或能够破译记录的流量)很重要:如果有人能够从证书中的公钥中找到私钥,他们可以充当一个 MITM 来模拟真实服务器,否则他们将能够在使用 RSA 密钥交换时破译加密的预主密钥(以及因此记录的流量)(DHE 密码套件旨在防止访问预主密钥,即使攻击者掌握了私钥和记录的流量,请参阅此问题)。这就是为什么足够大的非对称密钥很重要的原因。

认证机构倾向于在他们的网站上放置“256 位”,因为从营销的角度来看它看起来不错。

这没有错,但是对于那些不了解服务器的设置方式和客户支持的内容很重要的人来说,这可能会产生误导。

来自 Digicert:https ://www.digicert.com/ssl-cryptography.htm

“公钥基础设施 (PKI) 使用混合密码系统,并受益于使用这两种类型的”“(非对称和对称)加密”。

非对称加密(或公钥加密)使用单独的密钥进行加密和解密。”

对称加密(或预共享密钥加密)使用单个密钥来加密和解密数据。”

“公钥密码术(非对称)使用 RSA 等加密算法来创建公钥和私钥。” “RSA 是基于对大整数分解的假定难度。” “小于 2048 位的密钥不再被认为可以安全使用”;“平均需要 140 亿年以上的时间才能破解一台计算机。”

“对称密钥大小通常为 128 或 256 位。” “一个 128 位的密钥有 340,282,366,920,938,463,463,374,607,431,768,211,456 种加密代码的可能性”;“破解 128 位密钥需要相当长的时间。”

总结:
2048是指Digicert 提供的非对称加密,用于传输256 位对称密钥,以促进客户端和服务器之间的数据交换(安全通信)(通过 SSL/TLS)。