密碼學(xué)是如何保證比特幣系統(tǒng)安全的
比特幣DE選擇
本文將圍繞ECC與區(qū)塊鏈結(jié)合的重要應(yīng)用——比特幣展開討論,探討ECC應(yīng)用過程中有哪些值得關(guān)注的地方。
作為中本聰?shù)囊粋€「業(yè)余小發(fā)明」,比特幣現(xiàn)在可以說是無人不知,無人不曉。只要你能連上互聯(lián)網(wǎng),幾乎就一定聽說過比特幣。即便你對區(qū)塊鏈應(yīng)用或者密碼學(xué)技術(shù)完全不感興趣,也會從多如牛毛的報道中獲取很多關(guān)于比特幣的信息。
一個公認(rèn)的事實是,正是比特幣開啟區(qū)塊鏈應(yīng)用成功落地之先河。至今,比特幣誕生已超過10年。這個時間足夠漫長,足夠去驗證一件新生事物的生命力。
如今,微信現(xiàn)在已經(jīng)成為我們?nèi)穗H交往的重要工具,從北上廣深到十八線小鎮(zhèn)農(nóng)村,很少不用微信的人。一個難以相信的現(xiàn)實是,微信的年齡只有不到9歲。如今,微信之強(qiáng)大,不在于其功能強(qiáng)大,也不在于其合作伙伴眾多,其強(qiáng)大來自于用戶。目前,超過10億中國人民大多都是其用戶。
而作為去中心化的代表,比特幣的強(qiáng)大——不是掌握國家權(quán)力的各國政府,事實上,各國政府對比特幣恨大于愛;也不是掌握算力、炒作、媒介的大咖們,事實上,不少投機(jī)客混跡其中,風(fēng)聲不對頭一個跑;更不是什么虛無縹緲的自由主義信仰,信仰的又不是圣光,誰來賜予你力量?比特幣真正的底氣,是密碼學(xué)。
作為目前知名度最高的區(qū)塊鏈產(chǎn)品與市場總值最高的加密貨幣,比特幣主要使用兩個密碼學(xué)算法保證自身的安全性:ECDSA與SHA256哈希算法。ECDSA是基于ECC的數(shù)字簽名算法,它主要用來生成隨機(jī)的秘鑰對(公鑰和私鑰),而SHA256則用來實現(xiàn)工作量證明機(jī)制(PoW)以及通過公鑰計算出地址。
下面我們簡單分析一下密碼學(xué)是如何保證比特幣系統(tǒng)安全的:
正所謂,密碼學(xué)問題,基本都是數(shù)學(xué)問題,比特幣系統(tǒng)自然也不例外。在比特幣系統(tǒng)中,我們通過私鑰來完成對比特幣的控制,私鑰必須始終保持機(jī)密,一旦私鑰被泄露給第三方,就意味著失去對相應(yīng)地址下比特幣的控制。一言以蔽之,認(rèn)鑰不認(rèn)人。
這是比特幣跟銀行賬戶一個顯著的不同,銀行賬戶主要是認(rèn)人,密碼丟失也可以通過提交有效身份證明來進(jìn)行密碼找回,這在比特幣系統(tǒng)中是行不通的。
比特幣系統(tǒng)中,私鑰由符合Secp256k1.ECDSA 標(biāo)準(zhǔn)橢圓曲線生成(記住這個曲線的名字,后文中要講)。產(chǎn)生私鑰后,再由私鑰生成相對應(yīng)的公鑰,進(jìn)而根據(jù)公鑰進(jìn)行SHA256哈希算法生成比特幣地址。注意,整個過程單向不可逆,這在密碼學(xué)上被稱為陷門函數(shù)。
在進(jìn)行比特幣交易時,每筆交易都必須進(jìn)行數(shù)字簽名。數(shù)字簽名,就好比政府單位批示文件中蓋的合格印章,只有掌握私鑰才能進(jìn)行數(shù)字簽名。簽名之后,交易即被記錄到鏈上,經(jīng)過足夠多的區(qū)塊確認(rèn)之后,便成為比特幣總賬簿的一部分。這意味著本記錄永久有效,再也不能被撤回和修改。
綜上,以ECC為代表的密碼學(xué)堪稱比特幣的基石,其重要性無論怎么形容都是不過分的。關(guān)于ECC中,秘鑰對的創(chuàng)建方式,地址實現(xiàn)等流程等相對復(fù)雜,這里不做詳述,期待大家自行研究。
SECP256K1與棱鏡門
關(guān)于用來產(chǎn)生秘鑰對的Secp256k1曲線,還有一段值得載入史冊的軼事,因為它幫助比特幣躲過一支歷史級的暗箭。
前文我們說到,在RSA等非對稱加密算法的誕生,給各國情報部門的工作帶來極大阻力??v然特工們上窮碧落下黃泉,結(jié)果也是收效甚微,但各國情報部門對現(xiàn)有加密方式的破解行動從未停止過,他們在嘗試各種方式來破解其他國家的加密文件。
就拿ECC來說,盡管它功能強(qiáng)大,但畢竟不是完美無缺。ECC有一個特點,它需要通過橢圓曲線來獲取大量的隨機(jī)數(shù)。要選擇出一條安全的橢圓曲線用以加密,并不是一件容易的事。學(xué)術(shù)界已經(jīng)提出了很多不同的橢圓曲線選取標(biāo)準(zhǔn),但遺憾的是,雖然理論上可行,但現(xiàn)實表明,目前人們研究出的通用標(biāo)準(zhǔn)并不足以完全保障ECC的安全。因此,如何選擇更優(yōu)質(zhì)的曲線,成為了安全相關(guān)課題明面上的難題之一。
為了攻破ECC,各國黑客和特工無不下了大功夫。密碼學(xué)領(lǐng)域貌似平靜的水面下,你不知道它背后藏著怎樣的陰謀!早先,美國RSA公司開發(fā)了兩條用以加密的橢圓曲線,SECP256r1和SECP256k1。前者廣泛被實際應(yīng)用中采用,后者在實際應(yīng)用中不如前者,比特幣系統(tǒng)的設(shè)計中采用了后者。
2013年發(fā)生了震驚世界的棱鏡門事件。這一年,前中情局(CIA)職員愛德華·斯諾登將兩份絕密資料交給英國《衛(wèi)報》和美國《華盛頓郵報》,世界輿論隨之嘩然,從此拉開棱鏡門的帷幕。
棱鏡計劃(PRISM),代號“US-984XN”,是一項由美國國家安全局(NSA)和聯(lián)邦調(diào)查局(FBI)自2007年小布什時期起開始實施的絕密電子監(jiān)聽計劃,包括微軟、雅虎、谷歌、蘋果等在內(nèi)的9家國際網(wǎng)絡(luò)巨頭皆參與其中。
該計劃的一項重要內(nèi)容,即NSA對SECP256r1曲線安置了后門陷阱。這使得特工在破解ECC加密時難度大幅降低。只要暴露過公鑰,就有一定概率被NSA猜出私鑰。
一言以蔽之,SECP256r1被證實是一條不安全的偽隨機(jī)曲線,被美國情報人員破解可能性非常大。
幸運的是,比特幣選擇的橢圓曲線是沒有被添加后門的SECP256k1,這件事至今仍讓人感到不可思議。大家在佩服中本聰?shù)拿艽a學(xué)造詣的同時一度有人懷疑中本聰是美國國家安全局的人,或者曾經(jīng)為其效力過,但最終沒有真憑實據(jù)。
在北大軟微-八分量協(xié)同實驗室學(xué)術(shù)沙龍活動中,我們進(jìn)行了許多前沿加密技術(shù)的分析和論文解讀,從功能性、系統(tǒng)方案出發(fā),結(jié)合新的實際場景進(jìn)一步研究。在學(xué)術(shù)沙龍分析中,發(fā)現(xiàn)ECC在應(yīng)用中特別需要注意的兩個地方。
1. 如何擴(kuò)大ECC在使用過程中的優(yōu)勢
比如,現(xiàn)在ECC的實現(xiàn)方法都是串行的,關(guān)于如何能夠用并行方式實現(xiàn)ECC是ECC在實際使用中非常值得研究的方向。如果能在這個領(lǐng)域有所突破,無論理論上還是實踐中,都會是一件非常引人矚目的事?;蛘撸ㄟ^軟硬件結(jié)合的方式來提高安全性,比如已經(jīng)有項目通過SGX與區(qū)塊鏈的結(jié)合來實現(xiàn)安全高效的方案。
2. 如何選擇更優(yōu)質(zhì)的曲線來保障安全
目前研究表明,曲線系數(shù)的選取必須滿足判別式δ=4a3+27b2≠0,這是曲線選取的必要條件。另外,除了棱鏡門爆出的SECP256r1曲線被證明是偽隨機(jī)數(shù)曲線外,異常曲線和超奇異曲線已經(jīng)被證明是不安全曲線,一定要避免使用。
值得一提的是,未來學(xué)術(shù)沙龍將就如橢圓曲線的工程優(yōu)化、數(shù)字簽名的加速手段、多方安全計算需求、零知識證明需求等內(nèi)容展開談?wù)摗?/p>
此外,我們知道,這些年區(qū)塊鏈項目在獲得長足發(fā)展之時,也沒少受到外界的各種攻擊。頭部項目如比特幣、以太坊,更是各種黑客的優(yōu)先攻擊對象?,F(xiàn)在已經(jīng)有很多論文來分析復(fù)現(xiàn)這些比特幣、以太坊上的攻擊方法和漏洞,而八分量對這些攻擊的抵御能力如何呢?軟微實驗室如果未來可以通過實際測試來確認(rèn)八分量的抵御效果,實驗結(jié)果不但對八分量自身的開發(fā)大有利處,也為未來發(fā)論文積累了寶貴的經(jīng)驗財富。