文章目录
TLS:(Transport Layer Security,传输层安全协议)
SSL:(Secure Socket Layer,安全套接字层)
一、核心概念
TLS 及其前身 SSL 是密码学协议,用于在两个通信应用程序之间通过网络(如互联网)提供端到端的安全通信。其主要目标是:
- 保密性 (Confidentiality):通过加密防止数据被窃听。
- 完整性 (Integrity):通过消息认证码 (MAC) 检测数据是否被篡改。
- 认证性 (Authentication):通过非对称加密和公钥基础设施(PKI) 验证通信方的身份。
- 位置:位于应用层协议(如 HTTP, FTP, SMTP)和传输层协议(TCP)之间,是 HTTPS 中的 ‘S’。
注意:SSL 已被淘汰(存在如 POODLE 等漏洞)。现在普遍使用的是 TLS(如 TLS 1.2, TLS 1.3),但术语 “SSL” 仍被广泛沿用(如 “SSL 证书”)。
二、为什么需要 TLS/SSL?
没有 TLS,网络通信(HTTP、SMTP、FTP 等)以明文形式传输。攻击者可以轻松:
- 窃听:获取敏感信息(密码、信用卡号)。
- 篡改:修改通信内容。
- 冒充:伪装成合法服务器(中间人攻击)。
TLS 在应用层和传输层(TCP)之间建立了一个安全的加密隧道,解决了所有这些问题。
三、工作原理与详细流程
TLS 连接的核心是握手协议,其目的是在不安全的通道上安全地协商出用于后续加密通信的会话密钥。下图详细说明了基于 ECDHE 的现代 TLS 1.2 握手流程,该流程提供了前向保密 (PFS)。
握手步骤详解:
1.ClientHello & ServerHello:
协商参数:客户端发送支持的 TLS 版本、密码套件列表和一个随机数。服务器选择双方都支持的最高版本和最安全的套件,并返回自己的随机数。
密码套件:格式为 TLS_密钥交换算法_认证算法_批量加密算法_散列算法(例:TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384)。
2.服务器认证 (Certificate, ServerKeyExchange):
服务器发送其数字证书。该证书由受信任的**证书颁发机构 (CA) **签发,绑定了服务器的公钥与其身份(域名)。
客户端验证证书的有效性、过期时间以及签名链,确认正在与合法的服务器通信。
服务器发送其 ECDHE 临时公钥。这意味着密钥交换材料是临时的,提供了前向保密。
3.客户端响应 (ClientKeyExchange, Finished):
客户端生成一个临时密钥对,并将其公钥发送给服务器。
此时,双方都拥有:自己的临时私钥 + 对方的临时公钥 + ClientRandom + ServerRandom。他们使用 ECDH 算法独立计算出相同的预主密钥 (PMS)。
PMS 通过一个伪随机函数 (PRF) 与两个随机数一起生成主密钥 (MS)。
客户端发送 ChangeCipherSpec 消息通知服务器后续消息将加密,并发送一个 Finished 消息,其中包含所有之前握手消息的加密摘要,以供服务器验证完整性。
4.服务器确认 (Finished):
服务器同样发送 ChangeCipherSpec 和加密的 Finished 消息。
客户端验证其 Finished 消息。
5.安全通信 (Application Data):
握手完成,安全通道建立。主密钥被用于派生对称加密所需的会话密钥(如用于 AES 加密的密钥和用于 HMAC 的密钥)。
应用层数据(如 HTTP)被分割、压缩(可选)、添加 MAC、加密,然后传输。
四、核心密码学技术
技术 | 在 TLS 中的作用 | 例子 |
---|---|---|
非对称加密 | 握手阶段:用于身份认证和安全地交换对称密钥。速度慢。 | RSA, ECDSA |
对称加密 | 应用数据阶段:使用共享的会话密钥高效加密大量数据。速度快。 | AES, ChaCha20 |
密钥交换 | 在不安全的通道上建立共享秘密(预主密钥)。 | ECDHE (推荐), DHE |
消息认证码 (MAC) | 保证数据的完整性,防止篡改。 | HMAC |
数字证书 | 基于 PKI,将公钥与所有者身份绑定,用于身份认证。 | X.509 证书 |
五、关键特性:前向保密 (PFS)
定义:即使攻击者记录了今天的加密通信,并在未来成功破解了服务器的长期私钥,他也无法解密之前记录的通信。
如何实现:通过使用 ECDHE 或DHE 等临时密钥交换算法。每次会话的预主密钥都是独立生成的,与服务器的长期私钥无关。长期私钥仅用于签名临时参数(身份认证),而不用于加密密钥交换材料。
六、最佳实践与版本演进
禁用旧版本:明确禁用 SSLv2, SSLv3, TLS 1.0, TLS 1.1。
优先使用 TLS 1.3:TLS 1.3 简化了握手(更快)、移除不安全的算法、并强制使用前向保密。
cipher Suite 优先级:优先配置支持 PFS 和强加密算法的套件(如 ECDHE 和 AES-GCM)。
证书管理:使用来自可信 CA 的有效证书,或正确部署和信任自签名证书。
总结
TLS/SSL 是一个复杂而精妙的协议体系,它巧妙地融合了非对称加密(用于安全初始化)、对称加密(用于高效通信)、数字证书(用于建立信任)和密钥交换算法(用于实现前向保密)。
它是现代互联网安全的基石,确保了从网页浏览到移动支付等几乎所有在线活动的安全。