區塊鏈各細分領域蓬勃發展,從硬體製造、基礎設施到底層技術開發、平臺建設,再到安全防護、行業應用,以及媒體社區等區塊鏈行業服務機構,已經初步形成了一個完整的產業生態鏈。
1。區塊鏈面臨的安全問題與應對措施
(1)底層代碼的安全性
區塊鏈項目(尤其是公有鏈)的一個特點是開源。通過開放原始碼,來提高項目的可信性,也使更多的人可以參與進來。但原始碼的開放也使得攻擊者對於區塊鏈系統的攻擊變得更加容易。2016年10月,國家網際網路應急中心發布《開源軟體原始碼安全漏洞分析報告——區塊鏈專題》,針對區塊鏈領域的知名開源軟體,結合漏洞掃描工具和人工審計的方式,在代碼層面發現高危安全漏洞746個,中危漏洞3497個,數量較多的高危漏洞有不安全的隨機數、不安全的JNI、空指針解引用等。2018年3月,慢霧安全團隊披露了一起由於以太坊生態缺陷導致的億級數字資產盜竊事件。攻擊者利用以太坊節點Geth/ParityRPCAPI鑑權缺陷,惡意調用eth_sendTransaction盜取數字資產,持續時間長達兩年。應對措施主要有兩方面:一是使用專業的代碼審計服務,二是了解安全編碼規範,防患於未然。
(2)密碼算法的安全性
以比特幣為例,每個區塊都對應一個散列值,採用SHA256算法計算得到。在現階段,該算法依舊滿足散列函數的三個特性,單向性、弱無碰撞性和強無碰撞性,是安全的。由於SHA1和MD5已經被密碼學者找到碰撞,所以,不應選取這兩個算法作為區塊鏈中的散列算法。比特幣中的交易採用了橢圓曲線數字籤名算法ECDSA,確保了交易的完整性。比特幣中的橢圓曲線採用的是Koblitz曲線(secp256k1)而非美國國家標準與技術研究院(NIST)推薦的secp256r1。雖然當前並無證據,但有分析認為secp256r1有可能是被NIST選取的帶後門的橢圓曲線,而比特幣在無形中避開了這一風險。
隨著量子計算機的發展,越來越多的研究人員開始關注能夠抵抗量子攻擊的密碼算法,如基于格的密碼算法等。橢圓曲線密碼並不能抵抗量子攻擊,當對於密碼的量子攻擊在未來成為現實時,所有不能夠抵抗量子攻擊的密碼算法都存在較大風險,需要被替換。不過,在比特幣中,比特幣地址是對公鑰進行散列並使用base58編碼後的結果,如果比特幣資金存放在一個沒有支出過的地址裡,這意味著公鑰尚未公開,則它們在量子計算機面前是安全的。
應對措施有:作為設計者,一是在設計時採用現階段安全的密碼算法,同時關注抗量子攻擊的密碼研究的進展,在其成熟後優先考慮使用;二是參考比特幣對於公鑰地址的處理方式,降低公鑰洩露所帶來的潛在的風險。作為用戶,尤其是比特幣用戶,每次交易後的餘額都採用新的地址進行存儲,確保有比特幣資金存儲的地址的公鑰不外洩。
(3)共識機制的安全性
當前的共識機制有工作量證明(ProofofWork,PoW)、權益證明(ProofofStake,PoS)、授權權益證明(DelegatedProofofStake,DPoS)、實用拜佔庭容錯(PracticalByzantineFaultTolerance,PBFT)等。PoW面臨51%攻擊問題。由於PoW依賴於算力,當攻擊者具備算力優勢時,找到新的區塊的概率將會大於其他節點,這時其具備了撤銷已經發生的交易的能力。需要說明的是,即便在這種情況下,攻擊者也只能修改自己的交易而不能修改其他用戶的交易(攻擊者沒有其他用戶的私鑰)。在PoS中,攻擊者在持有超過51%的Token量時才能夠攻擊成功,這相對於PoW中的51%算力來說,更加困難。在PBFT中,惡意節點小於總節點的1/3時系統是安全的。
總的來說,任何共識機制都有其成立的條件,作為攻擊者,還需要考慮的是,一旦攻擊成功,將會造成該系統的價值歸零,這時攻擊者除了破壞之外,並沒有得到其他有價值的回報。對於區塊鏈項目的設計者而言,應該了解清楚各個共識機制的優劣,從而選擇出合適的共識機制或者根據場景需要,設計新的共識機制。
(4)智能合約的安全性
智能合約具備運行成本低、人為幹預風險小等優勢,但如果智能合約的設計存在問題,將有可能帶來較大的損失。2016年6月,以太坊最大眾籌項目TheDAO被攻擊,黑客獲得超過350萬個以太幣,後來導致以太坊分叉為ETH和ETC.2017年11月7日Parity多重籤名合約漏洞導致93萬個以太幣永久丟失。
應對措施主要有兩方面:一是對智能合約進行安全審計,二是遵循智能合約安全開發原則[12]。智能合約的安全開發原則有:對可能的錯誤有所準備,確保代碼能夠正確的處理出現的bug和漏洞;謹慎發布智能合約,做好功能測試與安全測試,充分考慮邊界;保持智能合約的簡潔;關注區塊鏈威脅情報,並及時檢查更新;清楚區塊鏈的特性,如謹慎調用外部合約等。
(5)數字錢包的安全性
數字錢包主要存在三方面的安全隱患:第一,設計缺陷。2014年底,某籤報因一個嚴重的隨機數問題(R值重複)造成用戶丟失數百枚數字資產。第二,數字錢包中包含惡意代碼。2017年,有網友使用某投資微信群推薦的錢包軟體,導致數字資產丟失[13]。第三,電腦、手機丟失或損壞導致的丟失資產。應對措施主要有四個方面:一是確保私鑰的隨機性;二是在軟體安裝前進行散列值校驗,確保數字錢包軟體沒有被篡改過;三是使用冷錢包;四是對私鑰進行備份。
2。區塊鏈安全服務
針對目前區塊鏈存在的底層代碼、密碼算法、共識機制、智能合約、數字錢包等安全問題,該領域也出現了一些提供安全服務的公司,它們主要通過技術手段、代碼審計幫助客戶解決各種區塊鏈安全問題。
例如,成都鏈安科技有限公司對區塊鏈智能合約進行形式化驗證,開發了面向區塊鏈智能合約安全性和功能正確性驗證平臺VaaS。目前,VaaS平臺已支持主流區塊鏈平臺(如以太坊、EOS等)智能合約的形式化驗證,並且已與國內10多家區塊鏈行業的知名企業建立了合作關係。VaaS形式化驗證平臺,採用了多種形式化驗證方法,具有驗證效率高、自動化程度高、人工參與度低、易於使用、支持多個合約開發語言、可支持大容量區塊鏈底層平臺的形式化驗證等優點。VaaS提供了針對智能合約的形式化驗證工具,極大提高了智能合約的安全性與可靠性。產品通過對合約代碼進行嚴格的安全驗證,杜絕邏輯漏洞,確保合約安全,在滿足實際應用效率需求的同時,達到有效控制漏洞風險的目的。
再如,廈門慢霧科技有限公司,專注區塊鏈生態安全,已經為全球多家知名區塊鏈公司做了安全審計與防禦部署,作為第三方審計單位審計了200多份以太坊智能合約,累計發現數十個高危、中危安全問題。區塊鏈生態風控產品——惡意錢包地址庫,涵蓋釣魚、勒索、盜竊三大類型的惡意錢包地址,涵蓋多種區塊鏈數字資產,同時提供Python、NodeJS、Go、Java等主流語言的SDK,可靈活接入產品風控體系。依託慢霧的墨子系統及蜜罐分析技術,以及能夠近實時監控、分析社交媒體上釣魚信息的語義識別模塊,再輔以其安全團隊專業的篩選、判斷,保證了數據的準確有效。此外,通過其廣大的生態合作夥伴,還可實現惡意錢包信息共享。「慢霧區」區塊鏈安全社群已累計輻射人數達10多萬人,通過共享威脅情報、交流區塊鏈安全技術,與眾多的區塊鏈從業人員一起共同努力為區塊鏈生態安全添磚加瓦。
3。量子技術發展帶來的安全挑戰和應對
量子計算機就是建立在量子實體(如光子、電子、原子、離子)基礎上運行量子比特的計算機,由於量子計算機具有基於量子比特的並行處理信息的能力,理論上其計算能力隨量子比特位數的增加呈指數級增加,因此相比經典計算機具有超級強大的計算能力。國際上,Google、IBM、微軟等公司都投入了巨資研發量子計算機的硬體及軟體,2017年IBM公司宣布研製出具有50個量子比特的量子計算原型機,2018年Google公司發布了72個量子比特的量子晶片,微軟公司主要針對拓撲量子計算進行研發,2018年宣布取得重大進展。國內也有多個科研機構及阿里巴巴、騰迅、百度等網際網路公司在量子計算領域進行前沿研究。
量子計算機將會給現在使用的密碼體系帶來重大的安全威脅。區塊鏈主要依賴橢圓曲線公鑰加密算法生成數字籤名來安全地交易,目前最常用的ECDSA、RSA、DSA等在理論上都不能承受量子攻擊。根據理論預測,對於一定長度的基於非對稱橢圓曲線加密算法ECC密鑰,用目前超級計算機需要幾十年才能破解的密碼如果採用具有數千個量子比特的量子計算機及Shor算法預計數十分鐘就可以破解。可見,一些量子算法將對目前區塊鏈所採用的公鑰密碼體系產生嚴重的威脅,必須提出應對量子計算的安全策略。
為了應對量子計算機給密碼帶來的安全威脅,目前主要可以採用基於抗量子計算密碼和量子密鑰的方法。抗量子計算密碼的優勢在於,將抗量子計算密碼應用於網際網路中不需要添加額外的硬體設備,特別是昂貴的量子硬體系統,有利於快速大規模普及應用。量子密鑰的優勢在於其具有更高的基於物理上的安全性,而目前主要的缺點在於需要基於相對昂貴的量子硬體系統,將來量子硬體設備會進一步集成化和降低成本,這將有利於量子密鑰的廣泛應用。在今後的實際應對策略中,可以根據具體應用的安全需求,將兩種策略組合使用。
應對策略1:採用抗量子計算密碼。
量子計算機對一些特定數學問題可以極大地加速計算,但是目前看並沒有對所有數學問題都具有加速作用,因此可以利用量子計算機不擅長的數學問題來進行抗量子計算加密算法的研發。國際上早在2006年就舉行了抗量子計算密碼研討會,目前有多個被認為是抗量子計算的加密體制:基於Hash的密碼、基於糾錯碼的密碼、基于格的密碼、基於多變量公鑰密碼等,這些加密方法被認為在足夠長的密鑰下可以抵抗經典與量子計算攻擊。目前,國外已經有區塊鏈採用了抗量子計算密碼加密算法,英國的抗量子帳本採用了能夠抵抗量子計算攻擊的加密算法。而抗量子計算密碼如果要廣泛應用還需要相關國際通用標準的制定,因為新算法必須要既能抵抗量子計算機的攻擊又能抵抗傳統經典計算機的攻擊,需要進行深入研究。
抗量子計算密碼本質上仍然是基於數學的安全,未來量子計算進一步發展也有可能突破某些數學難題,讓部分抗量子計算密碼不再安全。如果純粹從安全性上考慮也存在一定風險,因此人們也在關注基於物理安全的量子密鑰加密方式。
應對策略2:採用量子密鑰。
量子密鑰分發是利用光子的量子性質而分配密鑰的一種方式,通過這種方式產生的密鑰可以不斷地給用戶提供新的隨機密鑰,而且這是來自於物理層的隨機性。在量子密鑰分發的過程中,並不直接將密鑰通過信道傳給對方,而是雙方經過進一步協商後產生密鑰,如果中間有人試圖竊聽,那麼就會增加系統的誤碼率而被發現,通信雙方就可以捨棄這一段不安全的密鑰而協商新的隨機密鑰。相比基於數學算法的密鑰,量子密鑰是基於物理上的安全,因此即使運算能力強大的量子計算機也無法對其進行計算破解。1984年IBM的科學家CharlesBennett及其合作者提出了首個量子密鑰分發協議BB84協議,之後又發展出了E91、B92、MDI-QKD等協議。中國在這個領域後來居上,目前處於世界最領先的水平。2017年,俄羅斯科學家將量子密鑰分發技術應用於區塊鏈的加密,並在實驗上進行了成功的演示。
(責任編輯:DF207)