淺析--如何使區(qū)塊鏈具有安全性
1.區(qū)塊鏈定義
區(qū)塊鏈?zhǔn)潜忍貛诺囊粋€(gè)意外發(fā)現(xiàn)和生產(chǎn)物,源于化名為“中本聰”的學(xué)者在2008年發(fā)表的論文《比特幣:一種點(diǎn)對(duì)點(diǎn)電子現(xiàn)金系統(tǒng)》,被認(rèn)為是繼大型機(jī)、個(gè)人電腦、互聯(lián)網(wǎng)之后計(jì)算模式的顛覆式創(chuàng)新。但該文重點(diǎn)在于討論比特幣系統(tǒng),并沒有明確提出區(qū)塊鏈的定義和概念,只描述其為用于記錄比特幣交易的賬目歷史。
關(guān)于區(qū)塊鏈,Wikipedia定義:最早的區(qū)塊鏈技術(shù)雛形出現(xiàn)在比特幣項(xiàng)目中,作為比特幣背后的分布式記賬平臺(tái),在無集中式管理的情況下,比特幣網(wǎng)絡(luò)穩(wěn)定運(yùn)行了近八年時(shí)間,支持了海量的交易記錄,并未出現(xiàn)嚴(yán)重的漏洞。
結(jié)合區(qū)塊鏈的起源,在比特幣系統(tǒng)中,“幣”準(zhǔn)確描述了其金融屬性,但最重要的不是“幣”的概念,而是一個(gè)沒有中心存儲(chǔ)機(jī)構(gòu)的“賬本”的概念,“幣”只是在這個(gè)賬本上使用的記賬單位。通俗講,比特幣本質(zhì)就是一個(gè)基于互聯(lián)網(wǎng)的去中心賬本,而區(qū)塊鏈就是這個(gè)賬本的名字。從記賬角度,區(qū)塊鏈可以被認(rèn)為是第一個(gè)試圖自帶信任化和防止篡改的數(shù)字記賬技術(shù)。
2016年10月工信部發(fā)布的區(qū)塊鏈白皮書,定義:狹義來講,區(qū)塊鏈?zhǔn)且环N按照時(shí)間順序?qū)?shù)據(jù)區(qū)塊以順序相連的方式組合成的一種鏈?zhǔn)綌?shù)據(jù)結(jié)構(gòu),并以密碼學(xué)方式保證的不可篡改和不可偽造的分布式賬本。廣義來講,區(qū)塊鏈技術(shù)是利用塊鏈?zhǔn)綌?shù)據(jù)結(jié)構(gòu)來驗(yàn)證與存儲(chǔ)數(shù)據(jù)、利用分布式節(jié)點(diǎn)共識(shí)算法來生成和更新數(shù)據(jù)、利用密碼學(xué)的方式保證數(shù)據(jù)傳輸和訪問的安全、利用自動(dòng)化腳本代碼組成的智能合約來編程和操作數(shù)據(jù)的一種全新的分布式基礎(chǔ)架構(gòu)和計(jì)算范式。
2.區(qū)塊鏈工作流程
區(qū)塊鏈對(duì)應(yīng)的英文Block Chain,即“數(shù)據(jù)塊組成的鏈條”,這要求參與到鏈上的所有節(jié)點(diǎn),共同維護(hù)區(qū)塊鏈數(shù)據(jù),每個(gè)參與維護(hù)節(jié)點(diǎn)都能復(fù)制獲得一份完整記錄的備份。為進(jìn)一步了解區(qū)塊鏈技術(shù),先了解其工作流程,如圖所示:
圖1 區(qū)塊鏈工作流程
大致如下:
1) 發(fā)送節(jié)點(diǎn)將新的數(shù)據(jù)記錄向全網(wǎng)進(jìn)行廣播;
2) 接收節(jié)點(diǎn)對(duì)收到的數(shù)據(jù)記錄信息進(jìn)行校驗(yàn),包括記錄是否合法,校驗(yàn)通過后,記錄被納入到一個(gè)區(qū)塊中;
3) 全網(wǎng)所有接收節(jié)點(diǎn)對(duì)區(qū)塊執(zhí)行共識(shí)算法(工作量證明、權(quán)益證明等);
4) 區(qū)塊通過共識(shí)算法過程后被正式納入?yún)^(qū)塊鏈中存儲(chǔ),全網(wǎng)節(jié)點(diǎn)均表示接受該區(qū)塊,而表示接受的方法,就是將區(qū)塊的隨機(jī)散列值視為最新的區(qū)塊散列值,新區(qū)塊的制造將以該區(qū)塊鏈為基礎(chǔ)進(jìn)行延長。
其中,節(jié)點(diǎn)始終都將最長的區(qū)塊鏈視為正確的鏈,并持續(xù)以此為基礎(chǔ)驗(yàn)證和延長它。如果有兩個(gè)節(jié)點(diǎn)同時(shí)廣播不同版本的新區(qū)塊,那么其他節(jié)點(diǎn)在接收到該區(qū)塊的時(shí)間上將存在先后差異,他們將在先收到的區(qū)塊基礎(chǔ)上進(jìn)行工作,但也保留另一個(gè)鏈條,以防后者變成更長的鏈。接下來需要共識(shí)算法的進(jìn)一步約束,當(dāng)其中一條鏈被證實(shí)為較長的,則另一條分支上的節(jié)點(diǎn)開始在較長鏈條上工作,以防止鏈分叉。如下圖所示:
圖2 區(qū)塊鏈分叉情況
根據(jù)工作流程,區(qū)塊鏈的特點(diǎn)應(yīng)該包括以下幾點(diǎn):
a) 維護(hù)一條不斷增長的鏈,只可能添加記錄,而發(fā)生過的記錄都不可篡改;
b) 去中心化,也是多中心化,無需集中控制而能達(dá)成共識(shí),實(shí)現(xiàn)上盡量分布式;
通過密碼學(xué)的機(jī)制來確保交易無法抵賴和破壞,并盡量保護(hù)記錄的隱私性。
3.區(qū)塊鏈安全性
關(guān)鍵技術(shù)
根據(jù)定義和工作流程,本質(zhì)上,區(qū)塊鏈技術(shù)是在信息不對(duì)稱的情況下,無需相互擔(dān)保信任或第三方中介參與,采用基于共識(shí)機(jī)制和加密算法的節(jié)點(diǎn)間普遍通過即為認(rèn)可的信任機(jī)制。共識(shí)機(jī)制[注]和加密算法也是區(qū)塊鏈保證數(shù)據(jù)安全、不可篡改以及透明性的關(guān)鍵技術(shù)。其中,共識(shí)機(jī)制主要解決由誰來構(gòu)造區(qū)塊,以及如何維護(hù)區(qū)塊鏈統(tǒng)一的問題;加密算法用來解決電子貨幣的所有權(quán)問題。區(qū)塊鏈技術(shù)在不同領(lǐng)域中的探索,主要在于選擇合適的共識(shí)機(jī)制和加密算法。(注:區(qū)塊鏈系統(tǒng)中實(shí)現(xiàn)不同節(jié)點(diǎn)之間建立信任、獲取權(quán)益的數(shù)學(xué)算法。)
共識(shí)機(jī)制保證區(qū)塊鏈中節(jié)點(diǎn)數(shù)據(jù)一致,主流機(jī)制有工作量證明PoW、權(quán)益證明PoS、股份授權(quán)證明Dpos和拜占庭容錯(cuò)PBFT等。比特幣的共識(shí)機(jī)制采用工作量證明,礦工通過編碼生產(chǎn)器計(jì)算有效賬號(hào)編碼時(shí),需要通過大量計(jì)算,平均10分鐘生成一個(gè)有效賬單編號(hào)并完成一筆交易清結(jié)算。這種機(jī)制不適用要求高效率的行業(yè),無法保證用戶體驗(yàn)。
信息的加密是區(qū)塊鏈的關(guān)鍵環(huán)節(jié),主要是哈希函數(shù)和非對(duì)稱加密兩部分的算法。其中,非對(duì)稱加密部分使用私鑰證明節(jié)點(diǎn)所有權(quán),通過數(shù)字簽名實(shí)現(xiàn);使用哈希散列(hash)算法,把任意長度的輸入變換成固定長度的由字母和數(shù)字組成的輸出,具有不可逆性,實(shí)現(xiàn)不可篡改。比特幣區(qū)塊鏈其實(shí)就是哈希鏈的一個(gè)變種。
優(yōu)勢(shì)
在信息安全的角度分析,區(qū)塊鏈的優(yōu)勢(shì)主要有:
1) 利用高冗余的數(shù)據(jù)庫保障信息的完整性;
2) 利用密碼學(xué)的相關(guān)原理進(jìn)行數(shù)據(jù)驗(yàn)證,保證不可篡改;
3) 運(yùn)用多私鑰進(jìn)行訪問權(quán)限控制。
區(qū)塊鏈以其可信任性、安全性和不可篡改性,讓更多數(shù)據(jù)被解放出來,推進(jìn)數(shù)據(jù)的海量增長。
局限及不足
現(xiàn)在的區(qū)塊鏈盡管不斷得到研究、應(yīng)用,依舊存在著一定的安全局限,導(dǎo)致在技術(shù)層和業(yè)務(wù)層都面臨諸多挑戰(zhàn)。
1) 共識(shí)機(jī)制挑戰(zhàn)
對(duì)于區(qū)塊鏈中的共識(shí)算法,是否能實(shí)現(xiàn)并保障真正的安全,需要更嚴(yán)格的證明和時(shí)間的考驗(yàn)。采用的非對(duì)稱加密算法可能會(huì)隨著數(shù)據(jù)、密碼學(xué)和計(jì)算技術(shù)的發(fā)展而變的越來越脆弱,未來可能具有一定的破解性。此外,區(qū)塊鏈上包含賬戶安全的私鑰是否容易竊取仍待進(jìn)一步探索。
2) 51%攻擊
在比特幣中,若控制節(jié)點(diǎn)中絕大多數(shù)計(jì)算資源,就能重改公有賬本,這被稱為51%攻擊。真實(shí)的區(qū)塊鏈網(wǎng)絡(luò)是自由開放的,所以,理論上,區(qū)塊鏈上無法阻止擁有足夠多計(jì)算資源的節(jié)點(diǎn)做任何操作。在現(xiàn)實(shí)情況下,發(fā)起51%攻擊是具有一定可行性的。當(dāng)然,擁有足夠的算力并不會(huì)迅速破壞整個(gè)體系——至少不是短時(shí)間內(nèi),但可能會(huì)導(dǎo)致系統(tǒng)混亂。
3) N@S攻擊
針對(duì)PoW共識(shí)算法容易遭受51%攻擊的問題,一些研究人員對(duì)PoW共識(shí)算法進(jìn)行了改進(jìn),但在解決舊有問題的同時(shí),也引入了區(qū)塊分叉時(shí)的N@S (Nothing at stake)攻擊問題。比如,在某些情況下一個(gè)區(qū)塊可以暫時(shí)擁有兩個(gè)子區(qū)塊。這種分叉狀態(tài)出現(xiàn)時(shí),一般是兩個(gè)礦工都在短時(shí)間內(nèi)發(fā)現(xiàn)了工作量的解答,然后將所添加的傳播到臨近網(wǎng)絡(luò)中去,其他節(jié)點(diǎn)便慢慢形成兩種版本(子區(qū)塊)的區(qū)塊鏈。區(qū)塊鏈中規(guī)定,這種情況下的判定條件是選擇工作總量最大的那條子區(qū)塊。出于自身利益最大的考慮,節(jié)點(diǎn)上可以同時(shí)在兩個(gè)分支上繼續(xù)工作,以保證利益的獲取。假設(shè)99%的節(jié)點(diǎn)用戶都如此理性地考慮收益的話,即便攻擊者只掌握1%的權(quán)益依舊可以決定區(qū)塊鏈的分支走向。他可以發(fā)出交易請(qǐng)求,獲得資產(chǎn) ,然后再從另一條分支上獲取添加貨幣到自己的錢包中。
此外,區(qū)塊鏈也存在一些難以克服的不足:
比如效率問題。區(qū)塊鏈沒有單一節(jié)點(diǎn)可信任,通過計(jì)算來換取信任。簡單的一個(gè)承認(rèn)交易操作,需要大量的計(jì)算參與進(jìn)來。以比特幣系統(tǒng)為例,定義每個(gè)區(qū)塊的一個(gè)賬本大小是1M,每10分鐘產(chǎn)生一個(gè)這樣的區(qū)塊,每個(gè)最基本的比特幣交易大小是250B,每秒處理速度為1024000(=1024KB=1M)/250/600(=10分鐘)=6.6,也就是說,理論上每秒可以處理6.6個(gè)比特幣的交易。雖然比特幣擴(kuò)容有了技術(shù)解決方案,但實(shí)踐仍需要時(shí)間。
比如匿名引發(fā)的風(fēng)險(xiǎn)。區(qū)塊鏈開發(fā)者認(rèn)為匿名性在區(qū)塊鏈交易中是重要的,并非“抗審查”。如果礦工決定不處理某筆交易在地址間的收發(fā),那就證明交易是受礦工審查的。如果交易是匿名的,礦工就不能決定優(yōu)先處理哪些交易,也就不能進(jìn)行審查。但匿名性會(huì)造成非法交易的猖獗,執(zhí)法部門很難溯源。
4.結(jié)束語
盡管存在一定的安全局限和難以克服的不足,但區(qū)塊鏈技術(shù)提供了一個(gè)規(guī)?;墓沧R(shí)機(jī)制,可以作為一種更高效解決信任問題的手段,建立去中心化的可信網(wǎng)絡(luò)。目前,區(qū)塊鏈的應(yīng)用已從單一的數(shù)字貨幣(如比特幣)應(yīng)用,延伸到經(jīng)濟(jì)社會(huì)的各個(gè)領(lǐng)域,除金融服務(wù)行業(yè)的應(yīng)用相對(duì)成熟外,其他行業(yè)的應(yīng)用還處于探索起步階段,期待區(qū)塊鏈技術(shù)的更新和完善。
【本文為51CTO專欄作者“中國保密協(xié)會(huì)科學(xué)技術(shù)分會(huì)”原創(chuàng)稿件,轉(zhuǎn)載請(qǐng)聯(lián)系原作者】


































