无密钥 SSL (Keyless SSL)使无法共享其私钥的组织可以在保持 SSL/TLS 加密的同时迁移到云。
阅读本文后,您将能够:
相关内容
订阅 TheNET,这是 Cloudflare 每月对互联网上最流行见解的总结!
复制文章链接
无密钥 SSL 是向使用云供应商进行 SSL 加密的公司提供的服务。通常情况下,云供应商必须知道公司的私钥,但无密钥 SSL 是避免这样做的一种方法。出于监管原因,许多组织无法共享其私钥。通过使用无密钥 SSL,这些公司在保证密钥安全的同时,仍能使用 TLS 和云服务。
SSL(更确切的叫法是 TLS),是一种用于在网络上验证身份和加密通信的协议。SSL/TLS 要求使用所谓的公钥和私钥,如果某家公司使用该协议来保护往返其网站的流量(请参见 HTTPS),私钥通常仍由该公司持有。但是当该公司迁移到云中并由供应商提供 TLS 加密时,私钥将改为由该供应商持有。
通过将涉及私钥的握手部分移出供应商的服务器,私钥可以安全地保留在公司的手中。云供应商不是直接使用私钥来验证供应商的服务器,而是将数据转发到公司服务器并从公司服务器接收数据来完成此操作。此通信通过安全的加密通道进行。因此,仍然使用私钥,但不会与公司外部的任何人共享。
例如,假设 Acme Co. 实施 TLS。Acme Co. 会将其私钥安全地存储在他们拥有和控制的服务器上。如果 Acme Co. 迁移到云并使用云服务提供商进行 Web 托管,则该供应商将拥有私钥。但如果 Acme Co. 与实施无密钥 SSL/TLS 的供应商一起迁移到云,那么私钥可以保留在 Acme Co. 拥有和控制的服务器上,就像在非云 SSL 实施中一样。
无密钥 SSL 基于这样一个事实:私钥仅在 TLS 握手期间使用一次,即 TLS 会话开始时。无密钥 SSL 通过在地理上拆分 TLS 握手的步骤来实现。提供无密钥 SSL 的云供应商将这个过程的私钥部分迁移到另一台服务器上,通常是客户的本地服务器。
当在握手期间解密或签署数据需要私钥时,供应商的服务器会将必要的数据转发给客户的私钥服务器。私钥解密或签署客户服务器上的数据,客户服务器将数据发送回供应商服务器,TLS 握手照常继续。
无密钥 SSL 仅从云供应商的角度来看为“无密钥”:他们从不查看其客户的私钥,但客户仍拥有并可使用私钥。同时,公钥仍如常在客户端使用。
在 RSA 握手中,TLS 握手的步骤如下:
无密钥 SSL 在步骤 4 中生效。凭借无密钥 SSL,云供应商无需自行解密预主密钥,而是通过安全通道以加密形式将其发送到客户托管或控制的服务器。客户的私钥将解密预主密钥,然后将解密的预主密钥发回云供应商。云供应商的服务器使用此项得出会话密钥,并且 TLS 通信如常继续。
短暂 Diffie-Hellman (DHE) 握手(“短暂”是指同一密钥从不使用两次)使用 Diffie-Hellman 算法生成会话密钥,这是一种在不安全通道上交换密钥的方法。通过这种 TLS 握手,私钥身份验证成为独立于会话密钥生成的过程。
除了使用的算法之外,DHE 握手和 RSA 握手之间的主要区别在于如何生成预主密钥。在 RSA 握手中,预主密钥由客户端生成的随机数据组成。在 DHE 握手中,客户端和服务器使用商定的参数分别计算相同的预主密钥。
私钥仅在步骤 2 中使用,这是无密钥 SSL 变得重要的地方。此时,SSL/TLS 供应商将客户端随机数、服务器随机数和服务器的 DH 参数发送到拥有私钥的客户控制的服务器。此信息用于生成服务器的数字签名,且会发送回云供应商,后者将其传递给客户端。客户端能够使用公钥验证此签名,然后握手继续进行。这样,云供应商就不需要接触私钥。
短暂 Diffie-Hellman 握手尽管比 RSA 握手花费的时间稍长,但有称为前向保密的优点。由于私钥仅用于身份验证,因此攻击者无法使用它来查找任何指定的会话密钥。
会话密钥是在 TLS 握手完成后由通过 TLS 进行安全通信的双方使用的对称密钥。一旦双方商定了一组会话密钥,就不再需要使用公钥和私钥。TLS 为每个唯一的会话生成不同的会话密钥。
前向保密确保加密的数据即使私钥公开时仍保持加密。这也称为“完美前向保密”。如果每个通信会话使用唯一的会话密钥,并且会话密钥与私钥分开生成,则前向保密是可能的。如果单个会话密钥受损,则攻击者只能解密该会话;所有其他会话都将保持加密状态。
在为前向保密设置的协议中,私钥在初始握手过程中用于身份验证,否则不会使用。短暂 Diffie-Hellman 握手将会话密钥与私钥分开生成,因此具有前向保密。
相反,RSA 没有前向保密;在私钥受损的情况下,攻击者可以确定过去对话的会话密钥,因为他们可以解密明文形式的预主密钥以及客户端随机数和服务器随机数。通过将这三者结合起来,攻击者可以得到任何指定的会话密钥。
Cloudflare 是第一个发布无密钥 SSL 的云供应商,让面临严格安全限制的企业(例如银行)能够迁移到云。Cloudflare 同时支持 RSA 和 Diffie-Hellman 握手,因此公司可以集成前向保密,防止攻击者在窃取其私钥后解密其数据。
Cloudflare 服务器与私钥服务器之间的所有通信均通过安全的加密通道进行。此外,尽管需要额外访问私钥服务器,Cloudflare 发现无密钥 SSL 对性能的影响可以忽略不计。
有关无密钥 SSL 工作原理的更多技术细节,请查看这篇博客文章。要进一步了解 Cloudflare 无密钥 SSL 的更多信息,欢迎探索我们的无密钥 SSL 服务。