圖1 區(qū)塊鏈2.0 技術(shù)架構(gòu)

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

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

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

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

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

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

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

3. 共識層安全

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

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

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

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

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

4.激勵層安全

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

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

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

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

5.智能合約層安全

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

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

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

6.其他

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

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

小結(jié)

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

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

 

分享到

zhoub

相關(guān)推薦