这可能是一个常识性问题,但是在谷歌上搜索了很长时间后,我无法找到任何有关此的文档
当浏览器发出 HTTPS 请求时,它是否会立即加密数据,并且任何代理(即使在同一系统上)都会以加密形式接收数据?是否可以通过代理成功篡改该数据(在同一系统上,而不是在网络上)?
如果浏览器进行加密/解密,那么请让我知道是否有任何文档说明。或者是否仅在传输级别(当请求在网络中时)由底层 SSL 协议处理加密/解密。
这可能是一个常识性问题,但是在谷歌上搜索了很长时间后,我无法找到任何有关此的文档
当浏览器发出 HTTPS 请求时,它是否会立即加密数据,并且任何代理(即使在同一系统上)都会以加密形式接收数据?是否可以通过代理成功篡改该数据(在同一系统上,而不是在网络上)?
如果浏览器进行加密/解密,那么请让我知道是否有任何文档说明。或者是否仅在传输级别(当请求在网络中时)由底层 SSL 协议处理加密/解密。
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 证书/公钥,然后将其传递给服务器并解密,以启动两个实体之间的加密“会话”。
优秀的,易于理解的解释在这里。
- 浏览器连接到使用 SSL (https) 保护的 Web 服务器(网站)。浏览器请求服务器识别自己。
- 服务器发送其 SSL 证书的副本,包括服务器的公钥。
- 浏览器根据受信任的 CA 列表检查证书根,并且证书未过期、未撤销,并且其公用名对其连接的网站有效。如果浏览器信任证书,它会使用服务器的公钥创建、加密并发回对称会话密钥。
- 服务器使用其私钥解密对称会话密钥,并发送回使用会话密钥加密的确认以启动加密会话。
- 服务器和浏览器现在使用会话密钥加密所有传输的数据。
有关 CA(证书颁发机构)的一些有价值的信息: https ://en.wikipedia.org/wiki/Certificate_authority