巫岱玥 余祥 王 超 李強(qiáng)
通常情況下,數(shù)據(jù)的安全與可信依賴于系統(tǒng)中心或第三方等可信實(shí)體,一旦可信實(shí)體不再可信,如管理員被收買,數(shù)據(jù)庫遭入侵和篡改等,數(shù)據(jù)的安全性和可信性將不能被保證.區(qū)塊鏈?zhǔn)且环N去中心化,無需信任的新型數(shù)據(jù)架構(gòu),它由網(wǎng)絡(luò)中的所有節(jié)點(diǎn)共同擁有和監(jiān)督,不接受單一方面的控制.區(qū)塊鏈具有去中心化、時(shí)序數(shù)據(jù)、集體維護(hù)、可編程和安全可信等特點(diǎn)[1?8].信息系統(tǒng)中若采用區(qū)塊鏈技術(shù),其存儲的節(jié)點(diǎn)數(shù)據(jù)庫不會因誤操作刪除而導(dǎo)致數(shù)據(jù)的丟失,也不會因?yàn)榭刂浦行氖Ф鴮?dǎo)致整個(gè)網(wǎng)絡(luò)或系統(tǒng)癱瘓.依賴于區(qū)塊鏈技術(shù),可在短時(shí)間內(nèi)不依賴于任何可信實(shí)體,完成數(shù)據(jù)庫的統(tǒng)一維護(hù)和更新,數(shù)據(jù)不會因?yàn)槿魏螁我粚?shí)體的修改而改變,進(jìn)而保證數(shù)據(jù)的安全性和可信性.
本文提出一種應(yīng)用于信息系統(tǒng)的去中心化的數(shù)據(jù)保護(hù)技術(shù),該技術(shù)基于區(qū)塊鏈,在利用傳統(tǒng)區(qū)塊鏈技術(shù)保證信息系統(tǒng)中數(shù)據(jù)的不可篡改和不可抵賴的同時(shí),提出利用多鏈結(jié)構(gòu)將節(jié)點(diǎn)進(jìn)行權(quán)限劃分,使得只有擁有權(quán)限的節(jié)點(diǎn)才能訪問到相應(yīng)的數(shù)據(jù).
每個(gè)區(qū)塊鏈網(wǎng)絡(luò)只有一個(gè)系統(tǒng)鏈,如果所有數(shù)據(jù)都是公開的,網(wǎng)絡(luò)將無需多條虛擬鏈,所有數(shù)據(jù)都對成員可見.由于信息系統(tǒng)需要保證強(qiáng)數(shù)據(jù)隱私性,因此需要多條鏈進(jìn)行數(shù)據(jù)隔離,提供保密[9?10].針對信息系統(tǒng)的隱私保護(hù)需求[11?12],本文提出一種分層多鏈的區(qū)塊鏈結(jié)構(gòu),如圖1所示,一級信息系統(tǒng)參與一級信息系統(tǒng)鏈,二級信息系統(tǒng)參與二級信息系統(tǒng)鏈,三級信息系統(tǒng)參與三級信息系統(tǒng)鏈,信息單元不參與區(qū)塊鏈.
定義1.共識節(jié)點(diǎn):共識節(jié)點(diǎn)與所有節(jié)點(diǎn)相連,并為整個(gè)區(qū)塊鏈提供共識服務(wù),為區(qū)塊鏈上的節(jié)點(diǎn)提供訂閱的主題,每個(gè)主題是一個(gè)通道,共識節(jié)點(diǎn)不存儲數(shù)據(jù),只負(fù)責(zé)生成按時(shí)間序列區(qū)塊并通過通道向各節(jié)點(diǎn)發(fā)送已封裝的區(qū)塊.
定義2.通道:普通節(jié)點(diǎn)和排序節(jié)點(diǎn)連接到一起,從而形成的具有保密性的通訊鏈路.節(jié)點(diǎn)可以加入多個(gè)通道,并且可以訪問多個(gè)通道里的賬本.
定義3.賬本:稱不涉及所有節(jié)點(diǎn)的賬本為子賬本,記為Ti,涉及所有節(jié)點(diǎn)的賬本為全賬本,記為Ttotal,則全賬本:
定義4.鏈:一條鏈由一個(gè)通道,一個(gè)賬本和成員組成.綁定子賬本的通道與子賬本及通道上的節(jié)點(diǎn)組成虛擬鏈,因此一個(gè)區(qū)塊鏈網(wǎng)絡(luò)可以由共享一個(gè)共識服務(wù)的多個(gè)鏈組成.
定義5.節(jié)點(diǎn)權(quán)限:節(jié)點(diǎn)權(quán)限表示節(jié)點(diǎn)對鏈的操作權(quán)限.PermPeer表示節(jié)點(diǎn)權(quán)限描述,由賬本屬性描述和操作組成.ChainDes表示節(jié)點(diǎn)所處區(qū)塊鏈,Channel表示通道描述,Operation表示操作集.用BNF范式對PermPeer定義如下:PermPeer::=(ChainDes,Channel,Operation)
定義6.節(jié)點(diǎn)權(quán)限集PermPeerSet:節(jié)點(diǎn)權(quán)限集是節(jié)點(diǎn)權(quán)限的集合,指明了節(jié)點(diǎn)對參與區(qū)塊鏈能進(jìn)行操作的權(quán)限集合.根據(jù)BNF范式將PermPeerSet定義如下:
PermPeerSet::=PermPeer|PermPeerSet AndPermPeerSet其中,根據(jù)范式定義,“|”用于分割替換項(xiàng),即PermPeer和PermPeerSet AND PermPeerSet.
定義7.節(jié)點(diǎn)訪問策略:節(jié)點(diǎn)訪問由節(jié)點(diǎn)權(quán)限集決定,決定了一個(gè)節(jié)點(diǎn)在多鏈架構(gòu)的區(qū)塊鏈結(jié)構(gòu)下能夠擁有的權(quán)限.節(jié)點(diǎn)訪問策略PAP(Peer Access Protocol)的定義如下:
策略包括節(jié)點(diǎn)角色PeerRole和節(jié)點(diǎn)權(quán)限集PermPeerSet兩部分,節(jié)點(diǎn)角色指明了此策略中節(jié)點(diǎn)在整個(gè)區(qū)塊鏈結(jié)構(gòu)中所處的角色,節(jié)點(diǎn)權(quán)限集指明了節(jié)點(diǎn)能夠?qū)δ男┵~本進(jìn)行操作.
在信息系統(tǒng)區(qū)塊鏈架構(gòu)中,將所有節(jié)點(diǎn)分成4個(gè)角色,分別是信息單元節(jié)點(diǎn)、三級信息系統(tǒng)節(jié)點(diǎn)、二級信息系統(tǒng)節(jié)點(diǎn)和一級信息系統(tǒng)節(jié)點(diǎn),如表1所示.將整個(gè)區(qū)塊鏈架構(gòu)中所有賬本資源劃分為3個(gè)互不相交的子集,分別為H(U)、H(C)、H(Ts),H(U)代表三級信息系統(tǒng)鏈的賬本,H(C)代表二級信息系統(tǒng)鏈的賬本,H(Ts)代表一級信息系統(tǒng)鏈的賬本,而信息單元節(jié)點(diǎn)不在通道內(nèi),不擁有賬本,故其擁有賬本集合為φ.
表1 節(jié)點(diǎn)角色分類
指令發(fā)布與區(qū)塊生成過程如圖2所示,上級節(jié)點(diǎn)首先向下級節(jié)點(diǎn)發(fā)送指令,以指令數(shù)據(jù)包的形式發(fā)送給下級節(jié)點(diǎn),如二級信息系統(tǒng)向信息單元下達(dá)指令,下級節(jié)點(diǎn)在驗(yàn)證數(shù)據(jù)的有效性之后執(zhí)行指令,同時(shí)將指令數(shù)據(jù)包發(fā)送給共識節(jié)點(diǎn),共識節(jié)點(diǎn)將數(shù)據(jù)包封裝成區(qū)塊并通過通道分發(fā)給上級節(jié)點(diǎn),上級節(jié)點(diǎn)將新區(qū)塊加入本地賬本并更新區(qū)塊鏈.
由表1可知,權(quán)限越高的節(jié)點(diǎn)能夠參與更多的鏈,并擁有區(qū)塊鏈中更多的賬本,因此,高權(quán)限節(jié)點(diǎn)可以通過讀取區(qū)塊鏈數(shù)據(jù)對節(jié)點(diǎn)的行為進(jìn)行監(jiān)管.區(qū)塊發(fā)布過程如圖3所示,當(dāng)共識節(jié)點(diǎn)將區(qū)塊打包好以后,通過通道向各區(qū)塊鏈進(jìn)行分發(fā),通道1僅面向一級信息系統(tǒng),通道2面向二級信息系統(tǒng)和一級信息系統(tǒng),通道3面向一級信息系統(tǒng)、二級信息系統(tǒng)和三級信息系統(tǒng).可見當(dāng)一級信息下達(dá)指令信息后,共識服務(wù)將生成的區(qū)塊通過通道1發(fā)布給一級信息系統(tǒng);當(dāng)三級信息系統(tǒng)下達(dá)指令信息后,共識服務(wù)將生成的區(qū)塊通過通道3發(fā)布給區(qū)塊鏈中所有的信息系統(tǒng).通過對信息系統(tǒng)的賬本進(jìn)行分級,由此達(dá)到了對分層信息系統(tǒng)數(shù)據(jù)的保護(hù).
信息系統(tǒng)區(qū)塊鏈需要既滿足不抵賴性又必須能被監(jiān)管.傳統(tǒng)的公有鏈區(qū)塊鏈架構(gòu)使用共識機(jī)制來保證區(qū)塊鏈數(shù)據(jù)不可抵賴性,共識機(jī)制要求區(qū)塊鏈中必須超過半數(shù)的節(jié)點(diǎn)認(rèn)同區(qū)塊數(shù)據(jù)才被認(rèn)為是有效數(shù)據(jù).因此,在公有鏈架構(gòu)中,區(qū)塊數(shù)據(jù)必須完全公開,能夠被任意節(jié)點(diǎn)驗(yàn)證數(shù)據(jù)的正確性,才能達(dá)到不可篡改性,然而正因如此,無法保證數(shù)據(jù)的隱私性.不是所有區(qū)塊鏈中的區(qū)塊數(shù)據(jù)都能被公開,尤其是軍事領(lǐng)域和金融領(lǐng)域的區(qū)塊鏈,更加注重?cái)?shù)據(jù)的保密性.隱私保護(hù)技術(shù)是保障區(qū)塊數(shù)據(jù)的隱私的同時(shí)還能夠?qū)崿F(xiàn)監(jiān)管,保障區(qū)塊隱私即區(qū)塊數(shù)據(jù)僅僅向有限的全體可見,而不對非授權(quán)的全體公開.
與公有鏈中節(jié)點(diǎn)間互不信任不同,在信息系統(tǒng)區(qū)塊鏈中,所有的信息系統(tǒng)都是確定的,故每個(gè)參與節(jié)點(diǎn)的身份都是事先確定的,因此,在加入?yún)^(qū)塊鏈之際所有節(jié)點(diǎn)已經(jīng)建立了認(rèn)證機(jī)制,彼此之間建立了信任.
每個(gè)授權(quán)節(jié)點(diǎn)都持有證書,證書采用PKI體系的“雙密鑰對”,即簽名密鑰對和加密密鑰對[13]模式來實(shí)現(xiàn).每個(gè)授權(quán)節(jié)點(diǎn)有兩對密鑰對,證書持有者有一對簽名用途的密鑰對,分別為簽名用途公鑰與簽名用途私鑰;持有一對加密用途的密鑰對,分別是加密用途公鑰和加密用途私鑰,如圖4所示.當(dāng)認(rèn)證中心為節(jié)點(diǎn)簽發(fā)證書時(shí),對加密用途的密鑰對進(jìn)行備案,并交由密鑰管理中心存放,當(dāng)需要對某條記錄進(jìn)行審計(jì)時(shí),從密鑰管理中心提取出用戶的加密私鑰,可以解出其中數(shù)據(jù).
利用雙密鑰對進(jìn)行隱私驗(yàn)證的算法描述如下:
Algorithm()
//利用雙密鑰對對明文信息m進(jìn)行加密傳輸并驗(yàn)證.
//輸入:需要傳輸?shù)拿魑男畔.
//輸出:接收方對接收到的數(shù)據(jù)進(jìn)行校驗(yàn),若校驗(yàn)成功返回True,否則返回False.
如算法所示,當(dāng)節(jié)點(diǎn)A向節(jié)點(diǎn)B發(fā)送數(shù)據(jù)m時(shí),首先用目標(biāo)節(jié)點(diǎn)B的加密公鑰對指令數(shù)據(jù)進(jìn)行加密,生成,對進(jìn)行哈希運(yùn)算得到摘要方便后續(xù)的驗(yàn)證,再利用節(jié)點(diǎn)A的簽名私鑰對加密數(shù)據(jù)進(jìn)行簽名,得到簽名數(shù)據(jù),然后將發(fā)送給節(jié)點(diǎn)B.節(jié)點(diǎn)B收到數(shù)據(jù)后,首先利用發(fā)送節(jié)點(diǎn)A的簽名公鑰對接收數(shù)據(jù)進(jìn)行解密,將得到的數(shù)據(jù)進(jìn)行摘要運(yùn)算,若新計(jì)算出的摘要與預(yù)定摘要一致,則證明數(shù)據(jù)包確實(shí)來自于節(jié)點(diǎn)A且傳輸過程中數(shù)據(jù)包未被篡改.隨后節(jié)點(diǎn)B再使用加密私鑰進(jìn)行解密,最終得到明文數(shù)據(jù)m.
與傳統(tǒng)區(qū)塊鏈賬本記錄交易信息不同,信息系統(tǒng)區(qū)塊鏈中記錄操作日志、指令以及方案,因此,區(qū)塊結(jié)構(gòu)也與傳統(tǒng)的區(qū)塊結(jié)構(gòu)不同.信息系統(tǒng)區(qū)塊構(gòu)成圖如圖5所示.
信息系統(tǒng)區(qū)塊由3部分構(gòu)成,分別是區(qū)塊頭、區(qū)塊體和當(dāng)前區(qū)塊hash構(gòu)成.區(qū)塊頭里包含了5個(gè)關(guān)鍵信息,包括區(qū)塊體類型、權(quán)限、前一區(qū)塊hash、時(shí)間戳和區(qū)塊體hash.區(qū)塊體類型指明區(qū)塊體內(nèi)存放的數(shù)據(jù)種類,區(qū)塊體類型分為操作日志類型、指令類型和方案3種數(shù)據(jù)類型,與區(qū)塊體內(nèi)存放的數(shù)據(jù)對應(yīng).
來源指明區(qū)塊數(shù)據(jù)的產(chǎn)生對象,來源分為3類,即三級信息系統(tǒng)、二級信息系統(tǒng)、一級信息系統(tǒng).由于權(quán)限較高的節(jié)點(diǎn)擁有更多的賬本,當(dāng)共識節(jié)點(diǎn)通過通道將區(qū)塊發(fā)布給節(jié)點(diǎn)時(shí)需要指明發(fā)布區(qū)塊鏈接到哪一個(gè)區(qū)塊鏈,因此,指明了數(shù)據(jù)的產(chǎn)生對象也就告訴了節(jié)點(diǎn)區(qū)塊的所屬區(qū)塊鏈.時(shí)間戳指明了區(qū)塊的生成時(shí)間,共識節(jié)點(diǎn)在生成區(qū)塊時(shí)會為當(dāng)前區(qū)塊頭加蓋時(shí)間戳,這使得區(qū)塊鏈上各區(qū)塊以時(shí)間順序排列,時(shí)間戳作為區(qū)塊數(shù)據(jù)的存在性證明,有助于形成不可篡改和不可偽造的區(qū)塊鏈賬本.區(qū)塊體Hash是對區(qū)塊體內(nèi)容進(jìn)行摘要后的哈希函數(shù)值,哈希函數(shù)具有諸多優(yōu)良特點(diǎn),因而特別適合用于存儲區(qū)塊鏈數(shù)據(jù).例如,通過哈希具有單向性,輸出幾乎不能反推輸入值;具有定時(shí)性,不同長度輸入的哈希過程消耗大約相同的時(shí)間;具有定長性,產(chǎn)生固定長度的輸出;具有雪崩效應(yīng),即使輸入僅相差一個(gè)字節(jié)也會產(chǎn)生顯著不同的輸出值[14].
當(dāng)前區(qū)塊Hash是對當(dāng)前區(qū)塊信息進(jìn)行hash運(yùn)算,得到當(dāng)前區(qū)塊的摘要,作為此區(qū)塊的唯一性標(biāo)識,便于索引與檢驗(yàn).當(dāng)前區(qū)塊Hash的求解可表示為:
其中CurHash是當(dāng)前區(qū)塊hash,由Type、Source、PreHash、Ts和 BodyHash 拼接形成.其中Type是區(qū)塊體種類,Source是來源,PreHash是前一區(qū)塊hash,TimeStamp是時(shí)間戳,BodyHash是區(qū)塊體hash.
當(dāng)節(jié)點(diǎn)收到來自共識節(jié)點(diǎn)發(fā)來的區(qū)塊后,節(jié)點(diǎn)可以對區(qū)塊進(jìn)行正確性檢查,即使區(qū)塊體內(nèi)容是加密的,也可以通過對區(qū)塊體進(jìn)行散列運(yùn)算來驗(yàn)證區(qū)塊體是否被篡改,若計(jì)算出的區(qū)塊體摘要與區(qū)塊頭里給定的摘要不相符,則認(rèn)為該區(qū)塊是無效區(qū)塊.若摘要相等,則根據(jù)式(1)產(chǎn)生當(dāng)前區(qū)塊的散列值并生成新區(qū)塊.
區(qū)塊一旦產(chǎn)生將不可篡改,當(dāng)區(qū)塊鏈網(wǎng)絡(luò)中某個(gè)節(jié)點(diǎn)試圖修改區(qū)塊鏈中的某區(qū)塊時(shí),節(jié)點(diǎn)為了與前驅(qū)區(qū)塊保持連接,會將前一區(qū)塊Hash作為Pre-BlockHash,然后篡改區(qū)塊中的其余數(shù)據(jù),最終生成篡改后的區(qū)塊.重新計(jì)算篡改數(shù)據(jù)將造成區(qū)塊hash改變,篡改后的區(qū)塊雖然前驅(qū)與前一區(qū)塊相連,但是由于散列函數(shù)的雪崩效應(yīng),篡改后的區(qū)塊將無法與后繼區(qū)塊保持連接,如圖6所示,中間區(qū)塊為篡改后的區(qū)塊.同時(shí),為了使整個(gè)區(qū)塊鏈網(wǎng)絡(luò)的篡改都生效,需要將篡改后的區(qū)塊數(shù)據(jù)傳播到足夠影響共識的節(jié)點(diǎn),而其余節(jié)點(diǎn)都將驗(yàn)證到篡改區(qū)塊是無效的,因此,篡改后的區(qū)塊將難以生效,從而抵抗偽造.
利用密碼學(xué)的非對稱加密技術(shù)實(shí)現(xiàn)區(qū)塊鏈的抗抵賴性.非對稱加密是為滿足安全性需求和所有權(quán)驗(yàn)證需求而集成到區(qū)塊鏈中的加密技術(shù),常見算法包括RSA、Elgamal、Rabin、D-H、ECC 等[15].非對稱加密通常在加密和解密過程中使用兩個(gè)非對稱的密碼,分別稱為公鑰和私鑰.非對稱密鑰對具有兩個(gè)特點(diǎn),首先是用其中一個(gè)密鑰(公鑰或私鑰)加密信息后,只有另一個(gè)對應(yīng)的密鑰才能解開;其次是公鑰可向其他人公開、私鑰則保密,其他人無法通過該公鑰推算出相應(yīng)的私鑰.
區(qū)塊鏈的抗抵賴性主要是運(yùn)用數(shù)字簽名技術(shù).發(fā)送者A采用自己的私鑰加密信息后發(fā)送給B,B使用A的公鑰對信息解密、從而可確保信息是由A發(fā)送的.在信息系統(tǒng)中,為了防止發(fā)布的指令被篡改從而導(dǎo)致接收方收到虛假指令,同時(shí)保證操作記錄的不可抵賴性,節(jié)點(diǎn)執(zhí)行的所有操作均需要用其自身密鑰進(jìn)行簽名,并以區(qū)塊形式記錄于鏈.區(qū)塊鏈保證了數(shù)據(jù)的不可篡改性,節(jié)點(diǎn)的操作日志使用自身私鑰進(jìn)行簽名且無法后期篡改,以實(shí)現(xiàn)信息系統(tǒng)區(qū)塊鏈數(shù)據(jù)的抗抵賴特性.
本文針對傳統(tǒng)信息系統(tǒng)存在的數(shù)據(jù)不安全性和數(shù)據(jù)不可信問題,結(jié)合區(qū)塊鏈技術(shù),提出了信息系統(tǒng)的分層多鏈結(jié)構(gòu),結(jié)合信息系統(tǒng)的特點(diǎn)和對信息安全的要求,研究了隱私數(shù)據(jù)驗(yàn)證技術(shù)、抗偽造技術(shù)、抗抵賴技術(shù)等數(shù)據(jù)保護(hù)關(guān)鍵技術(shù),解決了信息系統(tǒng)過度依賴第三方可信實(shí)體帶來的數(shù)據(jù)不安全和不可信的問題,實(shí)現(xiàn)了對信息系統(tǒng)的數(shù)據(jù)保護(hù),保證了數(shù)據(jù)的安全性和可信性.今后將對區(qū)塊結(jié)構(gòu)進(jìn)行改進(jìn),利用多重簽名技術(shù)對區(qū)塊進(jìn)行簽名,進(jìn)一步提高信息系統(tǒng)信息的安全性,提升信息系統(tǒng)信息安全防護(hù)水平.