与暴露于互联网的所有网络一样,CDN 必须防御在途攻击、数据泄露,以及试图通过 DDoS 攻击压垮目标源服务器的网络的行为。CDN 可使用多种策略来缓解漏洞,包括适当的 SSL/TLS 加密和专门的加密硬件。
什么是 SSL/TLS 加密?
传输层安全(TLS)是用于加密通过互联网发送的数据的协议。TLS 源于安全套接字层(SSL)(首个被广泛采用的 Web 加密协议),旨在是修复大多数早期协议的安全漏洞。出于历史原因,业界仍然在某种程度上互换使用这两个术语。如果您访问 web 站点地址开头为 https:// 而非 http://,那么该网站在浏览器和服务器之间进行的通信使用 TLS/SSL 加密。
为了防止攻击者访问重要数据,必须采取适当的加密方法。由于互联网的设计方式允许数据在许多位置之间传输,因此可以在含有重要信息的数据包在全球范围内传播时截获它们。通过使用加密协议,只有预期的接收者才能够解码和读取信息,防止中间人对所传输数据的内容进行解码。
TLS 协议设计为提供 3 个组件:
身份验证:验证所提供身份标识的有效性
加密:模糊化从一台主机发送到另一主机的信息
完整性:检测伪造和篡改
什么是 SSL 证书?
要启用 TLS,站点需要 SSL 证书和相应的密钥。证书是包含有关站点所有者以及非对称密钥对中公钥部分的信息的文件。证书颁发机构(CA)对证书进行数字签名,以核实证书中的信息正确无误。信任证书即表示,您信任证书颁发机构已进行了尽职调查。
操作系统和浏览器通常具有一份隐式信任的证书颁发机构名单。如果网站提供的证书是由不受信任的证书颁发机构签名的,则浏览器会警告访问者可能存在某种问题。
证书及其实施方式也可以根据强度、协议支持和其他特征进行独立评级。随着更新、更好的实施变得可用,或者其他因素导致认证实施的整体安全性降低,评级可能会不时变化。如果源服务器的 SSL 安全性实施比较旧且等级较低,那么其评级通常会比较差,而且容易受到破坏。
CDN 还有一个好处,使用 CDN 提供的证书可以为访问其网络内托管的资产的访问者提供安全保护。因为访问者仅连接到 CDN,所以源服务器和 CDN 之间使用较旧或较不安全的证书不会影响客户端的体验。
实际上,这种服务器至边缘安全的薄弱仍然是一种漏洞,应予以避免,特别是考虑到有可能使用免费源加密轻松升级源服务器安全性的情况。
适当的安全性对于有机搜索也很重要;加密的 Web 资产在 Google 搜索中的排名更高。
SSL/TLS 连接的运作不同于传统的 TCP/IP 连接。在完成了 TCP 连接的初始阶段后,就会发生单独的交换以建立安全连接。本文把请求安全连接的设备称为客户端,并把提供安全连接的设备称为服务器,就像用户加载使用 SSL/TLS 加密的网页时那样。
首先,通过 3 个步骤进行TCP/IP 握手:
1.客户端向服务器发送 SYN 数据包以发起连接。
2.服务器接着通过 SYN/ACK 数据包对着初始数据包做出响应,以便确认通信。
3.最后,客户端返回 ACK 数据包以确认接到服务器发出的数据包。完成这一系列数据包发送和接收操作后,TCP 连接将处于打开状态并且能够发送和接收数据。
完成 TCP/IP 握手后,开始 TLS 加密握手。TLS 握手实施背后的详细过程不在本指南的讨论范畴。我们重点探讨握手的核心目的,以及完成该过程所需的时间。
从高层次上讲,TLS 握手包含三个主要组成部分:
客户端与服务器协商 TLS 版本,以及通信中要使用的加密算法类型。
客户端和服务器采取相应步骤,以确保彼此进行真实的通信。
交换密钥,以用于以后的加密通信。
下图呈现了 TCP/IP 握手和 TLS 握手中涉及的每个步骤。请注意,每个箭头代表一个单独的通信,该通信必须在客户端和服务器之间进行物理传输。由于使用 TLS 加密时来回消息总数会增加,因此网页加载时间也会增加。
出于说明目的,可以说 TCP 握手大约需要 50 毫秒,TLS 握手可能需要大约 110 毫秒。这主要是由于数据在客户端和服务器之间双向发送所花费的时间。往返时间 (RTT)的概念,即信息从一个设备传输到另一个设备并返回所需的时间量,可用于量化创建连接的“昂贵”程度。如果不进行优化并且不使用 CDN,额外的 RTT 代表最终用户的延迟增加和加载时间减少。幸运的是,可以进行一些优化来改善总加载时间并减少来回旅行的次数。
如何改善 SSL 延迟?
SSL 优化可以减少 RTT 并缩短页面加载时间。下方列出了可以优化 TLS 连接的 3 种方式:
TLS 会话恢复:CDN 可以为其他请求恢复同一会话,使源服务器和 CDN 网络之间的连接保持更长的时间。当客户端需要进行未缓存的源获取时,使连接保持活动状态可以节省重新协商 CDN 与源服务器之间连接所花费的时间。只要源服务器在保持与 CDN 的连接的同时收到其他请求,该站点的其他访问者就会体验到较低的延迟。
会话恢复的总成本不到完整 TLS 握手的 50%,主要是因为会话恢复只需要一次往返,而完整的 TLS 握手需要两次。此外,会话恢复不需要任何大的有限域算法(新会话需要),因此与完整的 TLS 握手相比,客户端的 CPU 成本几乎可以忽略不计。对于移动用户而言,会话恢复带来的性能提升意味着更具反应性和电池寿命友好的冲浪体验。
启用 TLS 虚假启动:访问者首次访问网站时,上文所述的会话恢复将无济于事。TLS 虚假启动允许发送方无需进行完整的 TLS 握手,就能发送应用程序数据。
虚假启动不会修改 TLS 协议本身,只会改变数据传输的时间。一旦客户端开始密钥交换,加密确保会发生,数据传输就可开始。这一修改可减少往返总次数,将所需的延迟缩短 60 毫秒。
零往返时间恢复(0-RTT):0-RTT 允许会话恢复,而且不增加连接的RTT 延迟。对于使用TLS 1.3和0-RTT 的恢复连接,连接速度得以改善,从而为用户经常访问的网站带来了更快速、更流畅的Web 体验。这种速度提升在移动网络上尤为显着。
0-RTT 是有效的改进,但并非没有安全上的妥协。为了应对所谓的重播攻击的风险,CDN 服务可能会对 HTTP 请求的类型和允许的参数实施限制。要了解更多信息,请浏览 0-RTT 简介。
CDN 防御 DDoS 攻击
现代互联网上 Web 资产最严重的安全漏洞之一是使用分布式拒绝服务 (DDoS) 攻击。随着时间的推移,DDoS 攻击的规模和复杂性都在增加,攻击者利用僵尸网络攻击具有攻击流量的网站。大型且配置正确的 CDN 具有潜在的规模优势,可以作为 DDoS 的保护因素;通过拥有足够的数据中心位置和相当大的带宽能力,CDN 能够承受和减轻大量传入的攻击流量,这些流量很容易使目标源服务器不堪重负。