如何证明某些服务器通过 HTTPS 发送了一些文件

信息安全 tls
2021-08-24 09:17:15

我想证明我使用 HTTPS 检索到的某些文件确实是由服务器发送的。我尝试在网上搜索,但没有找到我想要的。

如何轻松证明某个 HTTPS 服务器发送了某个文件?它不需要特殊权限,最好只使用知名的免费软件来完成。只要服务器的证书有效,证明就应该有效。证明应该能够在没有互联网访问的情况下进行验证。

例如,网页的内容取决于客户端的地理位置。当从我的 IP 地址(例如这个)请求时,这很有趣。我想把它展示给别人。如果我给他链接,他不会得到相同的页面。如果我给他从我的电脑检索到的页面,他会认为我已经更改了页面。幸运的是,该页面是使用 HTTPS 从服务器检索的。如果连接使用密钥交换算法,在该算法中服务器对 ClientHello 和 ServerHello 中的随机字节进行签名,我可以向他显示服务器和我的计算机之间的流量。然后他会相信确实是那个服务器向我发送了页面,因为只有拥有证书私钥的服务器才能签署随机字节。

或者如何轻松地向其他人证明 SSL 服务器的真实性?

3个回答

我假设您需要加密证明服务器确实发送了这个确切的响应。例如,如果服务器使用私钥签署 TLS 响应,这将证明服务器确实发送了此响应。

不幸的是,这不是 TLS 发生的情况。服务器签署某些内容(ServerKeyExchange 消息)或客户端加密某些内容(预主密钥)以证明服务器知道私钥。之后,主密钥由客户端和服务器确定,它们使用对称加密进行通信。您可以存储它以便稍后显示给其他人,但您也可以解密并更改它,因此没有太多证据表明它确实是您从服务器收到的。

您似乎正在寻找一种方法来保护和证明文件的完整性和真实性。基本上,如果 SSL 工作正常,它的完整性应该很好,并且真实性与您信任远程服务器一样好。

另一方面,您可以在本地签署文件并验证签名。

根据您提供的示例,让其他人连接到您的计算机(通过 webex 或一些开源替代方案)并在那里查看或让其他人通过您所在位置附近的 VPN 连接然后导航可能会更容易到网页。

如果你想沿着验证流量的路线走,你可以使用wireshark之​​类的东西来记录你的计算机和服务器之间的流量,解密流量,然后提取你正在寻找的文件,然后与你保存的文件进行比较散列这两个文件。由于在浏览器中保存网页和从wireshark中雕刻文件的差异,我预计散列可能不起作用