圖1 區(qū)塊鏈2.0 技術架構

金融業(yè)區(qū)塊鏈技術應用面臨的安全威脅和應對策略

1. 數(shù)據(jù)安全

區(qū)塊鏈中的數(shù)據(jù):區(qū)塊鏈是一個公開的鏈式賬本,其中存儲的數(shù)據(jù)向網(wǎng)絡中所有用戶公開。而在金融業(yè)務場景中,業(yè)務規(guī)則和監(jiān)管機構要求保護相關數(shù)據(jù)的隱私性、完整性等。在存儲、傳輸相應數(shù)據(jù)時,應該使用哈希函數(shù)、同態(tài)加密、數(shù)字簽名等技術保護數(shù)據(jù)。

用戶私鑰:在區(qū)塊鏈中,用戶的資金安全完全依賴于私鑰的安全,無論是私鑰泄漏還是丟失,都將給用戶帶來財產(chǎn)損失。為了保護用戶的賬戶與資金安全,應該對私鑰文件進行加密存儲。同時,應該使用“秘密共享協(xié)議”等方法安全地備份私鑰文件。

密碼算法安全:保護區(qū)塊鏈數(shù)據(jù)安全的前提是密碼算法的安全。在設計應用時,應該選擇安全性更高的密碼算法;應用投入使用后還要及時替換掉不再安全的密碼算法。

2. 網(wǎng)絡層訪問控制

公有鏈允許節(jié)點自由進出網(wǎng)絡,且區(qū)塊鏈的網(wǎng)絡層沒有登記用戶身份。金融行業(yè)的風險和安全性相對更高,未登記身份的節(jié)點自由進出網(wǎng)絡為系統(tǒng)安全帶來很多不可控性。區(qū)塊鏈技術在金融行業(yè)應用時,應結合業(yè)務需求,分析是否有必要使用公有鏈,并登記網(wǎng)絡中節(jié)點的身份。對于聯(lián)盟鏈和私有鏈,建議采用專線來接入?yún)^(qū)塊鏈網(wǎng)絡。此外,還應采用VPN 專網(wǎng)、防火墻、物理隔離等技術對節(jié)點,特別是礦工節(jié)點的物理網(wǎng)絡和主機進行保護。

3. 共識層安全

共識協(xié)議應具備的基本屬性:區(qū)塊鏈使用分布式共識協(xié)議(見圖1)來防止單點故障等問題,有效防范了雙重花費、礦工惡意封鎖某個用戶的交易等攻擊。但這都建立在區(qū)塊鏈網(wǎng)絡節(jié)點的權利分布均勻、不存在51% 攻擊的前提下。很大程度上取決于區(qū)塊鏈的一致性不被破壞。因此,設計合適的共識算法對于區(qū)塊鏈應用的安全性至關重要。

一般來說,要求共識算法具有以下幾個基本屬性。公平性:無論是算力高的大礦工還是算力低的小礦工都有幾率挖到礦,且?guī)茁逝c之前的挖礦結果無關。快速驗證:確保挖礦難題驗證簡單、快速、開銷小。保證遍歷所有可能的nonce 值是解決難題最快方案。難度可調整:挖礦的難度可以調整,以保證挖礦速度平穩(wěn)。

此外,還應該使用資產(chǎn)抵押、法律和監(jiān)管的形式對礦工節(jié)點進行聯(lián)合管控。對于不誠實、有不當行為的礦工節(jié)點進行懲罰。

軟分叉和硬分叉:分叉是指對區(qū)塊鏈的規(guī)則做一些改變。由于軟件更新,不同節(jié)點上運行的軟件版本不同,導致其執(zhí)行規(guī)則不同,從而導致分叉(軟分叉和硬分叉)。軟分叉是讓原來可以被接受的交易或區(qū)塊不可以被接受,例如:比特幣中使用的P2PKH 腳本。與之相反,硬分叉是使原來不可以被接受的規(guī)則可以被接受,例如:增加區(qū)塊大小。這兩種分叉作用在區(qū)塊鏈中時,軟分叉可以很好地被老版本軟件的節(jié)點兼容,并促進其更新軟件,但硬分叉會受到排斥。圖2 是有60% 算力占比的節(jié)點更新軟件時,硬分叉和軟分叉對新規(guī)則和舊規(guī)則支持情況。在更新區(qū)塊鏈應用時,應該盡可能使用軟分叉完成,避免硬分叉。

22圖2 軟分叉和硬分叉示意圖

4.激勵層安全

目前已提出的大多數(shù)數(shù)字貨幣系統(tǒng)都是去中心化的,它允許節(jié)點自行記錄數(shù)據(jù)、發(fā)行貨幣。區(qū)塊鏈中的節(jié)點都是匿名的,用戶在使用系統(tǒng)時,并不需要注冊自己的真實身份。這樣的機制為設計法定數(shù)字貨幣帶來了一定的威脅。

壞賬。如果一個法定數(shù)字貨幣系統(tǒng)是匿名的,且支持借貸業(yè)務,則該系統(tǒng)無法有效地對壞賬進行管控。由于系統(tǒng)并沒有登記用戶的真實身份,用戶完全可以在花完借貸的款項后拋棄當前賬戶,重新注冊一個新賬戶。如此一來,借款人或銀行將無法收回應收款項。

洗錢。由于系統(tǒng)的參與節(jié)點都是匿名的,系統(tǒng)不知道資金流向賬戶的真實身份。系統(tǒng)的去中心化導致在洗錢事件發(fā)生后,系統(tǒng)不能像傳統(tǒng)銀行一樣凍結賬戶。

貨幣發(fā)行不可控。出于國家安全考慮,法定貨幣的發(fā)行應該由國家發(fā)行。而區(qū)塊鏈的去中心化、礦工節(jié)點的自由進出導致貨幣發(fā)行不可控。因此,在設計法定數(shù)字貨幣時,需要重新設計貨幣的發(fā)行機制,使貨幣發(fā)行中心化,結合匿名認證等技術,使系統(tǒng)中的資金流向可控。

5.智能合約層安全

區(qū)塊鏈2.0 版本中引入智能合約層,提出區(qū)塊鏈即服務(BaaS)的概念。智能合約層提供了自動化腳本代碼組成的智能合約來開發(fā)應用、操作數(shù)據(jù)。

智能合約本質上而言仍然是編程語言,如果它是圖靈完備的,支持循環(huán)指令,攻擊者就可能構造帶有死循環(huán)代碼的交易對網(wǎng)絡中的礦工發(fā)起DoS 攻擊。

在區(qū)塊鏈中設計驗證腳本或智能合約時,應預防死循環(huán)導致的DoS 攻擊。可以在設計腳本語言時禁止使用循環(huán)指令,也可以要求程序的創(chuàng)建人為程序執(zhí)行按照執(zhí)行步數(shù)支付費用,并設置費用限額。超過限額后,停止執(zhí)行且不歸還費用。其次,做好充分的容錯機制,通過系統(tǒng)化手段,結合運行環(huán)境隔離等機制,確保代碼在有限時間內按預期執(zhí)行。

6.其他

除了前面提到的防范措施外,還要有相應的風險控制手段,對系統(tǒng)的數(shù)據(jù)訪問、交易頻度以及記錄到區(qū)塊中的交易進行監(jiān)控和檢測,對可疑操作和不當行為進行告警、合成和記錄,并評估損失,進行補救,防止再次出現(xiàn)。

此外,為了提高開發(fā)效率和安全性,還可以將一些重要模塊(例如:私鑰的存儲與保護、共識協(xié)議等)剝離出來,開發(fā)統(tǒng)一的安全組件、接口,以解決開發(fā)人員安全意識不足的問題。

小結

區(qū)塊鏈技術為金融行業(yè)的業(yè)務和機構運作方式帶來新的轉變機遇的同時,也帶來了新的安全挑戰(zhàn)。民生銀行將以支持業(yè)務和技術創(chuàng)新為目標,繼續(xù)深入研究區(qū)塊鏈的應用安全,在應用區(qū)塊鏈為業(yè)務帶來轉變的基礎上,保證業(yè)務系統(tǒng)的安全性。

(本文作者系中國民生銀行信息科技部總經(jīng)理助理呂曉強;中國民生銀行信息科技部張磊、黃吉鯤)

 

分享到

zhoub

相關推薦