OpenSSL的Heartbleed漏洞會(huì)泄露用戶敏感數(shù)據(jù),也會(huì)泄露網(wǎng)站私鑰。
云計(jì)算公司CloudFlare的挑戰(zhàn)賽證明竊取私鑰是可能的。
劍橋大學(xué)計(jì)算機(jī)實(shí)驗(yàn)室安全團(tuán)隊(duì)的博士生Rubin Xu在Ars上發(fā)表文章,介紹他如何利用Heartbleed漏洞竊取網(wǎng)站的私鑰。
Rubin Xu解釋說,2048位的N是兩個(gè)隨機(jī)生成的大素?cái)?shù)p和q的乘積,N是公開的,而p和q是保密的。
要發(fā)現(xiàn)p或q以獲取密鑰,一種方法是因式分解N,但這非常困難。
有了Heartbleed漏洞,攻擊就變得簡單多了:因?yàn)閃eb服務(wù)器需要內(nèi)存中的私鑰簽名TLS握手,因此p和q必須保留在內(nèi)存中,所以可嘗試?yán)?Heartbleed數(shù)據(jù)包獲取它們。
我們知道p和q是1024位,而OpenSSL在內(nèi)存中是以小端格式儲(chǔ)存數(shù)據(jù),竊取密鑰的暴力攻擊方法是將Heartbleed包中每一個(gè)連續(xù)的128位字節(jié)看作小端數(shù),測(cè)試它們是否能被N相除。