为什么HTTPS中间人攻击仅窃听的时候需要伪造的证书,而不是将服务端的消息原样发回?

admin 2025年4月21日21:43:14评论0 views字数 1640阅读5分28秒阅读模式

HTTPS中间人攻击的时候,中间人获得了HTTPS请求,并窃听了内容,为什么要使用伪造的证书再发送请求,而不是直接把服务端发来的带有服务端证书的请求重新发给客户端呢?

为什么HTTPS中间人攻击仅窃听的时候需要伪造的证书,而不是将服务端的消息原样发回?

如果告诉题主,你现在和知乎网站完成https通信,在TLSTransport Layer Security层面,知乎服务器需要2个私钥(Private Key,是不是非常震惊、意外?

私钥1:知乎RSA私钥,仅用于证明身份,不参与Key的计算与推导

私钥2:知乎ECDHE私钥,仅用于Key的计算与推导

与以上2个私钥一一对应的,知乎还有2个公钥(Public Key

公钥1:知乎RSA公钥,仅用于证明身份,不参与Key的计算与推导

公钥2:知乎ECDHE公钥,仅用于Key的计算与推导

如何证明身份?

知乎服务器啪啪扔给client 知乎的证书(携带公钥1公钥2

知乎的证书公钥1 + CA数字签名(CA的私钥加密

client肯定很疑惑,如何证明这2个公钥就是知乎的?

校验证书

Client在本地的Root CA数据库查询到CACA的公钥。然后用CA的公钥尝试解密上文有下划线的签名。如果失败就报错结束,如果校验成功,说明2件事:

  • 签名确实是CA的私钥加密的,否则无法解密(CA私钥、公钥一一映射)。

  • 公钥1没有被篡改,否则完整性校验无法通过。

变相说明知乎证书里携带的公钥1,确实是知乎的,值得信任。

既然公钥1已经被信任,它就可以为公钥2做签名。

公钥2 + 用私钥1为公钥2的签名

Client用已经得到的、并被信任的公钥1尝试解密以上有下划线的签名。

如果失败,说明传输过程种被篡改,失败而结束。

如果成功,说明签名为拥有私钥1的服务器加密的。在这个地球上知晓私钥1的,只有知乎服务器。

公钥2,真的就是知乎服务器的。

到此为止,知乎的公钥1私钥1,完成了历史使命(证明身份),接下来就和他们没有关系了。

接下来就进入激动人心的时刻,双方计算Key了。

Client目前拥有推导Key的所有元素。

  • 知乎的公钥2(已经成功验证身份来源、且没有被篡改)

  • 知乎的salt( Nonce随机数,不是1分钱一粒的盐粒)

  • Client的私钥 (ECDHE私钥,一次性的)

  • ClientsaltNonce随机数)

算法是公开的,至此可以推导出Key

知乎服务器也拥有推导Key的所有元素。

  • 知乎的私钥2ECDHE,一次性的)

  • 知乎的salt( Nonce随机数)

  • Client的公钥 (ECDHE公钥,一次性的)

  • ClientsaltNonce随机数)

算法是公开的,至此也可以推导出Key’

如果在传输过程中,有第三方篡改有下划线的部分,失败而结束。

如果在传输过程中,没有第三方篡改有下划线的部分,恭喜恭喜!

Key = Key’

到此为止,所有的公钥私钥全部退出历史舞台,接下来就是Keysolo时间。

Key + 对称AES加密算法,就可以完成https流量的加密、解密了。

接下来简单回答问题。

要想成功欺骗client,中间人需要有2个私钥。

如果中间人仅仅用伪造的证书(公钥1)成功欺骗Client,而不用自己的公钥2替换服务器的公钥2的话,很显然,无法成功。因为中间人没有服务器的私钥2(与服务器的公钥2对应)。

只要仔细阅读上文推导需要的4元素,很容易就可以得出以上结论。

有读者可能会抗议,老早不是服务器只要一个RSA私钥就可以完成Key的交换与推导的吗?

是的,只要client用服务器的RSA公钥加密一个pre-maste-key,然后服务器用RSA私钥解密,得到明文的pre-maste-key,双方有可以推导出相同的Key

如果是这种情况,只要用伪造证书替换真实服务器的证书,即可成功。

但是,用RSA公钥分享Key的方法显然不满足PFS (Perfect Forward Security),故慢慢地被边缘化并最终被抛弃!

以上。

原文始发于微信公众号(车小胖谈网络):为什么HTTPS中间人攻击仅窃听的时候需要伪造的证书,而不是将服务端的消息原样发回?

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年4月21日21:43:14
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   为什么HTTPS中间人攻击仅窃听的时候需要伪造的证书,而不是将服务端的消息原样发回?https://cn-sec.com/archives/3982672.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息