如果偷了网站的私钥,SSL真的会被破解吗

发布于 2017-06-23 22:05:46

密钥对数据安全至关重要,不禁让我们产生了一个疑问,如果服务器的私钥被第三人窃取,是不是意味着历史数据、正在传输的数据,以及未来要传输的数据,都会被破解?

近几年来,随着网上支付以及网上交易业务的日益频繁,SSL证书得到许多像网上银行、基金交易平台、电商购物等业务场景的青睐。随着各大搜索引擎公布优先收录https站点后,很多中小型网站也开始安装使用SSL证书。

SSL证书最大的优势是保护数据传输安全,当客户端向服务器发出请求后,它们之间会开始一系列操作,使用非对称加密方式传递会话密钥,建立连接。

密钥对数据安全至关重要,不禁让我们产生了一个疑问,如果服务器的私钥被第三人窃取,是不是意味着历史数据、正在传输的数据,以及未来要传输的数据,都会被破解?

首先,我们要明白一个问题:通信双方SSL是如何写上出加密/解密密钥的?

有两种方法:

RSA Key Exchange

首先,客户端单向认证服务器的真实身份,信任服务器RSA证书的公钥。客户端使用伪随机函数,随机生成字符串(Pre-Master Key),该字符串用于加密和解密通信双方的传输内容,所以它是一种对称加密。

紧接着,客户端使用服务器的公钥,加密Pre-Master Key,并发送给服务器。服务器再使用与公钥对应的私钥解密,得到客户端发过来的Pre-Master Key。

最后双方使用Hash算法,计算出相同的Master Key,推导出加密/解密的密钥,以及HMAC算法密钥,后者用于数据校验。

完成以上步骤后,通信双方都知道了密钥,使用这一密钥进行通信即可。

很显然,服务器的私钥很关键,如果泄露,就会发生中间人攻击,它可以随意窃听。

DHE Key Exchange

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

首先基于SSL证书,客户端认证了服务器的真实身份,双方各自交换自己的公钥,注意该公钥是动态计算得来的,并不保存,双方还会交换各自的随机码。

拿到对方的公钥后,和自己的私钥计算出Pre-Master Key。再用随机码计算得到Master Key。接下来的过程与第一种方法一样。

不难看出来,服务器私钥的作用,仅仅只是保证公钥在传输过程中,不会被中间人篡改而已。

所以,即便服务器私钥被偷了,第三者也无法得到Pre-Master Key和加密/解密的密钥,自然无法解密被加密的数据。

那么,如果第三者要解密数据,该怎么办呢?只需拥有任何一方的私钥即可。

但是由于这个私钥是临时的、一次性的,通信双方在得到Pre-Master Key后,就会被删除,也不会在网络上传输,所以第三者根本无法得到私钥。


0 条评论