OpenSSL 的 Heartbleed 漏洞会泄露用户敏感数据,也会泄露网站私钥。云计算公司 CloudFlare 的挑战赛证明窃取私钥是可能的。剑桥大学计算机实验室安全团队的博士生 Rubin Xu 在 Ars 上发表文章,介绍他如何利用 Heartbleed 漏洞窃取网站的私钥。Rubin Xu 解释说,2048 位的N是两个随机生成的大素数p和q的乘积,N是公开的,而p和q是保密的。
要发现p或q以获取密钥,一种方法是因式分解N,但这非常困难。有了 Heartbleed 漏洞,攻击就变得简单多了:因为 Web 服务器需要内存中的私钥签名 TLS 握手,因此p和q必须保留在内存中,所以可尝试利用 Heartbleed 数据包获取它们。我们知道p和q是 1024 位,而 OpenSSL 在内存中是以小端格式储存数据,窃取密钥的暴力攻击方法是将 Heartbleed 包中每一个连续的 128 位字节看作小端数,测试它们是否能被N相除。