曲速未來(lái) 揭示:不隨機(jī)播放的索尼PS3和比特幣密碼破解區(qū)塊鏈
曲速未來(lái)表示:最昂貴的黑客是什么?贖金?惡意軟件?不!許多專家認(rèn)為這是信任基礎(chǔ)設(shè)施一個(gè)組織的私鑰被泄露的地方。然后,這可能會(huì)危及這些密鑰簽名的所有內(nèi)容,包括文檔和可執(zhí)行文件。
區(qū)塊鏈安全咨詢公司 曲速未來(lái) 表示:最昂貴的黑客是什么?贖金?惡意軟件?不!許多專家認(rèn)為這是信任基礎(chǔ)設(shè)施一個(gè)組織的私鑰被泄露的地方。然后,這可能會(huì)危及這些密鑰簽名的所有內(nèi)容,包括文檔和可執(zhí)行文件。
想象一下微軟的私鑰被黑了,然后就不能相信任何由這些密鑰簽名的軟件(或硬件)。入侵者可以創(chuàng)建自己的軟件(或硬件),然后用有效的密鑰對(duì)其進(jìn)行簽名。必須大規(guī)模撤銷軟件和硬件,幾乎所有與微軟私鑰相關(guān)的東西都必須重新安裝。
因此,入侵者可以重新創(chuàng)建由可信私鑰正確簽名的軟件。這些私鑰通常是公司內(nèi)部人士偷來(lái)的,但在有些情況下,草率的編碼為世界打開(kāi)了鑰匙。這種情況發(fā)生在ECDSA的情況下,開(kāi)發(fā)人員沒(méi)有檢查他們生成的隨機(jī)數(shù)。
索尼PS3黑客
2010年,黑客組織Fail0Overflow證明了他們可以破壞索尼PS3的安全方法。他們實(shí)現(xiàn)了重新創(chuàng)建索尼的私鑰,然后打破了管理程序和簽名的可執(zhí)行文件上的簽名。
核心問(wèn)題與在簽名處理(ECDSA)中使用的隨機(jī)因素的產(chǎn)生缺乏隨機(jī)性有關(guān)。他們通過(guò)逆轉(zhuǎn)簽名的公鑰來(lái)提供私鑰來(lái)做到這一點(diǎn)。事實(shí)上,不涉及實(shí)際的隨機(jī)化,每次簽名的種子值保持不變。
簽名值(R,S)使用隨機(jī)值k,以確保同一私鑰和同一消息的值將有所不同。不幸的是,索尼的開(kāi)發(fā)者并沒(méi)有隨機(jī)化它。
利用ECDSA,我們?yōu)闄E圓曲線(a和b)選擇了一個(gè)大素?cái)?shù)(P)和兩個(gè)參數(shù)。接下來(lái),我們選擇一個(gè)素?cái)?shù)(N),用來(lái)限制0到n-1之間的值。首先,我們?cè)跈E圓曲線(G)上選取一個(gè)點(diǎn),然后計(jì)算:
p,a,b,G,n和Y的參數(shù)是公共的,私有部分是x(私鑰),公鑰是Y。接下來(lái),我們用一個(gè)隨機(jī)生成值(K)并對(duì)電文進(jìn)行散列(M):
請(qǐng)注意,?標(biāo)識(shí)x-協(xié)調(diào)。
然后,消息的簽名對(duì)為(r,s)。下面是一個(gè)帶有“Hello”消息的示例運(yùn)行:
然后,就可以用以下方式驗(yàn)證簽名:
(A)計(jì)算消息(M)的散列。
(B)計(jì)算w=s{?1}(Mod N),u1=M·w(Mod N),u2=r·w(Mod N)
(C)計(jì)算曲線上的點(diǎn)(x1,y1):=U1×G U2×Y
(D)然后我們檢查r≡x1(Mod N)。如果為真,則驗(yàn)證簽名。
不幸的是,索尼沒(méi)有為每個(gè)簽名生成k值,總是使用4作為k的值。如果對(duì)兩個(gè)不同的文檔使用相同的k值,EVE可以找到私鑰,從而產(chǎn)生偽造簽名。
而且,知道了這兩條信息就可以確定k。由此可以計(jì)算私鑰(X)。
如果知道M(消息)、r、s和k(所使用的隨機(jī)值),那么就可以從以下位置確定私鑰(X):
X=(H(M) kr)/s(Mod P)
如果我們知道M,r,s和私鑰(X),我們可以確定所使用的隨機(jī)值(K):
K=(SX-H(M)/r(Mod P)
比特幣黑客
另一個(gè)震驚發(fā)生在2012年的比特幣黑客攻擊,這再次打破了ECDSA隨機(jī)數(shù)發(fā)生器的缺陷。在比特幣中,如果Alice(A)將比特幣發(fā)送給Bob(B),則使用Alice的私鑰創(chuàng)建以前交易的數(shù)字簽名。然后把Bob的公鑰添加到事務(wù)中。然后定義事務(wù)的驗(yàn)證,從上一個(gè)事務(wù)獲取公鑰并檢查簽名。
Nils Schneider于2013年首次發(fā)現(xiàn)了該缺陷,他發(fā)現(xiàn)以下r值出現(xiàn)了50倍以上:
并被標(biāo)識(shí)為由同一用戶在兩個(gè)事務(wù)中使用(因此具有相同的私鑰)。這意味著使用的是相同的隨機(jī)數(shù)。在Hack[1]中有兩個(gè)輸入和一個(gè)輸出:
可以注意到,輸入的起始字節(jié)是相同的,這些字節(jié)標(biāo)識(shí)簽名(r,s):
可以看出,這兩個(gè)簽名值(R1和R2)是相同的。這是因?yàn)樵贏ndroid上JavaSecureRandomclass中的Java bug上,并且它沒(méi)有生成安全的隨機(jī)數(shù)。例如,以下兩個(gè)事務(wù)具有相同的r值:
然后,2013年12月28日,Nadia Heninger報(bào)告說(shuō),由于這一漏洞,59 BTC被盜[1 HKywxiL4JziqXrzLKhmB6a74ma6kxbSDj]:
黑客的收益最終在2017年8月左右被轉(zhuǎn)移。
結(jié)論
區(qū)塊鏈安全咨詢公司 曲速未來(lái) 告誡:要始終使用簽名的隨機(jī)數(shù)。在ECDSA中的簽名組合中添加了一個(gè)隨機(jī)值,這將改變簽名。不幸的是,如果不正確地生成隨機(jī)數(shù),則會(huì)大大削弱簽名,從而暴露私鑰。一種改進(jìn)的方法是EdDSA(Edwards-曲線數(shù)字簽名算法),并使用扭曲的Edwards曲線增強(qiáng)Schnorr簽名創(chuàng)建數(shù)字簽名,它的核心優(yōu)勢(shì)在于它的安全性不是建立在產(chǎn)生強(qiáng)隨機(jī)數(shù)的基礎(chǔ)上的。
1.TMT觀察網(wǎng)遵循行業(yè)規(guī)范,任何轉(zhuǎn)載的稿件都會(huì)明確標(biāo)注作者和來(lái)源;
2.TMT觀察網(wǎng)的原創(chuàng)文章,請(qǐng)轉(zhuǎn)載時(shí)務(wù)必注明文章作者和"來(lái)源:TMT觀察網(wǎng)",不尊重原創(chuàng)的行為TMT觀察網(wǎng)或?qū)⒆肪控?zé)任;
3.作者投稿可能會(huì)經(jīng)TMT觀察網(wǎng)編輯修改或補(bǔ)充。