HTTPS&TLS Overview

超文本传输协议(HTTP)是一种用于访问互联网资源的应用层协议。由于 HTTP 以明文形式传输数据,它无法保证传输数据的机密性、完整性或真实性。为了克服 HTTP 的这些缺点,超文本传输安全协议(HTTPS)应运而生,它也被称为 HTTP over TLS 。传输层安全(TLS)协议及其前身安全套接字层(SSL)协议是加密协议,通过加密流量在互联网上提供安全通信

1. 加密层级

加密通常可以应用于不同的层级。这些层级包括静态加密、传输中加密和端到端加密。

  • 静态加密(Encryption-at-rest):意味着数据以加密形式存储,以防止未经授权的访问。一个典型的例子是硬盘加密。
  • 传输中加密(Encryption-in-transit):应用此类加密时,传输的数据在发送前会被加密,并在接收后进行解密,从而防止数据在传输过程中被未经授权的访问。TLS(传输层安全协议)就是传输中加密的一种形式。
  • 端到端加密(End-to-end encryption):这种方式将数据从实际发送者到最终接收者的全过程进行加密,确保除此之外的任何第三方都无法访问该数据。

2. TLS 概述与版本更迭

TLS 及其前身 SSL 被广泛用于保护互联网通信的安全,包括电子邮件、文件传输和网页浏览。TLS 的开发旨在解决 SSL 中的弱点,并经过多年的多次修订,每次修订都为协议引入了新功能和改进。如今,TLS 已成为互联网安全通信的标准协议。

TLS 位于 TCP 和应用层之间,应用层可以是任何应用层协议,如 HTTP、SMTP 或 FTP。TLS 对应用层协议是透明的,这意味着应用层协议无需知道是否使用了 TLS。特别是,TLS 处理所有加密操作;无论是否使用 TLS,应用层协议都可以以相同的方式运行。

2.1. 版本更迭

2.1.1. SSL版本更迭

SSL 最初由 Netscape 在 20 世纪 90 年代中期开发,作为一种保护互联网通信安全的方式。它迅速成为安全通信的标准协议,并被网页浏览器和服务器广泛采用。SSL 有三个主要版本:

  • SSL 1.0:这是 SSL 的初始版本。由于存在严重的安全漏洞,该版本从未公开发布。
  • SSL 2.0:这是首个被广泛使用的 SSL 版本,于 1995 年发布。但是该版本存在多个严重的设计缺陷,导致其在某些场景下无法实际应用,并容易遭受密码学攻击。
  • SSL 3.0:这是 SSL 的最终版本。该版本对 2.0 版进行了全面重新设计,修复了规范缺陷。但从现今视角来看,它依赖已过时的加密算法,且存在多种攻击漏洞。

2.1.2. TLS版本更迭

针对 SSL 的缺陷,TLS 协议应运而生以取代 SSL。TLS 旨在解决 SSL 的漏洞,并为安全通信提供更强大的加密和身份验证机制。与 SSL 类似,TLS 也经历了多次修订,每个版本都为协议引入了新功能和改进。TLS 的主要版本包括:

  • TLS 1.0:这是 TLS 的第一个版本,于 1999 年发布。它基于 SSL 3.0,包含了许多与 SSL 相同的功能,但增加了额外的安全增强措施。
  • TLS 1.1:该版本于 2006 年发布,引入了多项重要协议改进,包括支持新的加密算法以及针对中间人攻击(又称 On-Path Attacks )等攻击的防护措施。
  • TLS 1.2:该版本于 2008 年发布,进一步强化了安全特性,包括支持更强大的加密算法和更完善的攻击防护机制。同时引入了新功能,例如在握手过程中协商使用压缩的能力。
  • TLS 1.3:这是 TLS 的最新版本,于 2018 年发布。它包含了对协议的显著改进,包括更快的性能更强的加密以及更好的攻击防护能力。它还简化了握手过程,并能够在握手过程中协商加密算法的使用。

2.2. HTTPS与TLS

HTTPS 在其协议栈中使用 TLS。因此,HTTPS 流量经过加密和完整性保护,可防止攻击者窃听或篡改数据。

在应用层上,HTTPS 与 HTTP 完全相同,但具备 TLS 保护。 二者协议方案分别为 http(s)://

3. TLS 攻击简介

传输层安全(TLS)协议及其前身安全套接层(SSL)协议,是用于在互联网上提供安全通信的加密协议。TLS 保护传输数据的机密性、完整性和真实性。为了提供这些安全服务,TLS 采用了多种加密算法的组合,包括对称加密、非对称加密和消息认证码(MAC)。

以下是一些常见的TLS攻击

3.1. 填充预言攻击(Padding Oracle Attacks)

填充预言攻击利用存在漏洞的服务器,这些服务器在解密接收到的密文后,会泄露有关填充(Padding)正确性的信息。此类攻击能使攻击者在无需知晓加密密钥的情况下,完全解密密文。针对 TLS 的填充预言攻击实例包括POODLE、DROWN 和 Bleichenbacher 攻击

3.2. 压缩攻击 (Compression Attacks )

压缩可以应用于 HTTP 层或 TLS 层,以提高数据传输的性能。然而,配置不当的服务器可能会被利用,导致会话 Cookie 或 CSRF 令牌等加密信息泄露。基于压缩的 TLS 攻击实例包括 CRIME 和 BREACH 攻击

3.3. 杂项攻击与配置错误(Miscellaneous Attacks & Misconfigurations)

还有一种攻击方式是利用配置错误或漏洞的各种其他攻击。一个著名的例子是 Heartbleed(心脏滴血)漏洞,它利用了 OpenSSL 库中缺失的长度验证机制,可能通过私钥泄露导致服务器被完全控制。此外还有一些是因为使用不安全加密原语而损害 TLS 安全性的 TLS 配置错误