在區塊鏈技術安全范疇中,既有“傳統”互聯網世界中面臨的網絡拒絕服務攻擊、代碼漏洞等攻擊威脅,也包含區塊鏈獨有的風險點(如智能合約漏洞)。2010年8月15 日,比特幣發生的代碼漏洞攻擊事件中,有人在比特幣區塊鏈的第74638塊上發現了一條讓人驚愕的交易,這筆交易里竟然出現了184,467.440737.09551616 個比特幣,其中各有922億個比特幣被發送到兩個比特幣地址。這次攻擊的根本原因則是比特幣的驗證機制中存在大整數溢出漏洞,由于大整數溢出為負數,網絡各個節點對黑客的交易均驗證通過,導致了比特幣區塊鏈中憑空出現了大量比特幣。
1. 基礎組件和設施面臨的安全威脅
基礎組件層利用基礎設施可以實現區塊鏈系統網絡中信息的記錄、驗證和傳播。在基礎組件層之中,區塊鏈是建立在傳播機制、驗證機制和存儲機制基礎上的一個分布式系統,整個網絡沒有中心化的硬件或管理機構,任何節點都有機會參與總賬的記錄和驗證,將計算結果廣播發送給其他節點,且任一節點的損壞或者退出都不會影響整個系統的運作。其對應的安全風險包括網絡安全問題、密碼學安全問題和數據存儲安全問題。其中的數據存儲安全問題涉及內容安全層面,面臨有害信息上鏈以及資源濫用等風險,限于篇幅,具體內容不展開介紹。
1.1 密碼學安全威脅分析
區塊鏈技術本身采用了密碼學的很多機制,例如非對稱加密、哈希算法等,這些密碼學算法目前來講是相對安全的。隨著數學、密碼學和計算技術的發展,尤其是人工智能和量子計算的興起,這些算法面臨著被破解的可能性。同時,這些密碼算法需要編程實現,在代碼實現方面也可能存在缺陷和漏洞。
ECC、RSA、 哈希等復雜加密算法本身以及在算法的工程實現過程中都可能存在后門和安全漏洞,進而危及整個區塊鏈驗證機制的安全性。具有超級計算能力量子計算機的出現也在對密碼學構成潛在威脅,隨著量子計算技術的飛速發展,大量子比特數的量子計算機、量子芯片、量子計算服務系統等相繼問世,可在秒級時間內破解非對稱密碼算法中的大數因子分解問題(其破解擁有1024位密鑰的RSA算法只需數秒),這正在成為威脅區塊鏈數據驗證機制的典型攻擊手段之一。2017年5月,新型數字加密貨幣IOTA團隊請求MIT研究組審計其軟件及代碼。7月,MIT研究者告知IOTA團隊,他們發現了IOTA的加密哈希功能函數Curl中存在嚴重的漏洞(哈希碰撞),因此IOTA的數字簽名及PoW安全性均無法保障。8月,IOTA 團隊采用SHA-3替代掉了備受質疑的Curl哈希算法。
移動數字錢包等區塊鏈客戶端軟件的安全實現涉及公私鑰的使用,而通常情況下用戶都是使用軟件來生成公私鑰,其中私鑰的安全性會直接涉及到用戶錢包或資產的安全問題,如果在不安全的環境中運行私鑰,會增加私鑰的泄露風險給用戶帶來不可預知的損失。目前,針對區塊鏈客戶端軟件進行攻擊的方法基本相同:一種方法是通過竊取憑據來尋求獲得系統未經授權的訪問權限;另外一種方法則是通過捕獲信息、植入惡意軟件和/或使用社會工程實現對用戶機器中私鑰的竊 取。2017年,以太坊瀏覽器Mist爆出“高危”漏洞,漏洞來源于底層軟件框架Electron, 這個漏洞讓加密數字貨幣私鑰處于未知風險。一再發生的區塊鏈密鑰被盜攻擊事件已經表明,一些程序正在生成弱密鑰,產生有限范圍的可能值,而通過這些有限的隨機數生成器生成的密鑰可以更容易地被蠻力攻擊。
1.2 P2P網絡安全威脅
區塊鏈系統以P2P網絡為基礎,針對P2P網絡,攻擊者可以發動Eclipse日食攻擊、分割攻擊、延遲攻擊、竊聽攻擊、DDoS拒絕服務攻擊,進而造成整個區塊鏈系統的安全問題。
在區塊鏈P2P網絡中通常采用廣播機制來傳播節點信息,而廣播機制中常見的攻擊方式則主要有雙花攻擊和交易延展性攻擊兩種。
1)日食攻擊
日食攻擊是通過其他節點實施的網絡層面攻擊,其攻擊手段是囤積和霸占受害者的點對點連接間隙,將該節點保留在一個隔離的網絡中。這種類型的攻擊旨在阻止最新的區塊鏈信息進入到被攻擊的節點,從而隔離節點。
比特幣和以太坊網絡已被證實均能被實施日食攻擊。針對比特幣網絡,攻擊者會先控制足夠數量的IP地址來壟斷所有受害節點之間的有效連接,之后攻擊者則會征用受害者的挖掘能力,并用它來攻擊區塊鏈的一致性算法或用于“重復支付和私自挖礦”。而針對以太坊網絡,攻擊者會壟斷受害節點所有的輸入和輸出連接,將受害節點與網絡中其他正常節點隔離開來,進而攻擊者會誘騙受害者查看不正確的以太網交易細節,誘騙賣家在交易其實還沒有完成的情況下將物品交給攻擊者。對比特幣網絡上的節點實施日食攻擊需要成千上萬個惡意節點才能搞垮一個受害者的節點,而在以太坊網絡上,攻擊者只需通過建立一個僵尸網絡(如購買云服務)就可以發起攻擊。論文《Low-Resource Eclipse Attacks on Ethereum‘ s Peer- to-Peer Network》指出:攻擊者只需要兩個惡意的以太坊節點就能隔離和影響另一個節點進行日食攻擊,因此對以太坊網絡實施日食攻擊的成本較低。
2)分割攻擊
邊界網關協議(BGP)是因特網的關鍵組成部分,其主要用于確定路由路徑,而通過劫持BGP可以實現對基于物聯網信息傳遞的區塊鏈節點流量的誤導和攔截。利用BGP操縱因特網路由路徑,在最近幾年中已經變得越來越頻繁。網絡犯罪分子可以利用劫持BGP誤導和攔截流量,一旦區塊鏈網絡中節點的流量被接管,會對整個網絡造成巨大影響,如破壞共識機制、交易等各種信息。
攻擊者可以利用BGP劫持將區塊鏈網絡劃分成兩個或多個無法通信的獨立不相交網絡,此時的區塊鏈分叉為兩條或多條并行鏈。攻擊停止后,區塊鏈會重新統一為一條鏈,以最長的鏈為主鏈,其他的鏈將被廢棄,被廢棄的鏈上的交易、獎勵將全部無效,從而導致雙重花費甚至是多次花費問題的出現。
3)延遲攻擊
攻擊者可以利用BGP劫持來延遲目標的區塊更新,而且不被發現。在目標請求獲取最新區塊的時候,攻擊者可以基于中間人攻擊修改目標請求為獲取舊區塊的請求,使得目標獲得較舊的區塊。例如在挖礦過程中如果遭遇了延遲攻擊,礦工獲取最新塊的請求被惡意修改使其無法獲取到新區塊,這將導致礦工的算力無辜受損。
4) DDoS攻擊
區塊鏈網絡中具有數以百萬計的在線用戶數,區塊鏈節點會提供大量的分布式存儲和網絡帶寬可用資源服務于百萬在線用戶。攻擊者只需在層疊網絡(應用層)中控制這些節點資源,而無需入侵區塊鏈網絡節點所運行的主機,即可利用這些資源作為一個發起大型DDoS攻擊的放大平臺。理論而言,將區塊鏈網絡作為DDoS攻擊引擎時,假如該網絡中有一百萬個在線用戶,則可使得攻擊放大一百萬倍甚至更多。
2017年2月份,以太坊Ropsten測試鏈遭到惡意攻擊,攻擊者發動了千萬級別的垃圾交易信息,直接阻塞了網絡的正常運行。
2018年3月22日,閃電網絡節點遭受DDoS攻擊,導致大約200個節點被迫離線,其在線節點從大約1,050 個降到了870個。
根據攻擊方式的不同,基于區塊鏈的DDoS攻擊可分為主動攻擊和被動攻擊兩種?;趨^塊鏈的主動DDoS攻擊是通過主動向網絡節點發送大量虛假信息,使得針對這些信息的后續訪問都指向受害者來達到攻擊效果,其具有可控性較強、放大倍數高等特點。這種攻擊利用了區塊鏈網絡協議中的“推(push)” 機制,反射節點在短時間內接收到大量通知信息后不易于分析和記錄,攻擊者還可以通過假冒源地址來躲避IP檢查,使得追蹤定位攻擊源更加困難。此外,主動攻擊在區塊鏈網絡中引入額外流量,會降低區塊鏈網絡的查找和路由性能,而虛假的索引信息則會影響文件下載速度?;趨^塊鏈的被動DDoS攻擊是通過修改區塊鏈客戶端或者服務器軟件,被動等待來自其它節點的查詢請求,再通過返回虛假響應實現攻擊效果。通常情況下,其會采取一些放大措施來增強攻擊效果,如:部署多個攻擊節點、在一個響應消息中多次包含目標主機、結合其它協議或者實現漏洞等。這種攻擊利用了區塊鏈網絡協議中的“?。╬ul)”機制。被動攻擊屬于非侵擾式,對區塊鏈網絡流量影響不大,通常只是針對局部的區塊鏈節點。
5) 交易延展性攻擊
區塊鏈節點與節點互相連接,當某節點接入到區塊鏈網絡后,單個節點會與其他節點建立連接并擁有廣播信息的資格,這些具備廣播信息資格的節點在將信息傳播給其他節點后,其他節點會驗證此信息是否為有效信息,確認無誤后再繼續向其他節點廣^播,這種廣播機制會面臨如交易延展性攻擊等風險攻擊者通過偵聽P2P網絡中的交易,利用交易簽名算法特征修改原交易中的input簽名,生成擁有一樣input和output的新交易,廣播到網絡中形成雙花,這樣原來的交易就可能有一定概率不被確認,在虛擬貨幣交易的情況下,它可以被用來進行二次存款或雙重提現。
2013年11月,GHashio 礦池對賭博網站BetCoin Dice進行多次付款欺詐,進行雙花攻擊。
2014年8月,在線黑市Silk Road2遭遇交易延展性攻擊,部分比特幣被盜,損失約260萬美元。
2. 系統核心設計安全威脅
智能合約作為區塊鏈2.0區別于1.0的顯著特性,正在被廣泛使用。數據層和共識層作為區塊鏈系統的必要元素,與合約層一起共同構成了區塊鏈系統的核心,銜接著基礎服務與應用生態。
2.1 共識層安全威脅
由于區塊鏈去中心化的特點,每一個處于區塊鏈網絡中的節點都擁有一份完整的賬本數據,并且由網絡中的共識機制執行相應的共識算法來共同記錄整個網絡中的交易等相關信息。目前的共識機制有PoW、PoS、 DPoS、 Pool 驗證池機制、PBFT等,其主要面臨的攻擊有女巫攻擊、51%攻擊、長距離攻擊、短距離攻擊、幣齡累計攻擊、預計算攻擊。PoW、PoS、 DPoS這三種常見共識機制所面臨的攻擊方式如表2-1所示。
1) 51%攻擊
在PoW算法中被證明存在51%算力攻擊威脅,即如果某一個節點或者由部分節點組成的組織掌握了全網超過51%的算力,這些節點就有能力將目前正在工作的區塊鏈轉移到另一-條包含有惡意行為的區塊鏈上,并使得全網節點在這條惡意的區塊鏈上繼續工作。
如果攻擊者能夠控制全網算力的一半以上,攻擊者可以比網絡的其他部分更快地生成塊,隨著攻擊者堅持自己的私有分支,直到它比誠實節點網絡建立的分支更長,將可以使得全網節點在這條惡意的區塊鏈上繼續工作,近而代替主鏈。
由于比特幣所使用的PoW算法的安全性依賴于其所消耗的巨大算力,51%算力攻擊曾一度被認為是難以達到的。然而隨著礦池的出現,一個名為GHash的礦池就曾經在2014年6月擁有全網51%的算力,因此,51%算力攻擊的威脅始終存在,并且有可能發生。2016年8月份,基于以太坊的數字貨幣Krypton 遭受來自一個名為“51%Crew“的組織通過租用Nicehash算力所發起的51%攻擊,導致該區塊鏈損失約21,465KR的代幣。據Crypto51.app數據統計,想完成對比特幣一個小時的51%算力攻擊的成本大概要55萬美金,完成對以太坊的攻擊需要36萬美金,萊特幣需要6.4萬美金,比特幣現金需要7.2萬美金,最近剛被攻擊過的BitcoinGold比特幣黃金只需要三千八百六十美金就能完成51%攻擊,在統計的流通性比較高的數字貨幣里攻擊成本最低的就是Bytecoin, 要完成攻擊僅僅需要五百五十七美金。而實際上,隨著挖礦業務的發展,現在通過網絡租賃算力的業務也越來越成熟了,攻擊者不再需要花費大量成本去購買礦機,只需要在攻擊的時候即時從網上租賃算力來發動51%攻擊,利用51%算力攻擊一個數字貨幣的成本在越來越低。
2)女巫攻擊
女巫攻擊又稱Sybil攻擊,攻擊者通過創建大量的假名標識來破壞對等網絡的信譽系統,使用它們獲得不成比例的大的影響。為了應對這種威脅,對等網絡中的實體為了冗余機制、資源共享、可靠性和完整性而使用多個標識。多個標識可以對應于單個實體,身份到實體的映射是多對一的。對等網絡上的實體是能夠訪問本地資源的一塊軟件,實體通過呈現身份在網絡上通告自身。在對等網絡中,身份抽象化使得遠程實體可以知道身份而不必知道身份與本地實體的對應關系。默認情況下,通常假定每個不同的標識對應于不同的本地實體。實際上,許多身份可以對應于相同的本地實體。攻擊者可以向對等網絡呈現多個身份,以便出現并充當多個不同的節點。因此,攻擊者可能能夠獲得對網絡的不成比例的控制水平,例如影響投票結果。
3)短距離攻擊
攻擊者通過控制一定比例、保障系統安全性的計算資源、加密貨幣資源等各種資源,實現在執行花費代幣或執行智能合約等操作時將 其回滾,從而進行雙花攻擊,即一個加密貨幣進行兩次花費。
當攻擊者發起短距離攻擊時,首先會向全網提交一個待回滾的交易,并在上一個區塊的分叉上(不包含待回滾交易的分叉)繼續進行挖礦,直到該交易得到n個區塊確認信息。若分叉上的區塊數多于n,則攻擊者公布包含有待回滾交易的區塊。這樣,由于分叉鏈的長度大于原本的主鏈,則全網節點將分叉鏈視為主鏈,此時,交易得到回滾。
4) 長距離攻擊
攻擊者通過控制一定比例的系統資源,在歷史區塊、甚至是創世區塊上對區塊鏈主鏈進行分叉,旨在獲取更多的區塊獎勵和/或者達到回滾交易的目的。這種攻擊更多的是針對基于權益證明共識機制的系統。即使攻擊者可能在分叉出現時僅持有一小部分的代幣,但他可以在分叉上自由地進行代幣交易,從而導致攻擊者能夠更加容易地進行造幣并快速形成一條更長的區塊鏈。
5) 幣齡累積攻擊
基于PoS共識機制的系統中,攻擊者可以利用幣齡計算節點權益,并通過總消耗的幣齡確定有效的區塊鏈。未花費交易輸出(UTXO)的幣齡是根據幣齡乘以該區塊之前的歷史區塊的數量得出(比如點點幣)。在幣齡累計攻擊中,攻擊者將其持有的代幣分散至不同的UTXO中,并等待直至其所占權益遠大于節點平均值。這樣,攻擊者有極大的可能性連續進行造幣,從而達到對主鏈的分叉或交易回滾(如實施雙花攻擊)的目的。
6)預計算攻擊
在PoS共識機制中,解密當前區塊取決于前一個區塊的哈希值。擁有足夠算力和權益的攻擊者可以在第n個區塊的虛擬挖礦過程中,通過隨機試錯法對該區塊的哈希值進行干涉,直至攻擊者可以對第n+1個區塊進行挖礦,從而,攻擊者可以連續進行造幣,并獲取相對應的區塊獎勵或者發起雙花攻擊。
2.2 合約層安全威脅
智能合約是區塊鏈2.0的一個特性,隨著區塊鏈2.0技術的不斷推進,智能合約在以太坊、EOS、 Hyperledge 等平臺上得到廣泛應用。區塊鏈的智能合約一般都用來控制資金流轉,應用在貿易結算、數字,資產交易、票據交易等場景中,其漏洞的嚴重性遠高于普通的軟件程序。由于智能合約會部署在公鏈暴露于開放網絡中,容易被黑客獲得,成為黑客的金礦和攻擊目標,一旦出現漏洞,將直接導致經濟損失。從TheDAO到BEC和SMT的整數溢出漏洞、再到EOS緩沖區溢出越界寫漏洞,智能合約的安全漏洞頻發,“智能合約”已經成為區塊鏈安全的重災區。
以太坊( Ethereum)是目前最熱門的具有智能合約功能的開源公共區塊鏈平臺,區塊鏈上的所有用戶都可以看到基于區塊鏈的智能合約。但是,這會導致包括安全漏洞在內的所有漏洞都可見。如果智能合約開發者疏忽或者測試不充分,而造成智能合約代碼存在眾多漏洞,就非常容易被黑客利用并攻擊。并且功能越強大的智能合約,邏輯越復雜,也越容易出現邏輯上的漏洞。來自新加坡國立大學、耶魯新加坡國立大學學院和倫敦大學學院的一組研究人員發布了一份報告,聲稱已經發現了3.4萬多份以太坊智能合約可能存在容易被攻擊的漏洞,其中大約3000個不安全的智能合約可能會造成600萬美元的ETH被盜。表2-2列出了以太坊的合約層漏洞。
2.3 數據層安全威脅
區塊鏈數據具有不可篡改、去中心化生成和確認的特點,這也就造成了區塊鏈數據的難以監管,使之可被利用進行惡意攻擊和惡意內容傳播。
2017年在EuskalHack安全會議上,有安全研究者提出了基于區塊鏈模式的botnet網絡,利用區塊鏈網絡進行C&C的惡意指令發布并且提供了POC。
2018年3月德國RWTH亞琛工業大學的研究人員發現了比特幣區塊鏈中的非財務數據,其中包括色情內容等。幸運的是,亞琛工業大學的研究人員沒有發現任何惡意軟件保存在比特幣區塊鏈上。在他們的論文中,研究人員指出了你可以通過多種方式在加密貨幣的區塊鏈上插入內容,其中包括CryrtoGrafiti、Satoshi Uploader和Apertus等服務。但另一方面,如果不能開發出解決方案來移除區塊鏈當中的色情內容,那添加的數據就永遠無法管理,并且無法被清除。
目前比特幣、以太坊和Hyperledger Fabric都采用全網節點共享一條區塊鏈的單鏈方案,網絡上的每個節點需要處理、存儲全網的所有交易和全部數據,整個區塊鏈系統的處理能力實際上受限于單個計算節點的處理能力。另外,受到共識算法的影響,隨著節點數的增加,系統整體處理能力不但未隨之提升,甚至還會降低。
區塊鏈對于網絡中的節點來說是透明的,任何一個節點都可以獲取區塊鏈上的所有信息。雖然比特幣使用隨機數和非對稱加密算法生成唯一地址作為用戶的地址進行交易,但是如果這些地址直接或間接地與真實世界發生了聯系,就會失去其匿名性,從而泄露其個人隱私。另外,不同的地址之間如果出現穩定的關聯交易,通過分析交易規律,甚至能夠推測出用戶的身份信息和位置信息。如果交易節點被攻擊,攻擊者不僅可獲得用戶的交易信息,而且很容易借此為跳板破壞整個交易鏈。
3. 應用生態安全威脅
區塊鏈的應用已從數字貨幣的虛擬世界走向了與現實世界相對接的實際應用場景中,其應用生態安全涉及數字貨幣交易平臺、區塊鏈移動數字錢包App、網站、DApp等。
和傳統金融機構差別不大,數字貨幣交易所整個信息系統由Web服務器、后端數據庫等元素構成,用戶通過瀏覽器、移動端App以及交易所提供的API等多種方式作為客戶端訪問服務器。美國數字貨幣安全公司CipherTrace發布的二季度觀察報告顯示,2018年前6個月,全球數字貨幣交易所共有價值7.61億美元的數字貨幣被黑客竊取。而整個2017年的損失金額也不過2.66億美元。2018年上半年以來,被盜取的數字貨幣金額已經達到了2017年的3倍之多。結合各大交易所出現的攻擊事件發現,這部分面臨的安全威脅主要包括:服務器軟件漏洞、配置不當、DDoS攻擊、服務端Web程序漏洞(包括技術性漏洞和業務邏輯缺陷)。
本部分重點介紹網站和移動數字錢包App面臨的威脅。
3.1交易網站面臨的安全威脅
和其他網站一樣,交易網站面臨賬戶泄露、DDoS、Web注入等攻擊,對于規模較大,用戶較多的交易所,還會面臨用戶被攻擊者利用仿冒的釣魚網站騙取認證信息等威脅。
1)賬戶泄露攻擊事件
黑客可利用病毒、木馬、釣魚等傳統攻擊手段竊取用戶賬號,進而利用合法用戶賬號登錄系統進行一系列非法操作,或者通過非法手段拿到交易所系統的數據庫,由于數據庫存儲著用戶的注冊信息,且這些數據沒有加密,黑客拿到這些數據后可以在互聯網上售賣或者對平臺進行惡意操作。攻擊者破解其他安全措施較弱的網站密碼,通過撞庫的方式獲得登錄口令,因此采用雙因子認證等傳統安全用戶認證方式對于數字貨幣交易所和區塊鏈應用系統來說非常必要。
2017年10月2日,OKCoin旗下交易所出現大量賬戶被盜情況,不完全統計損失金額在1000萬人民幣左右,用戶懷疑平臺已被攻擊, 或有已被關閉平臺的交易所員工向黑客泄漏了平臺用戶的賬戶信息,黑客通過用戶信息破解賬戶密碼登錄平臺,然后在平臺上完成數字資產轉移。
2) Web注入攻擊件
攻擊者可以采用SQL注入、XSS跨站腳本攻擊等方式對Web進行注入攻擊,SQL注入是把SQL命令插入到Web表單遞交或輸入域名或頁面請求的查詢字符串,最終達到欺騙服務器執行惡意的SQL命令。XSS跨站腳本攻擊指攻擊者在網頁中嵌入客戶端腳本(例如IJavaScript),當用戶瀏覽此網頁時,腳本就會在用戶的瀏覽器上執行,從而達到攻擊者的目的,比如獲取用戶的Cookie, 導航到惡意網站,攜帶木馬等。
2017年8月份,一款名為Ti ickbot的木馬就針對包括Coinbase在內的幾家數字貨幣交易所增加了Web注入攻擊功能,在受害者購買數字貨幣的時候和會將接收錢包重定向到攻擊者的錢包,讓用戶誤以為轉賬成功,實際上是給攻擊者轉賬了。
3) DDoS攻擊
在區塊鏈應用中,攻擊者可針對區塊鏈應用層和底層協議缺陷發起針對性的DDoS攻擊,影響各類應用業務的可用性。2017年5月12日,Poloniex交易平臺遭受了嚴重的DDoS攻擊,BTC/USDT的交易價格一度困于1761美元,絕大多數用戶都無法執行訂單或是提取資金。根據云計算安全服務提供商Incapsula發布的2017年第四季度DDoS威脅報告,應用層DDoS攻擊數量較前一季度成倍增長,且針對加密貨幣行業的攻擊數量持續增長,占所有攻擊數量的3.7%。
4)釣魚網頁攻擊
2017年4月14日,在約翰霍普金斯大學研究數學的學生xudongzheng發表了一篇論文, 題目是《Phishing with Unicode Domains》,中文大意為“用unicode網址釣魚”,文章中給出的一一種釣魚 方法會使用多語言字符混合來騙過用戶眼睛。
2018年3月7日,知名數字貨幣交易平臺幣安遭到黑客攻擊,此次攻擊造成全球數字幣價格大跌。根據交易所的公告,攻擊者利用釣魚欺騙的方式騙取了部分用戶的認證憑證,在掌握用戶的賬戶權限之后,使用機器掛單,繼而利用API發起大量交易,進行程序化高頻交易,給用戶帶來巨大損失。
3.2 數字貨幣錢包App面臨的威脅
利用移動數字貨幣錢包App管理數字貨幣資產,可以隨時查詢錢包歷史,獲得全球實時交易行情。數字貨幣錢包App中保存的私鑰是區塊鏈節點和數字貨幣賬戶授權活動的直接手段,加密數字貨幣資產的安全性建立在加密數字錢包私鑰本身的安全性上,私鑰是唯一的數字資產憑證,敵手一旦拿到私鑰,就可以拿到私鑰所擔保的任何錢包,因此黑客會想方設法竊取私鑰。移動數字貨幣錢包App與其他App一樣,會遭受破解、內存篡改攻擊等。
1)私鑰竊取
Google Play 商店中超過2000款移動數字貨幣錢包App,由于移動開發過程中缺乏對安全性的認識,前30款總安裝量達到10萬的數字貨幣錢包App中,有94%包含至少3個“中等風險”漏洞,77%包含至少2個“高風險”問題。根據分析顯示,最常見的漏洞是數據存儲安全性不足、密碼系統安全性不足,這些漏洞會導致私鑰的竊取,個人隱私信息泄露等安全事件。
一些數字貨幣錢包為了便于用戶記住私鑰,使用助記詞的方式,但是部分數字貨幣錢包的助記詞采用明文存儲的方式,一旦數字貨幣錢包App存在漏洞,拿到系統的root權限,就可以獲取錢包的助記詞,導致數字資產隨時被盜取。已有公司對市面上的數字錢包產品在私鑰存儲問題上進行了安全分析,發現Bitcoin Wallet 和Jaxx BlockchainWallet兩款產品在私鑰存儲中存在巨大的安全漏洞,加密數字貨幣資產面臨被盜風險。黑客通過嘗試捕獲信息、植入惡意軟件和/或使用社會工程即可從用戶機器中竊取私鑰。
2)破解攻擊
數字貨幣錢包App涉及到數字貨幣資產,是網絡黑產和黑客重點關注的對象,網絡黑產可以從各種渠道找到App的apk,將apk文件逆向破解后植入病毒、木馬代碼,最后二次打包投入公開市場,當不明真相的幣友將帶病毒、木馬的App下載后,會帶來巨大經濟損失。
在開發移動App時,程序員會用到各類的編程語言,如Java、C、C++以及各類腳本語言等都被廣泛大量使用。但Java、 C這樣的中間語言有一個極大的弱點就是極易被反編譯。Java的基本類庫(JDK)是開源的,這就使很多Java開發的應用被逆向破解的門檻很低。目前市面上有大量的逆向破解工具,例如: Dex2Jar、 JEB、JD-GUI 等等。且網上有公開、詳細的破解教程,只要懂代碼編程,利用這些工具就可以破解市面上那些防御薄弱、存在大量安全漏洞的App。
3) App內存篡改攻擊
App應用中的高度敏感和關鍵性信息駐留在一個應用內存中, 如果未受到保護,則這些信息可以被隨意查看和篡改。黑客通常使用進程調試、動態注入、HOOK等技術來實現對App內存的攻擊,這些攻擊方式主要是先對App Code控制,App Data控制進行攻擊修改。通過控制內存中的應用代碼,可以調試解析出應用內邏輯、功能、流程、漏洞等各類關鍵內容。針對發現的漏洞植入相應的后門代碼,以便針對應用進一步攻擊對移動應用數據的攻擊,是黑客/攻擊者的核心內容,App內存中包含很多重要個人信息和應用變現相關的信息和邏輯。黑客對內存中的Data進行控制,以達到篡改App應用的目的,如修改轉賬金額、賬戶等。
4. 區塊鏈面臨的安全挑戰
4.1錢包安全管理
區塊鏈錢包(Block Chain Wallet)是密鑰的管理工具,它只包含i密鑰而不是確切的某一個代幣;錢包中包含成對的私鑰和公鑰,私鑰與用戶的資產直接關聯,用戶用私鑰來簽名交易,從而證明該用戶擁有交易的輸出權。獲取了私鑰,就獲得了資產的使用權和交易權。黑客復制或竊取私鑰可能不會在計算機上留下任何痕跡,甚至可以無限地嘗試解密或嘗試從給定的分類帳中復制加密數據,惡意用戶訪問錢包可能很難被發現。
私鑰保護不僅要考慮在黑客機器上發生的行為,例如不受服務器強加的查詢限制進行文件解密嘗試或私鑰再現,還需要保證在沒有任何其他人能夠注意的情況下保證私鑰運行時的安全。
錢包軟件需要保護私鑰在運行和存儲時的安全,包括未經授權不允許訪問、運行過程防止被監控,甚至做到軟件被控制、監視也無法獲取私鑰:此外,也需要考忠用戶密鑰被盜、丟失后賬戶資產的安全。因此,如何保證私鑰的運行安全以及在保證資產安全的前提下進行私鑰備份是錢包安全管理面臨的挑戰。
4.2 智能合約安全
由于智能合約的不完善,且還存在著許多漏洞,執行起來仍然是一-件具有挑戰性的問題。一旦這些漏洞被黑客利用,就會造成虛擬貨幣的財產外泄,被不法分子盜取。在智能合約中采用全同態加密技術,可保證區塊鏈中數據的隱私和數據在不可信環境下運算的正確性,但全同態加密技術距離實際應用還存在一定的距離。
智能合約本質上是一段運行在區塊鏈網絡中的代碼,它界定了各方使用合約的條件,在滿足合約條件下某些機器指令被執行。而代碼在設計和開發過程中,不可避免出現漏洞。開源代碼大約每1000 行就含有一個安全漏洞,表現最好的Linux kermel 2.6版本的安全漏洞率為每一千行代碼0.127個。安全智能合約的開發對程序員本身是一個挑戰。智能合約作為新生事物,熟悉智能合約的開發人員不多,受限于程序員的安全意識和代碼編寫能力,可能在開發時無法意識到自己造成了安全隱患,極有可能給智能合約帶來相當大程度的安全風險,智能合約的代碼可靠性難以保證。
此外,智能合約還是多方業務的交互規則,智能合約的安全不僅要考忠代碼編寫時防止整數溢出等漏洞,且需要先進行智能合約協議安全性分析,防止業務邏輯漏洞的出現。如何保證智能合約的安全是區塊鏈安全面臨的一大挑戰。
4.3 隱私安全
區塊鏈是一種分布式賬本,意味著數據在網絡上的所有參與方之間共享。一方面,這會對許多參與節點鏈的節點的可用性產生積極影響,使其更加健壯和有彈性。另一方面,可能會對機密性產生負面影響。
隱私問題主要包括,保護匿名性和區塊鏈中內容的機密性。區塊鏈最初的設計具備一定的匿 名性,但隨著技術的發展,也出現了一些追蹤技術。交易追蹤技術通過追蹤交易在網絡中的傳播路徑,最終發現交易的始發節點,一旦將交易與始發節點的IP地址關聯,就可以將交易中的匿名賬號和用戶身份關聯,從而破壞了區塊鏈的匿名性。該技術有助于識別惡意交易者的身份信息,分析數字貨幣的流向增強監管,但如果被攻擊者使用則會破壞使用區塊鏈的公司和組織的業務隱秘性,對公司和組織的利益造成損害。
區塊鏈的隱私安全一方面要 加密交易的內容,不能讓人看到另一方面,需要驗證交易的正確性,不能都加密。這兩者本身存在矛盾,也是。隱私保護技術上的挑戰。一般采用同態加密、零知識證明等前沿技術進行隱私保護,這些技術需要進行一系列的運算,勢必會影響系統性能。隱私保護技術在保證用戶隱私情況下同時兼顧系統性能,是隱私保護技術面臨的一大挑戰。
評論
查看更多