王 茜,朱俊偉,張曉東
上海市大數(shù)據(jù)中心 應(yīng)用開發(fā)部,上海 200072
政務(wù)材料,指行政和政務(wù)服務(wù)過程中產(chǎn)生或所需的各類證照、文書、卷宗、材料所對應(yīng)的文件,在現(xiàn)代電子政務(wù)中也主要特指各類電子化的政務(wù)材料[1]。其跨部門、跨行業(yè)互通共享,是海量政務(wù)數(shù)據(jù)的核心價值體現(xiàn)?,F(xiàn)有的政務(wù)材料共享應(yīng)用種類繁多、量級巨大。據(jù)統(tǒng)計,國內(nèi)一線城市僅重點(diǎn)收集的電子證照類材料就達(dá)近700 種、約1.7 億份,單日提請的使用申請超30 萬次。而這些僅占常用共享材料類型的25%左右,體量占比約10%~15%。但是,這些材料往往分散存儲在不同的區(qū)縣、部直屬單位乃至相關(guān)社會機(jī)構(gòu)的分布式數(shù)據(jù)庫中,存在大量通信不暢、調(diào)用困難等問題。海量增長的材料使用需求從存儲、算力、傳輸、治理、共享使用、安全控制等各方面,給現(xiàn)代政務(wù)帶來了資源、功能、性能的多重挑戰(zhàn)[2]。
因此,現(xiàn)有政務(wù)材料共享急需解決的核心需求包括:(1)在功能上,需要實(shí)現(xiàn)政府多部門及相關(guān)社會群體間電子材料最大程度的共享復(fù)用;(2)在性能上,需要打造各部門間的互信互通體系,實(shí)現(xiàn)高性能和高安全性的海量材料數(shù)據(jù)傳輸;(3)在資源配置上,需要盡可能在原有政務(wù)體系上進(jìn)行提升和優(yōu)化,但不過度改變以往多部門分布式存儲、分頭管理的政務(wù)模式。這些需求,通過以往電子政務(wù)相關(guān)技術(shù)和方法難以全面解決。
區(qū)塊鏈技術(shù)是一項(xiàng)具有顛覆多種傳統(tǒng)行業(yè)潛力的新興技術(shù),其從最早P2P 分布式網(wǎng)絡(luò)、交易信息加密傳輸、無需第三方支持的1.0區(qū)塊鏈技術(shù)到更加通用化、模塊化、可編輯化的2.0共識網(wǎng)絡(luò),大大提升了鏈上合約可容納的業(yè)務(wù)邏輯量、攜帶信息量和自動化程度[3]。短短幾年內(nèi),區(qū)塊鏈技術(shù)從較單一的金融貨幣應(yīng)用拓展到了存儲共享、溯源鑒證、公評眾議、資產(chǎn)管理、流程管理等多個應(yīng)用方向,其去中心化、可追溯性、難以篡改性、可編程性、可拓展性的特點(diǎn),使得其在數(shù)字資產(chǎn)流通、數(shù)據(jù)資源共享領(lǐng)域的價值日益凸顯。它的產(chǎn)生,使得政務(wù)材料共享應(yīng)用找到了解決多方信任、分布式共享、數(shù)據(jù)加密傳遞等問題的重要途徑。各級政府開始爭相引入?yún)^(qū)塊鏈作為政務(wù)發(fā)展的前導(dǎo)性方向,并將其列入“十四五”期間加快政府?dāng)?shù)字化發(fā)展、提升公共服務(wù)、社會治理等數(shù)字化智能化水平、打造“一網(wǎng)通辦”全國一體化政務(wù)的國家級重點(diǎn)戰(zhàn)略計劃[4]。
但是,區(qū)塊鏈自存在以來,其傳輸性能和鏈上存儲能力一直為學(xué)者們所詬病。基于多賬本副本的共識算法本身已引起了大量的數(shù)據(jù)空間要求和消息傳遞計算的消耗;現(xiàn)有技術(shù)也存在大量鏈與原有業(yè)務(wù)系統(tǒng)耦合性低,線上線下共識、通信效能低,功能性能拓展方法不足等問題,導(dǎo)致數(shù)據(jù)的一致性、完整性受損,數(shù)據(jù)雙花[5]、重復(fù)數(shù)據(jù)上鏈等問題時有發(fā)生,很大程度制約了材料數(shù)據(jù)的共享價值實(shí)現(xiàn)。哪怕是以超級賬本(Hyperledger)為代表,通過減少部分交易驗(yàn)證節(jié)點(diǎn)犧牲一定去中心化能力的聯(lián)盟鏈,其設(shè)計本身,雖一定程度加強(qiáng)了對性能、安全的保證,但面對海量數(shù)據(jù)的存儲、查詢和快速響應(yīng)需求,仍會有所欠缺[6]。學(xué)者們開始尋找各類方法,對單鏈進(jìn)行各類拓展,主要的鏈上優(yōu)化方法包括網(wǎng)絡(luò)結(jié)構(gòu)變通[7-8]、鏈上性能調(diào)優(yōu)[9]、共識方式變更[8]等等。這些方法雖然最大限度在某些方向上做出了提升,但無法解決根本性的瓶頸問題。同時根據(jù)蒙代爾“不可能三角”理論[10]在區(qū)塊鏈技術(shù)領(lǐng)域的投射,同鏈中的去中心化程度、安全性和性能三者之間存在不可兼顧性,必須根據(jù)各個項(xiàng)目的核心需求有所偏重和取舍。Huang等人[11]為在三角中實(shí)現(xiàn)多方面提升,在變更共識方法的基礎(chǔ)上提出了一種“類區(qū)塊鏈”分布式賬本BDLedger,放棄了塊基于時間戳的排順共識,實(shí)現(xiàn)了吞吐量的近似線性增長,但這種方法犧牲了區(qū)塊鏈的核心賬本結(jié)構(gòu),目前很難與主流區(qū)塊鏈技術(shù)實(shí)現(xiàn)共通。
在單鏈優(yōu)化方法無法全面支撐海量數(shù)據(jù)存儲、傳輸、性能、安全各項(xiàng)需求的情況下,大量學(xué)者開始從鏈下資源協(xié)同拓展[12]和跨鏈資源協(xié)同[13]的方向進(jìn)行嘗試。大量已知應(yīng)用采用了鏈上存儲材料摘要、鏈下存儲原文件混合存儲方法以借用鏈下的存儲空間和銜接原數(shù)據(jù)的鏈下管理系統(tǒng),同時避免了敏感數(shù)據(jù)上鏈的安全性擔(dān)憂;部分文獻(xiàn)提出了鏈接口鏈下云或算力池的方法,大幅緩解了區(qū)塊鏈的性能瓶頸,并提出鏈上與鏈下傳輸?shù)姆椒ㄊ峭瑫r實(shí)現(xiàn)安全和性能的保證;文獻(xiàn)[9]反向提出了區(qū)塊鏈對現(xiàn)有“舊系統(tǒng)”改造的支撐方法,認(rèn)為可以利用區(qū)塊鏈的隱私保護(hù)性能連接多個原本無法相互信任的“平等”數(shù)據(jù)庫,對不可見數(shù)據(jù)下發(fā)聯(lián)盟計算請求,完成分布式的算力合并。還有大量應(yīng)用立足于跨鏈技術(shù),提出了平行區(qū)塊鏈、多鏈等各類理論,以分散單鏈的壓力。
總而言之,較之單一的鏈上資源優(yōu)化和調(diào)整,鏈上鏈下數(shù)據(jù)協(xié)同技術(shù)將鏈上鏈下優(yōu)勢相融合,形成了互補(bǔ)效能:一方面對于區(qū)塊鏈本身而言,可緩解現(xiàn)有鏈上的存儲壓力和提升訪問效能,鏈接多個鏈下資源;另一方面對原有鏈下系統(tǒng)而言,可在無需上鏈所有數(shù)據(jù)和改變原有數(shù)據(jù)分布式存儲和管理模式的前提下實(shí)現(xiàn)安全共享??偠灾?,鏈上鏈下數(shù)據(jù)協(xié)同技術(shù)的優(yōu)勢在于能實(shí)現(xiàn)鏈上和鏈下的“共贏”。因此,越來越多的學(xué)者投入到了該技術(shù)體系的研究中。中國工程院陳純院士甚至提出,在區(qū)塊鏈技術(shù)全面進(jìn)軍各行業(yè)領(lǐng)域的今天,鏈上鏈下數(shù)據(jù)協(xié)同技術(shù)將成為區(qū)塊鏈技術(shù)未來幾年內(nèi)的重點(diǎn)研究方向和支撐區(qū)塊鏈架構(gòu)落地的重要方法。
為在保留現(xiàn)有政務(wù)體制下分布式的材料存儲和各部門分散管理機(jī)制前提下實(shí)現(xiàn)各部門間安全可靠、傳輸高效的政務(wù)材料共享應(yīng)用,同時最大限度發(fā)揮區(qū)塊鏈的去中心化和安全可信特色,提升區(qū)塊鏈對海量數(shù)據(jù)的處理能力,推動區(qū)塊鏈在政務(wù)領(lǐng)域的應(yīng)用落地,本文在整體設(shè)計中采用了鏈上鏈下的數(shù)據(jù)協(xié)同技術(shù)體系,并針對該體系方法下的元數(shù)據(jù)設(shè)計、智能合約控制下的去中心化共享方案設(shè)計、基于Token令牌的訪問控制方法等展開深入研究,并在政務(wù)材料共享場景落地,最終實(shí)現(xiàn)了共享應(yīng)用在性能、安全、去中心化多方向上的提升。
鏈上鏈下數(shù)據(jù)協(xié)同(on-chain and off-chain data collaboration,OODC)又稱鏈上鏈下協(xié)同訪問[14]。狹義的OODC 主要指“鏈上存數(shù)據(jù)索引和哈希,鏈下存完整數(shù)據(jù)”的元數(shù)據(jù)設(shè)計和訪問方法;廣義的OODC 除元數(shù)據(jù)設(shè)計訪問外,包含了上章性能拓展方法中的鏈上性能調(diào)優(yōu)、鏈下存儲算力協(xié)同拓展、部分跨鏈協(xié)同(部分文獻(xiàn)將主側(cè)鏈技術(shù)、多鏈協(xié)作技術(shù)也納入到OODC 架構(gòu)中)等多個區(qū)塊鏈分支技術(shù)。而OODC 方案實(shí)施的重點(diǎn)在于:兼顧存儲容量和安全的鏈上鏈下元數(shù)據(jù)設(shè)計、保證數(shù)據(jù)一致性安全性協(xié)同訪問方法及訪問性能提升方法。
在基于OODC的元數(shù)據(jù)設(shè)計方法上,文獻(xiàn)[14]提出了對鏈下存儲的原始數(shù)據(jù)進(jìn)行簽名后在鏈上驗(yàn)證調(diào)取的方法,避免消耗昂貴的鏈上存儲空間;張磊等人[15]提出了云鏈協(xié)同的病歷共享模型,為提供多索引搜索引擎,將鏈下原數(shù)據(jù)改造為醫(yī)療數(shù)據(jù)塊統(tǒng)一存儲在云服務(wù)器上、摘要數(shù)據(jù)塊上鏈,但顯然存在數(shù)據(jù)上云的額外開銷;文獻(xiàn)[16]將鏈下訪問客體的訪問地址和摘要值等生成索引存儲在客體區(qū)塊鏈上,但對原鏈下數(shù)據(jù)未采取任何增加安全或搜索性能的元數(shù)據(jù)改造。Xu等人[17]在實(shí)現(xiàn)基于事務(wù)的醫(yī)療鏈訪問同時,將讀取權(quán)限的訪問指針及實(shí)際記錄鏈接存儲在智能合約中,以避免脫機(jī)字典攻擊(offline dictionary attack)提升了安全性。
在協(xié)同訪問方法上,文獻(xiàn)[14]采用基于屬性加密(CP-ABE)的數(shù)據(jù)訪問方法,將跟隨分布式賬本發(fā)給各節(jié)點(diǎn)客戶端;文獻(xiàn)[16]采用了按合約功能分鏈的方法,分離出了一個日志子鏈記錄了整個授權(quán)和訪問過程,但由于日志鏈的日益擴(kuò)充導(dǎo)致了鏈訪問性能下降問題;但未考慮到鏈下訪問的日志存證問題,無法對鏈下操作做出溯源。在一致性保證上,文獻(xiàn)[17]通過包含用戶事務(wù)哈希值Merkle樹作為塊主體,進(jìn)而生成基于用戶子鏈的協(xié)商一致性算法(consensus algorithm for userchain)保證數(shù)據(jù)完整性與一致性;文獻(xiàn)[18]提出了基于預(yù)言機(jī)(Oracle)的數(shù)據(jù)真實(shí)性完整性驗(yàn)證機(jī)制,當(dāng)有數(shù)據(jù)交互需求時,幫助鏈上合約在提出收集鏈外數(shù)據(jù)要求后對數(shù)據(jù)進(jìn)行驗(yàn)證后反饋,但其中心化設(shè)計給區(qū)塊鏈帶來了風(fēng)險,易導(dǎo)致信任攻擊。
在提升性能和計算能力方面,文獻(xiàn)[15]通過改進(jìn)實(shí)用拜占庭共識算法,使得各節(jié)點(diǎn)可以更高效地達(dá)成共識,提升協(xié)同訪問的資源搜索效率;文獻(xiàn)[16]與文獻(xiàn)[17]不約而同采用了分離單獨(dú)功能的授權(quán)子鏈、用戶子鏈來實(shí)施訪問控制,加速同鏈通信;其他一些文獻(xiàn)也提出了通過邊緣計算(edge computing)實(shí)現(xiàn)鏈下分發(fā)的云資源和服務(wù)方法[19],或其他鏈與AI、云計算等通過API接口算力調(diào)用式協(xié)同應(yīng)用??梢钥闯龈倪M(jìn)原有共識算法、分離功能性子鏈(也稱為側(cè)鏈)是目前較有可行性的方法,“區(qū)塊鏈+”融合技術(shù)也給鏈上鏈下協(xié)同技術(shù)帶來了一定的拓展前景。
整體而言,上述基于OODC的理論研究尚在起步階段,系統(tǒng)化、平臺化、落地化的OODC方案仍需積極探索。
傳統(tǒng)訪問控制方法主要包含基于屬性(attributebased,ABAC)[15-16]、基于事務(wù)(transaction-based,TABC)[20]、基于角色(role-based,rBAC)[21]、基于信任度(trust-based,TrBAC)[22]、基于權(quán)能(capability-based,CBAC)[23]的訪問控制等。表1 展示了基于區(qū)塊鏈的相關(guān)訪問方法中的核心訪問語句以及對應(yīng)語義解讀,展現(xiàn)了不同方法的基本原理,其中表示主體S(也定義為訪問用戶User)獲取到規(guī)則為P的客體O的訪問權(quán)限。區(qū)塊鏈的介入使得傳統(tǒng)訪問策略逐步向動態(tài)響應(yīng)、易傳遞、可插拔、易編輯等與鏈技術(shù)更易融合的特性上靠攏。ABAC對各實(shí)體的細(xì)致化分割約束能力、TBAC基于事務(wù)的動態(tài)響應(yīng)和資源保護(hù)能力、rBAC 在鏈上鏈下角色權(quán)限協(xié)同中的高對應(yīng)性、CapAC基于令牌的分布式可插拔能力和抗攻擊能力,都在區(qū)塊鏈上有了長足的發(fā)展。而CapAC 方法,傳輸便捷,尤其是其中基于Token 令牌[24]的訪問控制方法更易與OODC技術(shù)相結(jié)合,將成為本文關(guān)注的重點(diǎn)。
表1 不同訪問策略下的訪問核心語句表示和解讀Table 1 Representation and interpretation of access core statements in different access control strategies
Token的概念較為多樣,有“臨時”“令牌”“代幣”“卡牌”等意思,在訪問控制中可以看作是允許其擁有者某段時間內(nèi)操作或控制計算機(jī)系統(tǒng)中某實(shí)體或材料權(quán)力人的一則獨(dú)立消息或特殊幀[25]。有別于CapAC 中基于票據(jù)、鑰匙、證書的權(quán)限控制方法,Token具有非前置性、輕量級、臨時性、不可預(yù)測性的特點(diǎn),非常符合政務(wù)分布式系統(tǒng)高安全等級、權(quán)限動態(tài)發(fā)布和更新的需求。
基于Token的訪問控制方法主要通過令牌生成、真實(shí)性檢驗(yàn)、有效性檢驗(yàn)這三個過程實(shí)現(xiàn)。其中Token生成過程CreateToken可定義為:
即設(shè)主體為S訪問客體為O、訪問權(quán)限要求為PC、從時刻x1到x2的訪問時長寫入Token,并加上使用者簽名Usig,賦予Uid為令牌持有人。常規(guī)操作中,Uid往往為各類實(shí)體用戶或?qū)嶓w設(shè)備(多見于物聯(lián)網(wǎng)類模型)。
公式(2)和(3)分別對應(yīng)真實(shí)性檢驗(yàn)、有效性檢驗(yàn),前者驗(yàn)證Token申請者的真實(shí)性,往往通過驗(yàn)證申請者是否屬于合法用戶實(shí)現(xiàn);后者確認(rèn)Token的有效性以及完整性,也稱為策略能力驗(yàn)證(capability verification),部分輔以客體權(quán)力人簽名驗(yàn)證。驗(yàn)證通過返回1,否則為0:
其中,Usig為使用者簽名,簽名函數(shù)Sig()一般指客體O的所有人O.owner的簽名函數(shù)即Sig(O.owner) ;isvalid(Uid)表示Uid是合法的令牌申請用戶,PT?PO表示主體申請的策略PT要符合客體允許的策略要求PO。實(shí)際操作中(2)、(3)往往會合并實(shí)施。
另外,Token 還擁有便捷靈活的傳遞(或繼承)能力[26],即:
該過程TransTokenS,O將Token從用戶Uid1轉(zhuǎn)移給Uid2使用。該能力非常便于政務(wù)處理中將訪問消息進(jìn)行傳遞。
去中心化是區(qū)塊鏈的一個核心能力。原有系統(tǒng)往往通過授權(quán)中心、屬性中心、策略中心、控制中臺等一系列中心化機(jī)構(gòu),對應(yīng)完成權(quán)限授予、屬性分配、策略生成、事件控制等工作,極易造成通信擁堵、單點(diǎn)故障、拒絕服務(wù)攻擊等問題。文獻(xiàn)[26]中討論了多種中心化、半中心化和完全去中心化的訪問控制方法,提出了通過鏈上智能合約完成實(shí)體注冊、策略生成、策略合約化、訪問合約執(zhí)行等一系列操作的方法,同時認(rèn)為通過鏈上合約實(shí)施策略統(tǒng)一規(guī)劃、訪問權(quán)限判決,節(jié)點(diǎn)配合完成合約策略操作更具可行性;文獻(xiàn)[16]采用了在鏈下部署策略執(zhí)行點(diǎn)、管理點(diǎn)、信息點(diǎn),鏈上同步部署策略決策、策略部署、策略驗(yàn)證、策略存儲合約的方法,但大大增加了存儲資源和共識的負(fù)擔(dān);史錦山等人[27]通過事件智能合約生成一系列請求訪問事件、Token,并通過Token生成事件、傳遞事件和使用事件取代各執(zhí)行點(diǎn)、管理點(diǎn)功能,以提升去中心化能力和增加策略靈活性,但可能導(dǎo)致部分Token 調(diào)用沖突;宋麗華等人[28]將訪問策略存儲于策略合約中,并通過權(quán)限裁決智能合約(Decision-SC)鏈上讀取策略合約的同時控制鏈下的策略實(shí)施點(diǎn)(policy handle point,PHP)實(shí)施訪問,但易導(dǎo)致PHP單點(diǎn)傳輸負(fù)擔(dān)過重。
在處理鏈合約與鏈下交互性能問題上,文獻(xiàn)[27]提出了對token一次申請多次使用和將權(quán)限驗(yàn)證點(diǎn)分別部署到智能合約和網(wǎng)關(guān)上的方法;文獻(xiàn)[28]通過在訪問策略生成時提請申請Token 的方式減小鏈上鏈下傳輸對訪問性能的影響,均值得本文思考和借鑒。
本文為進(jìn)一步發(fā)揮區(qū)塊鏈安全可信、性能拓展、去中心化的能力,首先實(shí)施了鏈上鏈下協(xié)同存儲的元數(shù)據(jù)上鏈,再設(shè)計了鏈上鏈下分工協(xié)同的訪問控制策略和基于Token設(shè)計的訪問智能合約,最后輔以鏈上鏈下日志協(xié)同下的溯源機(jī)制,實(shí)現(xiàn)完整設(shè)計。
項(xiàng)目整體根據(jù)政務(wù)需求,首先選擇安全和去中心化重點(diǎn)保障,同時通過鏈上鏈下協(xié)同實(shí)現(xiàn)存儲、性能、算力的拓展,運(yùn)用Merkle 樹結(jié)構(gòu)驗(yàn)證數(shù)據(jù)完整性與真實(shí)性,并通過多鏈協(xié)同方法減少節(jié)點(diǎn)不斷擴(kuò)張和鏈下資源增長而引起的性能下降。
本文方法在訪問控制部分?jǐn)X取了各傳統(tǒng)方法的優(yōu)勢,通過屬性值的賦予、讀取方法生成可分割實(shí)體的約束條件,運(yùn)用事件觸發(fā)機(jī)制推動合約執(zhí)行或?qū)傩宰兏饕ㄟ^基于Token令牌的訪問控制傳遞權(quán)限規(guī)則,設(shè)置合理的觸發(fā)條件和時序參數(shù)的模塊化合約編寫完成基于OODC的訪問控制。
在性能保障上,項(xiàng)目擬在節(jié)點(diǎn)架構(gòu)和合約編寫中,通過區(qū)分記賬(共識)節(jié)點(diǎn)、存證節(jié)點(diǎn)、輕量化節(jié)點(diǎn),精簡鏈上存儲,減少資源消耗,并著重對日志存證內(nèi)容、資源搜索方法、鏈下材料調(diào)用協(xié)同和一致性保證等相關(guān)合約進(jìn)行優(yōu)化和改進(jìn)。
為保證安全,在合約編寫上,要盡可能遵循“增加動態(tài)條件觸發(fā)、最少靜態(tài)合約變更”的原則,同時分離授權(quán)訪問合約便于修改替換,并在合約中增加回滾、權(quán)限沖突、緊急制動方案。
鏈上鏈下協(xié)同下的政務(wù)材料共享網(wǎng)絡(luò)架構(gòu)如圖1所示,主要展示區(qū)塊鏈AC1的架構(gòu)部分;左面虛線隔開的是跨鏈部分,在本文中不予展開。整體架構(gòu)中的實(shí)體名稱和承擔(dān)功能如下:
圖1 基于OODC的政務(wù)材料共享網(wǎng)絡(luò)架構(gòu)圖Fig.1 Architecture diagram of sharing of materials related to government affairs network based on OODC method
材料索引鏈Index-chain1(IC1):按時間戳順序存儲多個鏈上規(guī)范元數(shù)據(jù)塊Ind(i),其中i為根據(jù)上鏈時間戳給出的鏈上順序編號。
合約控制鏈AC1-SC-chain(SC1):上鏈階段負(fù)責(zé)上鏈申請響應(yīng),調(diào)整單件材料訪問策略,完成多權(quán)力人簽名個人部分,保證鏈上元數(shù)據(jù)塊Ind(i)和鏈下元數(shù)據(jù)Fil(i)的一致性和完整性;訪問時,承擔(dān)訪問策略決策、屬性策略輔助、環(huán)境變量監(jiān)聽導(dǎo)致的訪問權(quán)限變化。除此之外,還承擔(dān)合約運(yùn)行中為突發(fā)攻擊、沖突制定的緊急制動方案。
日志鏈Log-Chain1(LC1):記錄鏈上確權(quán)和訪問日志Onchain-Log(OLog),同時存儲鏈下元數(shù)據(jù)被訪問日志的哈希值。
鏈下系統(tǒng)Off-AP(OAPF,上標(biāo)F為所鏈接Node節(jié)點(diǎn)ID):承擔(dān)與材料共享相關(guān)的線下業(yè)務(wù),如房產(chǎn)證辦理、戶籍轉(zhuǎn)移業(yè)務(wù)受理應(yīng)用等。記錄所有成功的訪問申請OAPF-Log。
鏈下存儲Off-FF(OFF):由原文件臨時池(OPoolF)和鏈數(shù)據(jù)提供池(ODPF)組成。OPoolF用于臨時存儲從OAPF接口導(dǎo)入的原文件MS,ODPF存儲加有數(shù)字簽名和部分加密的鏈和鏈下規(guī)范元數(shù)據(jù)Fil(i);同時記錄Fil(i)生成和被訪問日志ODPF-Log。
鏈節(jié)點(diǎn)NodeF(NF,為記賬節(jié)點(diǎn)):參與共識;上鏈時,負(fù)責(zé)提交本節(jié)點(diǎn)鏈接的所有帶管理人簽名和訪問策略的上鏈文件申請,進(jìn)行策略預(yù)判定;訪問時,負(fù)責(zé)鏈下OAPF策略執(zhí)行;收集OAPF-Log、OFF-Log,生成鏈下日志Off-LogF,并上傳哈希值O-HasF至LC1。
輕量級節(jié)點(diǎn)Mobilepe(Mbpe,上標(biāo)pe為所在鏈給所有者owner分配的接入節(jié)點(diǎn)編號):不參與共識,用于所有人名下所有材料的個體策略調(diào)整管理,本人名下材料使用和授權(quán)權(quán)限轉(zhuǎn)移,在本文中不做展開。
跨鏈單元Crosschain-Unit(CUnit):負(fù)責(zé)鏈間權(quán)限映射、生成跨鏈索引賬本,帶防火墻以規(guī)避網(wǎng)絡(luò)風(fēng)險。
平行區(qū)塊鏈AC2:包含與AC1 相同結(jié)構(gòu),用于平行拓展AC1,以保證節(jié)點(diǎn)大幅增加后的鏈性能。
整體參與架構(gòu)的三主體及其相互關(guān)系概括如下:
材料管理者M(jìn)ad:將所轄同一類型的材料批量發(fā)布上鏈,同時設(shè)置整體訪問策略;對材料集TM 批量生成管理者簽名,后續(xù)與所有人簽名共同合成多重權(quán)利人簽名Sig(i);材料所有人Owner:可讀取名下材料的整體訪問策略,并基于整體策略對個體MS訪問策略進(jìn)行調(diào)整,同時疊加數(shù)字簽名,與Mad共同生成Sig(i)。
使用用戶User:通過OAPF向鏈遞交所需的材料客體查詢條件,通過訪問策略獲取相關(guān)客體資源。
可以看到,由于政務(wù)應(yīng)用的特殊性,Mad 與Owner共同設(shè)計成了MS的權(quán)利人,對MS的上鏈和訪問進(jìn)行控制。User通過對MS進(jìn)行申請,并通過合約約束獲得Mad與Owner的認(rèn)同,最終成為MS的實(shí)際使用人。具體設(shè)計實(shí)現(xiàn),將在后續(xù)章節(jié)中按照元數(shù)據(jù)設(shè)計、上鏈流程、協(xié)同訪問流程的順序予以詳細(xì)講述。
政務(wù)材料元數(shù)據(jù)Meta(i)為原材料MS的上鏈規(guī)范化數(shù)據(jù),由鏈上的摘要數(shù)據(jù)塊Ind(i)(左面部分)和鏈下規(guī)范化數(shù)據(jù)Fil(i)兩部分構(gòu)成(右面部分)如圖2 所示。兩個部分元數(shù)據(jù)均包括唯一OODC 編號、數(shù)據(jù)位置、訪問權(quán)限、負(fù)載(Payload,也可稱內(nèi)容)、時間戳等五部分必備結(jié)構(gòu)。分別起到了唯一性保證、確定相互訪問位置、實(shí)現(xiàn)加密可控訪問、確定具體材料內(nèi)容,和根據(jù)時間戳順序溯源和排列多個區(qū)塊的作用。
圖2 鏈上鏈下元數(shù)據(jù)結(jié)構(gòu)示意圖Fig.2 Metadata structure schematic diagram based on OODC
數(shù)據(jù)上鏈,某些文獻(xiàn)也稱客體上傳[26],本文主要指將政務(wù)材料數(shù)據(jù)按上節(jié)元數(shù)據(jù)構(gòu)成方法變化為可進(jìn)行鏈上鏈下查詢、訪問等操作的元數(shù)據(jù)過程。由于政務(wù)材料存儲和管理的特殊性,上鏈主要由同一類型材料的管理者批量完成,在數(shù)據(jù)訪問環(huán)節(jié)中根據(jù)單一材料的所有人要求進(jìn)行訪問策略調(diào)整。在本文的設(shè)計中,上鏈包括了上鏈前處理、元數(shù)據(jù)鏈上鏈下分類存儲部分。整體方法流程如下:
步驟1預(yù)上鏈申請。先假設(shè)每個用戶和實(shí)體均已在注冊階段進(jìn)行過身份認(rèn)證,并且每個使用用戶已獲得了鏈上唯一編號。TMtcode為材料管理者M(jìn)ad(MS)管理下的與MS類型編碼tcode一致的所有材料的集合,知MS∈TMtcode。管理者提出初始策略PreP(MS.tcode)向所在節(jié)點(diǎn)OFc申請上鏈。
步驟2上鏈前預(yù)判定。OFc預(yù)置了材料策略預(yù)判點(diǎn)(policy prejudge point,PreP),首先通過其與IC1 和SC1通信,判定該材料的有效性。首先搜索已有上鏈索引中是否已有該材料信息、并獲取材料有效期數(shù)據(jù),判定材料是否涉及重復(fù)上鏈和過期情況。接著,讀取所有已上鏈同類型材料的整體策略集合CodeP(MS.tcode)。該信息從SC1 上的策略管理智能合約(policy administration smart contract,PA-SC)上的全策略集OnP 前期通過共識方法raft(AC1)獲取??芍?/p>
如PreP(MS.tcode)?CodeP則直接生成訪問MS的正式整體策略集MP(MS.tcode):
否則PA-SC 將對新策略進(jìn)行合規(guī)預(yù)判以規(guī)避某些錯誤策略設(shè)置,確認(rèn)CodeP需修改后,對MP集合進(jìn)行更新(PreP和PA-SC具體講解可參見第4章)。
步驟3數(shù)字簽名和個體權(quán)限調(diào)整。在通過Mad(MS)實(shí)體驗(yàn)證后,SC1開始正式上鏈過程,SCl的簽名策略合約(Sig-SC)向材料所有人Owner(MS)發(fā)送準(zhǔn)備上鏈的簽名邀請。按現(xiàn)有法規(guī),只有獲得所有人簽名的材料才能被運(yùn)行鏈上可見和后續(xù)使用,故本文實(shí)施了對客體O的所有權(quán)限主體集合(Ot1,Ot2,…,Otn)∈Φ的多重權(quán)利人簽名[29]Sig(n),n為簽名人數(shù),本文中簽名人為Mad(MS)和Owner(MS)。同時,允許Owner(MS)對MP(MS.tcode)進(jìn)行不超出該策略的調(diào)整,即PP(MS)?MP(MS.tcode),故個體策略PP(MS)最小可允許零訪問,最大即直接沿用整體策略。最后,確認(rèn)后獲得LC1給出的鏈上MS唯一順序號i,將材料個體對整體策略修改的補(bǔ)集P(i),而非個體策略PP(MS)存入Ind(i)中,即:
且同時存入表示材料整體策略是否被個人修改的參數(shù)ModPi。這樣設(shè)置的優(yōu)勢是:85%以上的所有者并不對整體策略進(jìn)行修改,將大大節(jié)省以往系統(tǒng)單個客體的訪問策略存儲,同時鏈上合約及各節(jié)點(diǎn)PreP中只需存儲材料的類別策略集,存儲量非常有限;訪問時,如快捷讀取到ModPi,則無需繼續(xù)讀取P(i),繼而節(jié)省大量計算開銷。
步驟4元數(shù)據(jù)及Merkle 樹生成。將MS正式轉(zhuǎn)化為訪問策略補(bǔ)集P(i)及加密鏈下地址的鏈上Ind(i)數(shù)據(jù)格式,并為其添加多重數(shù)字簽名Msig,上鏈在索引鏈IC1 上,將Ind(i)按文獻(xiàn)[17]方法轉(zhuǎn)化為Merkle樹結(jié)構(gòu),便于快速訪問;統(tǒng)一時間戳t,將鏈下規(guī)范結(jié)構(gòu)元數(shù)據(jù)Fil(i)同時存入OFc連接的下數(shù)據(jù)提供池ODPc。
步驟5生成日志記錄。ODPc上增加鏈下日志、鏈下日志哈希off-use-LogH(oLogH)和鏈上日志chain-Log(cLog)會在Log-Chain1(LC1)上分別增加MS上鏈記錄用于溯源。
元數(shù)據(jù)上鏈流程如圖3 所示,按順序由上而下,其中鏈上鏈下交互域用灰色表示。本上鏈流程利用整體策略代替了大量重復(fù)個體策略進(jìn)行存儲,將PreP設(shè)置在節(jié)點(diǎn)上減少鏈上鏈下交互,并通過將補(bǔ)集Pi和修改參數(shù)ModPi加入Ind(i)減少共識消耗;并通過鏈上鏈下元數(shù)據(jù)、日志同步生成策略保證一致性;通過鏈下日志哈希上鏈防止鏈下數(shù)據(jù)篡改。
系統(tǒng)的實(shí)施既訪問控制實(shí)施環(huán)節(jié)中,參與訪問控制的策略集合包括:鏈下整體策略集CodeP(MS.Tcode)、鏈上策略集合約OnP、分布式賬本上個體策略補(bǔ)集Pi和修改參數(shù)ModPi;鏈下節(jié)點(diǎn)參與控制點(diǎn)包含:材料策略預(yù)判點(diǎn)PreP、策略執(zhí)行點(diǎn)(policy handle point,PHP);鏈上功能合約包含:策略管理智能合約PA-SC、屬性管理合約(attribute administration smart contract,AA-SC)、Token生成智能合約(token creat smart contract,TC-SC)、Token真實(shí)性驗(yàn)證智能合約(token authenticity verification smart contract,TAV-SC)、Token有效性驗(yàn)證智能合約(token validity verification smart contract,TVV-SC)。
參與訪問各功能點(diǎn)和功能合約作用如下:
PreP:上鏈申請時預(yù)判材料是否有效,整體策略是否有誤。
PA-SC:整體策略的管理,上鏈時根據(jù)Pi和ModPi合成P(i)存儲,訪問時根據(jù)反向方法生成PP(i)。
PT-SC:申請訪問時,讀取PP(i)和相關(guān)參數(shù),實(shí)時生成Token;驗(yàn)證完成后傳輸Token 至PHP;臨時Token銷毀。
AA-SC:包含所有屬性{attr},幫助TVV-SC 判定Token是否符合加入屬性的規(guī)則要求。
TAV-SC:實(shí)體唯一身份驗(yàn)證、各類簽名驗(yàn)證等。
TVV-SC:確認(rèn)Token權(quán)限是否有效。
PHP:解析Token 中攜帶的信息,私鑰加密材料地址,實(shí)施訪問。
模型實(shí)施方法包含以下步驟:
步驟1用戶提交事務(wù)r觸發(fā)材料檢索語句生成。User通過鏈下應(yīng)用系統(tǒng)OAPa首先向節(jié)點(diǎn)Na發(fā)送檢索語句,索引賬本關(guān)鍵詞kword中滿足條件Cond1 的J個材料或材料組索引為,j為符合要求的材料編號,得:
其中,kword.attr表示kword中的多個屬性值attr。
步驟2個體訪問策略生成。根據(jù)每個Ind(j)的材料類型向SC1 上PA-SC 申請獲取整體策略MP(j)=MP(Ind(j).Tcode),同時讀取Ind(j).P(j),獲得j的訪問策略PP(j),可知:
步驟3事務(wù)時間區(qū)間控制下的資源令牌生成。對每個客體j,讀取訪問權(quán)限r(nóng)Pj,根據(jù)公式(1),生成該事務(wù)申請訪問的客體元數(shù)據(jù)Mata(j)對應(yīng)的Token(j),其中被取代為ttrend-systime,其中systime 為現(xiàn)在時間戳,trend 參數(shù)為事務(wù)r結(jié)束時間,可后期由從環(huán)境(environment)讀取,rPj表示本次事務(wù)中對客體j申請的訪問策略。令牌由TC-SC 合約生成后暫存該合約內(nèi)。改寫公式(1)得公式(11):
步驟4真實(shí)性和有效性驗(yàn)證。合并執(zhí)行公式(2)和(3),即:
首先由TAV-SC向鏈上合約RC1確認(rèn)事務(wù)r是否合法,再對事務(wù)發(fā)起人簽名USigr進(jìn)行驗(yàn)證;接著,根據(jù)現(xiàn)有政策規(guī)定,所有材料使用需獲取所有人的確認(rèn)。SCl的Sign-SC 向材料所有人{(lán) }Owner(j) 進(jìn)行去重操作生成Ownerlist集合,使得對所有人重復(fù)的材料僅需簽名一次;最后,TVV-SC參照基于屬性的訪問控制方法讀取AA-AC中的O.attr,及事務(wù)中獲取環(huán)境條件trattr符合設(shè)定相關(guān)環(huán)境屬性EVAttr,定義公式(12)中rPj?PP(j)的判定方法如下:
步驟5返回資源令牌和鏈下資源獲取。User 獲取令牌后將Ind(j)中的鏈上地址Ad解密;接著,將帶有Usig、Uid、控制者簽名Csig的令牌認(rèn)證結(jié)果CToken一起發(fā)送給符合要求的Meta(j)所在的鏈下節(jié)點(diǎn)OFc的策略執(zhí)行點(diǎn)PHPc;PHPc根據(jù)CToken 再次進(jìn)行身份和簽名驗(yàn)證,并通過地址驗(yàn)證和Fil(j)哈希驗(yàn)證確認(rèn)鏈下文件未失效和未篡改,將Fil(j)所在Fc的鏈接地址明文、原文件密文點(diǎn)對點(diǎn)傳輸至Uid,并通過PHP 實(shí)施其對鏈下資源Fil(j)的訪問。事務(wù)結(jié)束后訪問令牌由于超出ttrend-systime時間導(dǎo)致自動失效。未采用文獻(xiàn)[26]中將Token一次性申請后存儲在cookie、外部存儲里的方法,是為了避免匿名攻擊、方便Token 修改撤銷,從而進(jìn)一步提升安全性。
步驟6記錄訪問日志。文件操作日志與上鏈一致,會分鏈下申請節(jié)點(diǎn)日志哈希oLogHA、鏈下文件讀取節(jié)點(diǎn)日志哈希oLogHC和鏈上日志chain-Log部分,分別存入LC1。
步驟7(選用流程)轉(zhuǎn)移授權(quán)訪問。為增強(qiáng)模型的靈活性,Token 被允許Uidj通過點(diǎn)對點(diǎn)傳遞的方法,交給信任用戶Permitidj使用,期間需要進(jìn)行公式(2)中的真實(shí)性驗(yàn)證以確認(rèn)其真?zhèn)渭坝蝎@取該令牌的資格,即:
該方法在本設(shè)計模型中,主要適用于材料委托授權(quán),如將所有人的材料使用權(quán)限傳遞給代理人、部門將企業(yè)相關(guān)材料權(quán)限傳遞給下屬子單位等。基于傳遞獲得的Token會專門生成Token轉(zhuǎn)移日志記錄Trans-log。
步驟8(選用流程)Token 撤銷。為增強(qiáng)本設(shè)計的靈活性,Token 被允許Uidj通過點(diǎn)對點(diǎn)傳遞的方法,交給信任用戶Permitidj使用,期間需要進(jìn)行公式(2)中的真實(shí)性驗(yàn)證以確認(rèn)其真?zhèn)渭坝蝎@取該令牌的資格,即:
撤銷方法統(tǒng)一由鏈上PT-SC 發(fā)出,故需要其簽名SCSig;td為要求撤銷時間,往往設(shè)置為當(dāng)前系統(tǒng)時刻。在本設(shè)計中撤銷方法主要用于配合發(fā)現(xiàn)臨時訪問錯誤后的操作;Token傳遞語句后選擇關(guān)閉原用戶訪問;緊急消除越權(quán)訪問等安全隱患等。
上述訪問控制流程如圖4所示,設(shè)計通過智能合約對策略進(jìn)行管理、對訪問Token 進(jìn)行生成和驗(yàn)證;通過控制每個置于共識節(jié)點(diǎn)的PreP進(jìn)行策略預(yù)審、PHP執(zhí)行線下數(shù)據(jù)訪問策略。在保證安全、去中心化控制的基礎(chǔ)上,進(jìn)一步減少了鏈上鏈下通信以及共識消耗。
圖4 鏈上鏈下數(shù)據(jù)協(xié)同下的訪問控制流程Fig.4 Access control flow chart based on OODC
本章將設(shè)計中對安全保證、去中心化能力、性能提升三方面的設(shè)置和方法進(jìn)行了匯總,并將各自的貢獻(xiàn)成效進(jìn)行了展示,如表2 所示??芍疚膶θ惙较?qū)嵤┝硕鄠€卓有成效的方法,并重點(diǎn)在改進(jìn)性能方面作出了提升。在多個方法中,基于鏈上鏈下元數(shù)據(jù)和策略參數(shù)存儲方法、基于智能合約及各共識節(jié)點(diǎn)控制鏈上鏈下訪問、基于Token 的各類安全性靈活性設(shè)置,對整體設(shè)計的性能提升起到了重要作用。
表2 本文相關(guān)設(shè)置或方法和對應(yīng)貢獻(xiàn)成效表Table 2 Proposed settings or methods and corresponding resulting contributions
其次,對實(shí)際搭建的性能展開測試?,F(xiàn)平臺環(huán)境為:6 個華為聯(lián)盟鏈節(jié)點(diǎn),其中共識節(jié)點(diǎn)2 個,驗(yàn)證節(jié)點(diǎn)4個。計算資源為2臺鯤鵬架構(gòu)虛擬機(jī),每臺虛擬機(jī)配置為32vCPU、64 GB 內(nèi)存,操作系統(tǒng)為64 位華為EulerOS 2.8。采用Raft 共識機(jī)制,golang 編寫智能合約,鏈應(yīng)用層利用java語言sdk接口方式來與區(qū)塊鏈平臺集成進(jìn)行數(shù)據(jù)上鏈和查詢交互操作。
圖5(a)中比較了不同鏈上鏈下數(shù)據(jù)存儲方法鏈上生成索引塊和生成鏈下數(shù)據(jù)平均總時延。可知本文方法較之文獻(xiàn)[16]ABAC 方法一直處于優(yōu)勢,但在并發(fā)50~150次間,較之文獻(xiàn)[28]同樣基于令牌的方法無明顯優(yōu)勢,但在并發(fā)超出150 次后較之文獻(xiàn)[28]優(yōu)勢明顯放大。究其原因,本文由于增加了管理者簽名步驟,在并發(fā)增加后本文鏈上僅存儲同類型整體策略和減小Index塊會逐步導(dǎo)致性能改進(jìn)優(yōu)勢放大,使得高并發(fā)時的時延上升趨勢平緩。
圖5 不同模型的上鏈、訪問平均延時值比較Fig.5 Comparison of average time delays in meta data creation and access control steps of different models
圖5(b)中記錄了ABAC[16]、CapAC[25]與本文訪問策略中不同并發(fā)訪問次數(shù)下的平均訪問時延值比較。本文方法較之其他方法從并發(fā)數(shù)為100 后一直處于優(yōu)勢地位,且在200~300 階段時延增幅僅為文獻(xiàn)[16]方法的47.3%。這得益于方法中各類提升共識效能、減少鏈上鏈下通信次數(shù)、基于Token的靈活訪問控制機(jī)制等。
最后該設(shè)計在具體實(shí)施中,目前已實(shí)現(xiàn)政府部門內(nèi)核發(fā)的身份類、證明類常用材料的初始化上鏈,并通過區(qū)塊鏈鏈接至多個政府對外辦事機(jī)構(gòu)的辦事系統(tǒng),并同時支持公民通過輕量級節(jié)點(diǎn)上鏈進(jìn)行本人名下的材料整理、隱私設(shè)置和共享許可簽名,構(gòu)建出一個鏈上鏈下統(tǒng)一的電子材料共享應(yīng)用體系。在多個事務(wù)辦理中針對非政府核發(fā)材料,實(shí)現(xiàn)了用戶首次辦件材料一次提交上鏈、多次復(fù)用、多部門共享。同時針對用戶管理,劃定了符合項(xiàng)目管理規(guī)范的開發(fā)人員、鏈管人員、應(yīng)用運(yùn)維人員三類不同角色人員,對鏈上鏈下進(jìn)行協(xié)同化分工管理,具體安排見表3,進(jìn)一步確保整體正常運(yùn)轉(zhuǎn)的情況下保護(hù)數(shù)據(jù)安全。目前系統(tǒng)已進(jìn)入初始運(yùn)轉(zhuǎn)階段,并納入“一網(wǎng)通辦”政務(wù)體系予以實(shí)施。
表3 項(xiàng)目中各運(yùn)營管理角色分工和協(xié)作關(guān)系Table 3 Division of labor and collaboration among roles in project administration
本文完成了一種基于鏈上鏈下數(shù)據(jù)協(xié)同的去中心化高可用共享設(shè)計與實(shí)現(xiàn),其方案特色總結(jié)如下:
(1)進(jìn)行數(shù)據(jù)加密下的鏈上摘要、鏈下原文件的元數(shù)據(jù)設(shè)計,在控制策略存儲上采用了鏈上中心存儲整體策略和索引上鏈個體策略補(bǔ)集的方式,盡可能縮小鏈上存儲量和減少共識消耗。
(2)設(shè)計合理的智能合約和節(jié)點(diǎn)功能點(diǎn),摒棄已知系統(tǒng)中心化的訪問控制模式,鏈上鏈下交互實(shí)現(xiàn)區(qū)塊鏈全面控制下的去中心化應(yīng)用運(yùn)轉(zhuǎn),同時減輕鏈上合約負(fù)擔(dān)和減少不必要的鏈上鏈下通信消耗。
(3)采用基于事務(wù)、屬性的訪問策略,保證符合屬性要求的用戶實(shí)施訪問。
(4)設(shè)定Token令牌權(quán)限傳遞下的鏈上鏈下協(xié)同訪問策略,拓展系統(tǒng)的性能和保證合約運(yùn)轉(zhuǎn)的高可用性。同時設(shè)置一次性的Token生成和失效條件,保證用戶訪問的安全可控。
(5)實(shí)現(xiàn)安全、去中心化、性能三方面較為平衡、并重的鏈上鏈下共享訪問,并最終實(shí)現(xiàn)落地應(yīng)用。
最后,本項(xiàng)目后續(xù)由于材料共享已從政府各部門在向社會化節(jié)點(diǎn)拓展,為了進(jìn)一步保證安全,采用了針對政務(wù)節(jié)點(diǎn)和社會化節(jié)點(diǎn)不同信任等級的Token 分類策略,作為本文模型的有效補(bǔ)充。