解密TLS和/或比较TLS有效负载

时间:2018-08-21 19:57:09

标签: ssl encryption compare ssl-certificate

问题:

对于这种TLS事物和一般的网络,我还是很陌生。但是我试图被动地监听和解码TLS数据包。我无法在计算机上的网络上解码数据包,这让我感到沮丧。我得出的结论是不可能的,因为TLS是如何工作的。但是在数学中,如果您有足够的信息,通常可以得到未知数的价值。在这种情况下,我想可能是缺少链接的服务器密钥。

即使完全解密数据包很酷,这也不是我的主要目标。我专门想做的是知道是否在我的计算机/网络上观看了特定的抽搐流。因此,如果我在程序中键入流光名称,它将检查该流是否已发送到我的计算机并以布尔值响应。

所以我想要您输入的男孩和女孩。不用在中间做人,有什么方法可以做到这一点?

想法:

我一直在思考这个问题,但我有几个主意(不要嘲笑可能的愚蠢,我并不总是很聪明,但我想到的只是其中的一些东西):

  1. (比较)使用我的证书将请求发送到twitch api,并以某种方式比较响应,看看它们是否具有相同的加密有效负载。然后我知道正在观看此特定流。

  2. (解码)将证书(公钥和私钥),解密的消息和加密的消息馈送到某种算法以获取服务器密钥。我的理论是,我有足够的信息来获取服务器密钥。但是我对ssl的了解有限,我还没有考虑过握手之类的事情。

  3. (解码)会向ai生成训练数据,以教其对ssl数据包进行解码。生成许多​​具有不同密钥的SSL数据包,并将证书和加密的数据馈送给AI。

希望您能理解我要做什么。英语不是我的母语(抱歉)。

2 个答案:

答案 0 :(得分:1)

  
      
  1. (比较)使用我的证书将请求发送到twitch api,并以某种方式比较响应,以查看它们是否具有相同的加密有效负载。然后我知道正在观看此特定流。
  2.   

使用此SSL / TLS会话专用的对称密钥加密数据。还使用随机初始化向量。因此,即使完全相同的数据传输也会导致不同的加密数据,这意味着对加密数据进行比较将无济于事。

  
      
  1. (解码)将证书(公钥和私钥),解密的消息和加密的消息馈送到某种算法以获取服务器密钥。我的理论是,我有足够的信息来获取服务器密钥。但是我对ssl的了解有限,我还没有考虑过握手之类的事情。
  2.   

如果使用(过时的)RSA密钥交换,则需要使用服务器私钥来解密您没有的私钥。使用Diffie-Hellman密钥交换,即使这个私钥也不足够,但是您需要具有此特定SSL / TLS会话的主密钥或预主密钥(有关详细信息,请参阅TLS标准)。仅当TLS会话处于活动状态时,才能在TLS客户端和TLS服务器中找到此秘密-这意味着除非您有权访问客户端的内部结构,否则您将无法使用此秘密进行解密。您可能只是直接看他们正在查看哪个流。

  
      
  1. (解码)向ai生成训练数据,以教其对ssl数据包进行解码。生成许多​​具有不同密钥的SSL数据包,并将证书和加密的数据馈送给AI。
  2.   

正确加密的数据或多或少是随机的,并且没有可以映射到原始数据甚至部分数据的固有结构。 AI也不会神奇地找到这种结构。用来区分流的唯一可能的区别是数据的大小和时序-但前提是这些特定于流,我对此表示怀疑。因此,很有可能也是这种方式。

答案 1 :(得分:0)

  

我无法在计算机上的网络上解码数据包,这让我感到沮丧。我得出的结论是不可能的,因为TLS是如何工作的。

实际上,这是TLS的主要目的。如果正确实施,则您将无法解密传输的数据。

在某些服务器上甚至存在有漏洞的和过时的实现,人们可以利用这些漏洞进行攻击,但是-不适用于Twitch ,也不具有您的知识水平,仅适用于错误的实现

通常,您可以认为TLS安全性足以确保流量完整性和机密性。

  

我专门想做的是知道是否在我的计算机/网络上观看了特定的抽搐流。

我将提供一些选项来实现该目标,但是这会在您的计算机或网络中引入危险的漏洞。 (已被警告)

  • 仍然可以嗅出未加密的流量。这样就可以看到e。 G。 DNS请求(您可以看到解析了哪些主机名,但看不到特定的URL)。

  • 对于您的计算机,您可以安装键盘记录程序或从浏览器获取请求的URL,然后再对其进行加密。

  • TLS的完整性取决于证书颁发机构。从理论上讲,可以创建自己的CA证书并使其在计算机或网络上受信任。这可能使您发动中间人攻击(使用自己的密钥将自己伪装为目标服务器)。