使用和解码原始SSL数据作为证据

使用和解码原始SSL数据作为证据,ssl,encryption,https,decoding,Ssl,Encryption,Https,Decoding,我想解码和存储原始SSL/TLS数据,以便在将来证明一些东西,我认为通过一个示例来描述它会更好: 1) 有一个远程REST端点可以通过SSL访问,并提供一些有用的数据。这个端点由某个第三方控制,我无法控制它 2) 我向该端点发出GET请求,并将响应的原始SSL流量存储在一个文件中,然后将解码的SSL流量存储在另一个文件中 3) 此外,我还将此端点的SSL证书保存在一个单独的文件中(我猜此操作只需执行一次) 如果我正确理解了上述步骤中的所有数据,并且在将来,当另一个第三方要求我证明远程服务器上过去

我想解码和存储原始SSL/TLS数据,以便在将来证明一些东西,我认为通过一个示例来描述它会更好:

1) 有一个远程REST端点可以通过SSL访问,并提供一些有用的数据。这个端点由某个第三方控制,我无法控制它

2) 我向该端点发出GET请求,并将响应的原始SSL流量存储在一个文件中,然后将解码的SSL流量存储在另一个文件中

3) 此外,我还将此端点的SSL证书保存在一个单独的文件中(我猜此操作只需执行一次)

如果我正确理解了上述步骤中的所有数据,并且在将来,当另一个第三方要求我证明远程服务器上过去某个时候存在某些数据时,我可以:

1) 向他们出示我保存的证书(步骤3)。由于这张证书是由一个著名的权威机构签署的,所以我伪造它的可能性几乎为零

2) 向他们展示原始SSL数据,以及使用上面的证书对其进行解码的方法

3) 在解码的REST响应头中,还应显示远程服务器时间

因此,如果我没有弄错的话,我几乎可以毫无疑问地证明,在过去的某个时候,即使远程服务器本身不再运行,远程方的服务器上也存在某一数据段

因此,我可以使用原始SSL数据来证明远程服务器上过去存在某些东西。有人质疑这一说法的可能性很小,因为伪造响应数据或头将意味着我能够破坏SSL加密

有没有一种方法可以自动化这些场景?我的意思是,有没有一种方法可以将原始SSL数据记录在一种允许以后轻松解码的形式中


我尝试过使用firefox/chrome浏览器和sslkeylog文件,并使用wireshark嗅探流量——它确实有效,但是有没有一种方法可以使用某种REST库实现自动化,因为每次使用firefox和记录SSL密钥都会很麻烦-可能需要每小时存储数千个请求,而手动执行则是一项全职工作,此外,我不确定是否有办法证明存储在ssskeylog文件中的这些密钥实际上与远程服务器的证书匹配…

否,您无法证明服务器发送了数据。例如,使用TLS_RSA_和_AES_256_CBC_SHA256作为密码套件,您可以在整个TLS会话中伪造双方的所有数据,甚至无需联系服务器。而服务器端也可以产生这样的伪造品。正如EJP所指出的,您唯一不能伪造的是经过签名的数据。使用RSA密码套件时,唯一要签名的是证书,但它们不会更改,也不会以加密方式绑定到TLS会话


其他密码套件可能涉及一些签名的握手数据,但TLS不是为提供不可否认性而设计的,因此我怀疑它是偶然做到的。

您正在寻找的技术称为数字签名。你目前的方法既不合适也不可行。你是正确的,我已经删除了我的答案。创建假应用程序数据所需的全部是客户端已知的主机密。因此,客户端可以伪造任何数据并声称服务器发送了这些数据。谢谢Stefan,我知道你要么删除你的答案,要么告诉我为什么我错了,在这种情况下,我会删除我的答案。谢谢你的回答。因此,我假设如果数据不签名且仅使用TLS,则无法证明数据来自某个服务器?@Pma:您可以证明数据来自客户端或服务器,但无法证明任何更具体的内容。@Pma:tlsnotary听起来很有希望。它看起来更倾向于允许客户端证明它生成了指定的HTTPs web流量,而不是允许服务器证明某些东西。当然,我不知道对tlsnotary协议的任何安全性分析。