Learn

284 篇文章分类:全部
网络

什么是 TLS

在 HTTPS 通信中,HTTP 数据不是原样发送,而是由 TLS 这个机制保护。

HTTP 和 HTTPS 的区别有时会被说明为“是否加密”。但是,TLS 的作用不只是加密。让通信内容不容易被第三方读取、让通信途中不容易被篡改,以及确认连接目标服务器,都是重要作用。

本文将整理 TLS 保护什么,以及不保护什么。

什么是 TLS

TLS 是 Transport Layer Security 的缩写,是用于保护网络通信的协议。

在 Web 中,它用于保护浏览器和 Web 服务器之间的通信。当浏览器打开 HTTPS 网站时,HTTP 的通信内容会在受到 TLS 保护的状态下收发。

TLS 主要提供下面三种保护。

作用含义说明
机密性让通信内容不容易被读取让通信途中的第三方难以理解数据内容
完整性更容易检测通信内容的篡改让途中数据被改写时能够被检测
认证确认连接目标通过服务器证书,确认连接目标是否持有该域名的正当证书

也就是说,与其只把 TLS 记成“加密通信的机制”,更准确的是把它理解为同时进行通信内容保护和连接目标确认的机制。

HTTPS 是用 TLS 保护 HTTP

HTTPS 是用 TLS 保护 HTTP 的通信。

HTTP 是浏览器和 Web 服务器交换页面内容、表单数据等的机制。但是,仅靠 HTTP,通信内容不会加密。因此,通信路径上的第三方有读取内容或在途中篡改内容的危险。

HTTPS 会在 TLS 内部进行 HTTP 交换。这样,HTTP 中收发的请求和响应内容,在通信途中会变得难以读取。

项目HTTPHTTPS
通信内容以明文发送由 TLS 保护
对窃听的耐性
篡改检测通过 TLS 更容易检测
连接目标确认基本较弱通过服务器证书确认
主要结构HTTPHTTP over TLS

HTTPS 并不是处理与 HTTP 不同内容的机制。它是把 HTTP 通信用 TLS 保护后发送的方式。

TLS 保护什么

TLS 保护的中心,是在浏览器和服务器之间流动的通信内容。

通信路径上存在 Wi-Fi 路由器、提供商、组织网络设备、互联网上的中继设备等。如果没有使用 TLS,就有在这些通信路径上被读取内容或被篡改的危险。

TLS 有效时,通信内容会被加密。因此,即使通信途中的第三方取得数据,也很难直接读取 HTTP 的内容。

信息TLS 的保护说明
页面正文受保护服务器返回的 HTML 和正文内容在通信途中不容易被读取
表单输入内容受保护登录信息、咨询内容等会被加密
HTTP 头受保护、User-Agent 等 HTTP 头会在 TLS 内部发送
Cookie 的值受保护通信途中不容易读取 Cookie 内容
URL 的路径和查询受保护example.com/search?q=... 中相当于 /search?q=... 的部分作为 HTTP 请求受到保护

不过,这里说的保护,是针对通信途中第三方的保护。连接目标服务器需要处理请求,因此会解密并读取通信内容。

用服务器证书确认连接目标

TLS 不仅加密通信内容,也会确认连接目标服务器。

访问 HTTPS 网站时,服务器会出示服务器证书。浏览器会确认该证书是否由可信认证机构签发、是否未过期、是否与访问目标域名一致等。

这样可以确认通信对象是否持有预期域名的正当证书。

不过,有服务器证书,并不保证该网站运营者安全,也不保证网站上的信息正确。证书主要确认的是“是否持有对该域名有效的证书”。

也就是说,HTTPS 的锁形图标表示“通信路径受到 TLS 保护”,但并不保证“该网站提供的内容值得信任”。

TLS 加密的范围

TLS 加密的主要是 HTTP 的内容。

例如,Web 页面正文、表单发送内容、Cookie 的值、HTTP 头、URL 的路径和查询字符串等,都会在 TLS 内部发送。

另一方面,即使使用 TLS,通信所需的一部分信息,以及通信外侧的信息仍会留下。

信息TLS 是否隐藏说明
页面正文容易隐藏作为 HTTP 响应内容受到 TLS 保护
表单输入内容容易隐藏作为 HTTP 请求正文受到 TLS 保护
Cookie 的值容易隐藏作为 HTTP 头受到 TLS 保护
URL 的路径和查询容易隐藏作为 HTTP 请求内容受到 TLS 保护
连接目标 IP 地址不隐藏为了把数据包送到通信目标所需
访问源 IP 地址不隐藏服务器或中继目标能够看到
SNI 等 TLS 连接时的一部分信息视环境可能可见在未使用 ECH 等的环境中,可能成为连接目标域名的线索
DNS 查询作为另一个问题留下普通 DNS 中,查询目标域名可能可见
通信量不隐藏收发了多少数据有时会被观察
通信时机不隐藏何时通信有时会被观察

这个区别很重要。TLS 保护 HTTP 的内容,但不会让通信本身的存在、通信量、时机、IP 地址都消失。

注意 TLS 的终止点

需要意识到 TLS 保护的是从哪里到哪里的通信。

一般说明中常说“浏览器和 Web 服务器之间会被加密”。不过,在实际 Web 服务中,CDN、负载均衡器、反向代理等有时会成为 TLS 的终止点。

TLS 终止点,是加密通信被解密的地点。

例如,有一种结构是浏览器到 CDN 之间受 TLS 保护,CDN 到源服务器之间通过另一条连接转发。这种情况下,从浏览器看 TLS 的连接目标是 CDN 侧,之后的通信保护取决于服务侧设置。

这并不意味着 TLS 很弱。TLS 是“保护端点之间通信”的机制,而哪个位置成为端点,会因系统结构而变化。

TLS 不是匿名化技术

TLS 不是匿名化技术。

TLS 是用于从通信途中的第三方那里保护通信内容的技术。另一方面,通信内容会到达连接目标服务器。服务器需要处理请求,因此有时可以把握发送的数据、Cookie、登录信息、访问时刻、访问源 IP 地址等。

访问 HTTPS 网站时,通信路径上的第三方更难读取页面内容。但是,连接目标网站本身可以处理被访问的页面、发送的表单内容、登录状态、Cookie 等。

项目TLS 能否解决理由
通信途中窃听容易解决通信内容会被加密
通信途中篡改容易解决有篡改检测机制
防止连接目标服务器查看不能解决服务器需要处理通信内容
隐藏访问源 IP 地址不能解决服务器侧可能看到访问源 IP
Cookie 识别不能解决Cookie 用于服务器侧使用者识别
登录导致与本人关联不能解决行为会与账号关联

加密和匿名化的目的不同。

加密是让通信内容不容易被第三方读取的技术。匿名化是让谁在通信、连接到哪里、哪些行为属于同一使用者变得不容易判断的思路。

TLS 对前者很强,但不能单独实现后者。

理解 TLS 的意义

理解 TLS 后,就能不过度评价 HTTPS 的安全性,而是准确评估。

HTTPS 对通信路径上的窃听和篡改是非常重要的对策。在登录、支付、发送个人信息、访问管理画面等场景中,使用 HTTPS 是前提。

另一方面,即使是 HTTPS,信息也会到达连接目标服务器。服务器日志、访问源 IP 地址、Cookie、账号信息、浏览器信息等,会作为与 TLS 不同的问题留下。

因此,理解 TLS 时,需要像下面这样分开思考。

视角主要目的与 TLS 的关系
加密让通信内容不容易被第三方读取TLS 的核心作用
完整性检测通信途中的篡改TLS 的重要作用
连接目标认证确认服务器是否持有正当证书TLS 的重要作用
匿名化让使用者或连接关系不容易被判断仅靠 TLS 无法实现
防跟踪抑制 Cookie 或账号造成的识别需要 TLS 以外的对策

TLS 是支撑通信安全性的基础技术。但是,它不是解决所有隐私和匿名性问题的万能机制。

总结

TLS 是 HTTPS 中使用的通信保护核心机制。

TLS 会加密浏览器和服务器之间的通信内容,使通信途中的第三方不容易读取内容。同时,它也让通信途中的篡改更容易被检测,并通过服务器证书确认连接目标。

另一方面,TLS 不是匿名化技术。通信内容会到达连接目标服务器,访问源 IP 地址、服务器日志、Cookie、账号信息等问题会另外留下。

要正确理解 TLS,需要分开考虑“通信内容被加密”和“谁正在访问哪里被隐藏”。

HTTPS 对让通信更安全很重要,但它不会自动实现匿名性或防跟踪。

相关文章