美文网首页
利用私钥,可以解密SSL/TLS吗?

利用私钥,可以解密SSL/TLS吗?

作者: 紫水河神 | 来源:发表于2019-11-18 14:13 被阅读0次

    场景是这样的,如果能够拿到目标网站的私钥,同时旁路监听该站点的数据包,是否可以实现加密数据还原?

    正文

    如果了解通信双方SSL/TLS是如何协商出用户加密/解密密钥(Session Key),可能就不会有类似的问题。那么SSL/TLS是如何协商Session Key的?

    TLS1.2 及更古老版本

    有两种方法:

    RSA Key Exchange

    客户端单向认证了服务器的真实身份,并进而信任服务器的RSA证书的公钥(Public Key)。

    客户端使用伪随机函数,随机生成不小于40字节的字符串,简称Pre-Master Key。

    客户端使用服务器的公钥Public Key,加密 Pre-Master Key,并发给服务器。

    服务器使用与Public Key一一对应的私钥(Private Key)解密并得到明文的 Pre-Master Key。

    自此,通信双方公共拥有相同的 Pre-Master Key。

    再结合双方在通信过程中,互相交换的明Nonce, 双方共同拥有三个值:

    Pre-Master Key

    客户端的Nonce

    服务器的Nonce

    双方使用协商出的、相同的Hash算法,共同计算出相同的Master Key。

    然后以Master Key做为素材,共同推导出和安全有关的Key:

    Session Key

    HMAC Key

    前者用于双方加密/解密使用,后者用于数据校验使用。

    很显然,这里的关键要素就是服务器的私钥(Private Key),一旦泄露,所有该网站使用该方法的加密历史数据、现在的数据、将来的数据,将面临被破解的风险。

    DHE Key Exchange

    DHE:Diffie-Hellman Ephemeral的缩写,一次性DH密钥交换算法。

    客户端单向认证了服务器的真实身份,基于数字证书的认证。

    双方交换各自的DH一次性公钥(动态计算,只用于该通信过程,并不保存),还有各自的随机码Nonce。

    双方拿着对方的一次性DH公钥、自己的一次性DH私钥,计算出Pre-Master Key

    然后拿自己的Nonce、对方的Nonce,和上个方法一样,计算出Master Key。

    其它过程雷同,略。

    在这个方法里,服务器的私钥只用于签名双方DH消息交互过程,即保证对方发送过来的DH公钥在传输过程中,没有被第三方篡改,仅此而已。

    第三方即使有了服务器的私钥,也无法得到Pre-Master Key,无法得到Session Key,更无法解密用户的加密数据。

    第三方如果要破解,需要拥有任何一方的DH私钥。而DH私钥是临时的、一次性的,一旦双方得到Pre-Master Key,就会将其删除,更不会在网络上传输,所以即使截获了所有报文,也无法得到DH私钥。

    综上,如果获得了服务器的私钥,方法一可以破解,方法二无法破解

    TLS1.3版本

    上述的方法一,其实有很大的安全风险,风险系数取决于服务器私钥的安全程度。这种千钧集于一发的风险,让TLS协议的制定者决定在最新的1.3版本中不再使用。

    1.3版本,只留下方法二,即DHE方法。

    相关文章

      网友评论

          本文标题:利用私钥,可以解密SSL/TLS吗?

          本文链接:https://www.haomeiwen.com/subject/hzzvictx.html