HTTPS 中的加密是由浏览器还是系统完成的?

信息安全 加密 tls 网页浏览器
2021-08-15 01:00:18

这可能是一个常识性问题,但是在谷歌上搜索了很长时间后,我无法找到任何有关此的文档

当浏览器发出 HTTPS 请求时,它是否会立即加密数据,并且任何代理(即使在同一系统上)都会以加密形式接收数据?是否可以通过代理成功篡改该数据(在同一系统上,而不是在网络上)?

如果浏览器进行加密/解密,那么请让我知道是否有任何文档说明。或者是否仅在传输级别(当请求在网络中时)由底层 SSL 协议处理加密/解密。

4个回答

HTTPS中的“S”代表“安全”(安全超文本传输​​协议)它是一种使用传输层安全性 (TLS) 及其前身安全套接字层 (SSL) 的安全通信协议。

TLS/SSL 在第 5 层(会话层)初始化,然后在第 6 层(表示层)工作。大多数应用程序,如 Web 浏览器、电子邮件客户端或即时消息传递都包含 OSI 第 5、6 和 7 层的功能。

当提到 HTTPS 时,它将是 HTTP 协议上下文中 SSL/TLS 的实现。然后将在浏览器(和 Web 服务器)中实施 SSL/TLS,为 HTTPS 流量(数据的实际加密)提供机密性和完整性。

Chromium 和 Firefox 使用称为NSS的 API在各自的浏览器中实现 SSL/TLS。

例如,Microsoft Windows 有一个名为SChannel(安全通道)的安全包,它实现 SSL/TLS 以便在客户端和服务器之间提供身份验证。例如,Schannel 被 Active Directory 环境中的 Microsoft Windows 客户端/服务器使用。

至于数据的代理和篡改,这取决于您使用的协议。熟悉 HTTP(S) 上下文的一个很好的例子是看一下Burp Proxy

关于浏览器如何处理 HTTPS,这里有很多很好的答案,但我不确定您的真正问题是否已得到解决。

是否可以通过代理成功篡改该数据(在同一系统上,而不是在网络上)?

答案是肯定的。这可能会发生以下两种方式之一:

  • 浏览器本身受到恶意插件、扩展或更新的危害。
  • 系统受到恶意软件的影响,该恶意软件更改了浏览器使用的受信任根证书(可能与操作系统使用的证书相同,也可能不同)。

答案是……可能

如果您指定https://,则浏览器负责加密。一些浏览器使用操作系统提供的 API(查看 IE 此处),而其他浏览器(例如 Firefox)则携带自己的加密货币并完全忽略操作系统提供的加密货币。

防篡改由 PKI 保证。因此,如果您系统的受信任证书存储损坏,那么所有赌注都将失败。例如,一些公司将安装他们自己的内部签名 CA 证书,允许他们在中间人代理任何安全的浏览器会话,而不会引起浏览器的任何警报。同样,在 Windows 上,如果您使用 IE 或 Chrome,CA 证书由操作系统管理,而 Firefox 有自己独特且独立的受信任 CA 列表。

但是,如果您的系统受到威胁,那么您就完蛋了。无法保证任何安全性,甚至 SSL。这是因为恶意代理可以将自己嵌入链中的任何位置;也许在网络级别,但也许在浏览器中,或在显示驱动程序中,或监听击键......没有什么是安全的。当今有一类流行的恶意软件,它会将自身插入浏览器,在加密数据之前解密之后读取和修改加密数据。例如,一个目标是稍微修改您在网上银行网站上的体验,以耗尽银行账户并将您的所有资金转移给攻击者。

浏览器加密数据,前提是它信任它正在访问的服务器提供的 SSL 证书/公钥,然后将其传递给服务器并解密,以启动两个实体之间的加密“会话”。

优秀的,易于理解的解释在这里

  1. 浏览器连接到使用 SSL (https) 保护的 Web 服务器(网站)。浏览器请求服务器识别自己。
  2. 服务器发送其 SSL 证书的副本,包括服务器的公钥。
  3. 浏览器根据受信任的 CA 列表检查证书根,并且证书未过期、未撤销,并且其公用名对其连接的网站有效。如果浏览器信任证书,它会使用服务器的公钥创建、加密并发回对称会话密钥。
  4. 服务器使用其私钥解密对称会话密钥,并发送回使用会话密钥加密的确认以启动加密会话。
  5. 服务器和浏览器现在使用会话密钥加密所有传输的数据。

有关 CA(证书颁发机构)的一些有价值的信息: https ://en.wikipedia.org/wiki/Certificate_authority