传输层安全 (TLS) 对通过 Internet 发送的数据进行加密,以确保窃听者和黑客无法看到你传输的内容,这对于密码、信用卡号和个人通信等私人和敏感信息特别有用。本页解释什么是传输层安全性 TLS、它是如何工作的以及为什么要部署它。
一、什么是 TLS?
TLS 是一种加密协议,可为通过 Internet 在应用程序之间发送的数据提供端到端的安全性。用户最熟悉的是它在安全网络浏览中的使用,尤其是在建立安全会话时出现在网络浏览器中的挂锁图标。但是,它也可以而且确实应该用于其他应用程序,例如电子邮件、文件传输、视频/音频会议、即时消息和 IP 语音,以及 DNS 和 NTP 等 Internet 服务。
TLS 是从最初由 Netscape Communications Corporation 于 1994 年开发的安全套接字层 (SSL) 演变而来的,以保护 Web 会话。SSL 1.0 从未公开发布,而 SSL 2.0 很快被 TLS 所基于的 SSL 3.0 所取代。
TLS 于 1999 年首次在RFC 2246中指定为独立于应用程序的协议,虽然不能直接与 SSL 3.0 互操作,但在必要时提供了一种回退模式。然而,SSL 3.0 现在被认为是不安全的,并于 2015 年 6 月被RFC 7568弃用,并建议使用 TLS 1.2。TLS 1.3 目前(截至 2015 年 12 月)也在开发中,将不再支持不太安全的算法。
应该注意的是,TLS 不保护终端系统上的数据。它只是确保通过 Internet 安全传输数据,避免可能的窃听和/或更改内容。
TLS 通常在 TCP 之上实现,以加密 HTTP、FTP、SMTP 和 IMAP 等应用层协议,尽管它也可以在 UDP、DCCP 和 SCTP 上实现(例如,用于基于 VPN 和 SIP 的应用程序使用),这称为数据报传输层安全性 (DTLS)。
二、TLS 和 SSL、HTTPS 之间有什么区别?
Netscape 开发了名为安全套接字层(Secure Socket Layer,SSL)的上一代加密协议,TLS 由此演变而来。TLS 1.0 版实际上最初作为 SSL 3.1 版开发,但在发布前更改了名称,以表明它不再与 Netscape 关联。由于这个历史原因,TLS 和 SSL 这两个术语有时会互换使用。
HTTPS 是在 HTTP 协议基础上实施 TLS 加密,所有网站以及其他部分 web 服务都使用该协议。因此,任何使用 HTTPS 的网站都使用 TLS 加密。
三、TLS 是如何工作的?
网站或应用程序要使用 TLS,必须在其源服务器上安装 TLS 证书(由于上述命名混淆,该证书也被称为 SSL 证书)。TLS 证书由证书权威机构颁发给拥有域的个人或企业。该证书包含有关域所有者的重要信息以及服务器的公钥,两者对验证服务器身份都很重要。
TLS 连接是通过一个称为 TLS 握手的流程启动的。当用户导航到一个使用 TLS 的网站时,用户设备(也称为客户端设备)和 web 服务器之间开始 TLS 握手。
在 TLS 过程中,用户设备和 web 服务器:
● 指定将要使用的 TLS 版本(TLS 1.0、1.2、1.3 等)
● 决定将要使用哪些密码套件(见下文)
● 使用服务器的 TLS 证书验证服务器的身份
● 握手完成后,生成会话密钥用于加密两者之间的消息
TLS 握手为每个通信会话建立一个密码套件。密码套件是一组算法,其中指定了一些细节,例如哪些共享加密密钥(即会话密钥)将用于该特定会话。TLS 也能在一个未加密的通道上设置匹配的会话密钥,这要归功于一种称为公钥加密的技术。
握手还处理身份验证,其中通常包括服务器向客户端证明其身份。这是通过使用公钥来完成的。公钥是使用单向加密的加密密钥,即任何拥有公钥的人都可以解读使用服务器私钥加密的数据,以确保其真实性,但只有源发送方才可以使用私钥加密数据。服务器的公钥是其 TLS 证书的一部分。
数据完成加密和验明身份后,使用消息身份验证码(MAC)进行签名。接收方可以验证 MAC 来确保数据的完整性。这有点像阿司匹林药瓶上的防篡改铝箔,消费者知道没人篡改过他们的药品,因为购买时铝箔完好无损。