王繼業(yè) 高靈超 董愛強(qiáng) 郭少勇 陳 暉 魏 欣
1(國(guó)家電網(wǎng)公司 北京 100031)
2(北京中電普華信息技術(shù)有限公司 北京 100192)
3 (網(wǎng)絡(luò)與交換技術(shù)國(guó)家重點(diǎn)實(shí)驗(yàn)室 (北京郵電大學(xué)) 北京 100876)
(syguo@bupt.edu.cn)
“能源互聯(lián)網(wǎng)”是以電力系統(tǒng)為核心,以互聯(lián)網(wǎng)及其他前沿信息技術(shù)為基礎(chǔ),以分布式可再生能源為主要一次能源,與天然氣網(wǎng)絡(luò)、交通網(wǎng)絡(luò)等其他系統(tǒng)深入結(jié)合而形成的新的能源利用體系.能源互聯(lián)網(wǎng)應(yīng)提供一種在供需雙方之間建立快速、可信、自動(dòng)的能源交易模式,幫助供需雙方高效建立和完成交易[1-2].但現(xiàn)有能源互聯(lián)網(wǎng)解決方案中,大多利用中心化的管理控制機(jī)構(gòu)完成.但能源互聯(lián)網(wǎng)體系龐大,中心化管理機(jī)構(gòu)任務(wù)繁重,某些情況下去中心化具有更高的效率,如家庭光伏電站的剩余電量提供給某鄰居家電器使用,在雙方可信的基礎(chǔ)上可以直接完成交易,從而具有更高的效率.需要為構(gòu)建一種可信的對(duì)等數(shù)據(jù)共享平臺(tái),支撐能源互聯(lián)網(wǎng)的高效快速交易[2-3].
Fig. 1 Block chain based data security sharing network architecture圖1 基于區(qū)塊鏈的數(shù)據(jù)安全共享網(wǎng)絡(luò)體系
而區(qū)塊鏈作為一種構(gòu)建去中心化的分布式存儲(chǔ)的對(duì)等可信數(shù)據(jù)網(wǎng)絡(luò)的技術(shù),是以比特幣為代表的數(shù)字加密貨幣體系的核心支撐技術(shù),為構(gòu)建可信、點(diǎn)對(duì)點(diǎn)數(shù)據(jù)安全共享提供技術(shù)基礎(chǔ).區(qū)塊鏈技術(shù)具有高度透明、去中心化、去信任、集體維護(hù)(不可更改)、匿名等性質(zhì),能夠通過運(yùn)用數(shù)據(jù)加密、時(shí)間戳、分布式共識(shí)和經(jīng)濟(jì)激勵(lì)等手段,在節(jié)點(diǎn)無需互相信任的分布式系統(tǒng)中實(shí)現(xiàn)基于去中心化信用的點(diǎn)對(duì)點(diǎn)數(shù)據(jù)共享、協(xié)調(diào)與協(xié)作,為解決中心化機(jī)構(gòu)普遍存在的高成本、低效率和數(shù)據(jù)存儲(chǔ)不安全等問題提供了解決途徑[3].區(qū)塊鏈僅提供了一種安全可信的共識(shí)交易的基礎(chǔ)平臺(tái),仍缺乏適應(yīng)于能源互聯(lián)網(wǎng)中多業(yè)務(wù)形態(tài)的數(shù)據(jù)共享的技術(shù)[4-6].在能源互聯(lián)網(wǎng)中,如何融合區(qū)塊鏈與物聯(lián)網(wǎng)、信息系統(tǒng)、業(yè)務(wù)形態(tài),解決網(wǎng)絡(luò)、系統(tǒng)與業(yè)務(wù)間的去中心化的數(shù)據(jù)安全共享的問題,滿足能源互聯(lián)網(wǎng)的需求,成為了當(dāng)前急需解決的問題[7-9].
因此,本文結(jié)合區(qū)塊鏈的特征,構(gòu)建一種基于區(qū)塊鏈的數(shù)據(jù)安全共享網(wǎng)絡(luò)體系,主要包括去集中化數(shù)據(jù)統(tǒng)一命名技術(shù)、授權(quán)數(shù)據(jù)分布式存儲(chǔ)與高效分發(fā)協(xié)議等內(nèi)容,以實(shí)現(xiàn)去中心化域名解析.本文提出開放式命名索引技術(shù),并將其應(yīng)用于區(qū)塊鏈中,解決數(shù)據(jù)作為資產(chǎn)的安全統(tǒng)一標(biāo)識(shí)的問題,并在此基礎(chǔ)上構(gòu)建了基于區(qū)塊鏈的去中心化的DNS域名服務(wù)解析機(jī)制,解決了集中式的DNS受控可信的問題.
本節(jié)構(gòu)建了一種基于區(qū)塊鏈的數(shù)據(jù)安全共享網(wǎng)絡(luò)體系,如圖1所示.該體系依托于現(xiàn)有的互聯(lián)網(wǎng)架構(gòu),承載聯(lián)盟鏈或私有鏈,將數(shù)據(jù)作為資產(chǎn)進(jìn)行統(tǒng)一標(biāo)識(shí),利用區(qū)塊鏈將數(shù)據(jù)進(jìn)行分布式存儲(chǔ),通過設(shè)計(jì)高效分發(fā)協(xié)議,實(shí)現(xiàn)數(shù)據(jù)在提供者與消費(fèi)者間自主對(duì)等的信息中心網(wǎng)絡(luò)(peer to peer information centric network, P2P ICN).具體內(nèi)容如下:
1) 去集中化數(shù)據(jù)統(tǒng)一命名技術(shù)及服務(wù)
結(jié)合企業(yè)數(shù)據(jù)的規(guī)范和統(tǒng)一資源標(biāo)識(shí)符(URI)規(guī)范,基于共享信息模型(shared information datamodel, SID)建模,提出開放式數(shù)據(jù)索引命名技術(shù)(open data index naming, ODIN),為網(wǎng)絡(luò)環(huán)境下自主命名標(biāo)識(shí)和交換數(shù)據(jù)內(nèi)容索引提供一種開放性系統(tǒng),為自主開放、安全可信的數(shù)據(jù)內(nèi)容管理和知識(shí)產(chǎn)權(quán)管理提供了一個(gè)可擴(kuò)展的數(shù)據(jù)統(tǒng)一命名標(biāo)識(shí)體系,為數(shù)據(jù)提供者與消費(fèi)者間共享奠定基礎(chǔ)[10].
2) 授權(quán)數(shù)據(jù)分布式高效存儲(chǔ)
以區(qū)塊鏈為數(shù)據(jù)承載基礎(chǔ),當(dāng)數(shù)據(jù)接入時(shí),將其作為一種資產(chǎn),并對(duì)其進(jìn)行授權(quán)加密實(shí)現(xiàn)控制訪問權(quán)限的約束.同時(shí),結(jié)合業(yè)務(wù)特征與需求,在去中心化的網(wǎng)絡(luò)邊緣進(jìn)行分布式存儲(chǔ),數(shù)據(jù)緩存管理和緩存策略的問題也成為基于區(qū)塊鏈的數(shù)據(jù)間安全共享的一個(gè)難題.
3) 支持自主對(duì)等的數(shù)據(jù)高效分發(fā)協(xié)議
基于區(qū)塊鏈的數(shù)據(jù)共享本質(zhì)上就是為了實(shí)現(xiàn)一種P2P的數(shù)據(jù)對(duì)等共享網(wǎng)絡(luò),即P2P ICN.其中,數(shù)據(jù)安全傳輸過程包括基于開放式數(shù)據(jù)索引命名的底層標(biāo)識(shí)符解析過程、基于名字尋址過程與數(shù)據(jù)傳輸過程,典型的例子如:構(gòu)建去中心化的DNS域名解析服務(wù),以實(shí)現(xiàn)數(shù)據(jù)的對(duì)等可信傳輸.
本節(jié)設(shè)計(jì)了一種開放式數(shù)據(jù)索引命名機(jī)制ODIN,該機(jī)制是一種層次化的命名規(guī)則[11],類似于SID.為了融合已有單獨(dú)的鏈及新增鏈的擴(kuò)展,本文將ODIN命名方式分為一級(jí)基礎(chǔ)ODIN和多級(jí)擴(kuò)展ODIN兩種,如圖2所示.一級(jí)基礎(chǔ)ODIN解決主鏈之間的數(shù)據(jù)命名標(biāo)識(shí)的問題;多級(jí)擴(kuò)展ODIN是解決私有鏈或擴(kuò)展鏈內(nèi)部數(shù)據(jù)命名標(biāo)識(shí)的問題,以便實(shí)現(xiàn)數(shù)據(jù)的分布式緩存且提高賬本的同步效率.接下來將分別介紹二者的命名規(guī)則.
Fig. 2 ODIN naming structure圖2 ODIN命名結(jié)構(gòu)圖
2.1.1 一級(jí)基礎(chǔ)ODIN
一級(jí)ODIN的標(biāo)準(zhǔn)結(jié)構(gòu)式為
ppk:[BTC_BLOCK_SN].[BTC_TRANS_INDEX][DSS]
后綴的標(biāo)準(zhǔn)結(jié)構(gòu)式可擴(kuò)展為2種:
RESOURCE_ID#[DATA_BLOCK_SN.CHUNK_INDEX] 或#[DATA_CHUNK_INDEX].
2種命名方式的區(qū)別在于前者引入了資源標(biāo)識(shí)(RESOURCE_ID)并通過數(shù)據(jù)所在區(qū)塊編號(hào)(DATA_BLOCK_SN)和子數(shù)據(jù)塊在區(qū)塊內(nèi)的索引(CHUNK_INDEX)這樣一個(gè)二級(jí)的標(biāo)識(shí)對(duì)每一個(gè)數(shù)據(jù)塊進(jìn)行標(biāo)識(shí);而后者則是通過將所有區(qū)塊的子數(shù)據(jù)塊進(jìn)行統(tǒng)一編號(hào)后,對(duì)數(shù)據(jù)所在的子數(shù)據(jù)塊[DATA_CHUNK_INDEX]進(jìn)行標(biāo)識(shí).這里需要注意的是,后綴為命名中可以省略的部分,結(jié)構(gòu)式中‘#’字符及其后續(xù)部分也可省略,缺省情況下默認(rèn)為區(qū)塊內(nèi)的第1個(gè)子數(shù)據(jù)塊.
此外,一級(jí)基礎(chǔ)ODIN可以采用短編碼的方式表示,標(biāo)準(zhǔn)結(jié)構(gòu)式為
ppk:[REG_ORDER_INDEX][DSS].
與前一種命名的唯一區(qū)別在于將前者前綴中的登記記錄的二級(jí)索引替換為該記錄在全部ODIN注冊(cè)記錄中以注冊(cè)時(shí)間早晚排序的數(shù)字索引值(REG_ORDER_INDEX).
下面列舉出一些合法的一級(jí)ODIN命名:
2.1.2 多級(jí)擴(kuò)展ODIN
以一級(jí)ODIN為基礎(chǔ),注冊(cè)者可以利用自有的區(qū)塊鏈來擴(kuò)展自定義二級(jí)ODIN,并將二級(jí)ODIN注冊(cè)記錄批量打包后形成的新區(qū)塊的HASH關(guān)鍵字寫入上一級(jí)骨干區(qū)塊鏈獲得合法驗(yàn)證并確保唯一性.以此類推,可以形成更多級(jí)的ODIN標(biāo)識(shí).
多級(jí)ODIN的標(biāo)準(zhǔn)結(jié)構(gòu)式為
ppk:[PARENT_ODIN_PREFIX][SUB_BLOCK_SN].[SUB_TRANS_INDEX][DSS]
其中,[PARENT_ODIN_PREFIX]為對(duì)應(yīng)上級(jí)ODIN的前綴.[SUB_BLOCK_SN]和[SUB_TRANS_INDEX]為對(duì)應(yīng)子級(jí)ODIN在上級(jí)自定義區(qū)塊鏈上的登記記錄所在區(qū)塊和區(qū)塊內(nèi)記錄位置的阿拉伯?dāng)?shù)字編號(hào).后綴[DSS] (data suffix string)由上級(jí)ODIN注冊(cè)者可選并自行給出的具體數(shù)據(jù)內(nèi)容定位標(biāo)識(shí),需要自主確保具有唯一性,命名方案同上.
此外,多級(jí)ODIN自定義結(jié)構(gòu)式為
ppk:[PARENT_ODIN_PREFIX][SUB_TRANS_ID][DSS]
[SUB_TRANS_ID]為該ODIN記錄在子級(jí)區(qū)塊鏈上的唯一標(biāo)識(shí),由所屬上級(jí)ODIN標(biāo)識(shí)注冊(cè)者來定義,可以是流水編號(hào),也可以是唯一取值的字符串,需自行保證能與標(biāo)準(zhǔn)結(jié)構(gòu)式區(qū)分開且不能包含“”和“#”這2個(gè)字符.
下面列舉出一些合法的多級(jí)ODIN命名:
ODIN技術(shù)對(duì)數(shù)據(jù)統(tǒng)一命名,并通過ODIN數(shù)據(jù)庫(kù)接口提供相關(guān)服務(wù),每個(gè)ODIN操作都將按照特定的協(xié)議規(guī)范被編碼后廣播到公有鏈平臺(tái),得到共識(shí)后加入?yún)^(qū)塊,存入公有鏈.
ODIN技術(shù)是在網(wǎng)絡(luò)環(huán)境下標(biāo)識(shí)和交換數(shù)據(jù)內(nèi)容索引的一種開放性系統(tǒng),它遵從URI規(guī)范與SID建模思想,為基于數(shù)字加密貨幣區(qū)塊鏈的自主開放、安全可信的數(shù)據(jù)內(nèi)容管理和知識(shí)產(chǎn)權(quán)管理提供了一個(gè)可擴(kuò)展的框架.主要特點(diǎn)包括自主性、安全性、唯一性和永久性,具體體現(xiàn)為:
1) 自主性.ODIN 標(biāo)識(shí)符是基于去中心化的區(qū)塊鏈技術(shù),并由申請(qǐng)者自主生成并管理的一種命名標(biāo)識(shí)技術(shù),其生成和管理規(guī)則是完全開放的,沒有中心化的控制機(jī)構(gòu).除了擁有管理密鑰的申請(qǐng)者之外,其他組織和個(gè)人都無權(quán)控制和篡改.
2) 安全性.每一個(gè)ODIN 標(biāo)識(shí)符的擁有者都對(duì)應(yīng)擁有一對(duì)非對(duì)稱加密技術(shù)的公私鑰,可以通過私鑰對(duì)自主發(fā)布的數(shù)據(jù)內(nèi)容進(jìn)行簽名,接受數(shù)據(jù)內(nèi)容的個(gè)體可以通過公鑰進(jìn)行驗(yàn)證,以確保收到的數(shù)據(jù)是來源可信和不被篡改的.
3) 唯一性.結(jié)合公有區(qū)塊鏈,ODIN 標(biāo)識(shí)符能對(duì)任何數(shù)據(jù)內(nèi)容對(duì)象(如文本、圖片、聲音、數(shù)據(jù)、影像、軟件等)的開放訪問索引進(jìn)行唯一標(biāo)識(shí),使數(shù)據(jù)內(nèi)容對(duì)象能被人們準(zhǔn)確地識(shí)別和提取.
4) 永久性.ODIN 標(biāo)識(shí)符一旦生成就將永久不變,不隨其所標(biāo)識(shí)的數(shù)據(jù)內(nèi)容對(duì)象的持有者或存儲(chǔ)地址等屬性的變更而改變.
ODIN技術(shù)的運(yùn)行機(jī)制如圖3所示.
開放數(shù)據(jù)索引命名服務(wù)運(yùn)行機(jī)制主要包括2步;
1) 每個(gè)有意開放數(shù)據(jù)的個(gè)體(data owner)可以通過開源的ODIN注冊(cè)客戶端來自主注冊(cè)獲得一個(gè)ODIN號(hào)(成為ODIN注冊(cè)者,即ODIN Register),以此為前綴可以為其開放的每一份數(shù)據(jù)資源編制一個(gè)包含本身ODIN 前綴的且增加了后綴的ODIN 標(biāo)識(shí)串,并將該ODIN標(biāo)識(shí)串索引到數(shù)據(jù)資源的元數(shù)據(jù)和URL 上,這樣ODIN 就成為數(shù)據(jù)資源的一部分,始終與該數(shù)字資源共存;
2) 已被開放的這些數(shù)據(jù)資源的ODIN 記錄、元數(shù)據(jù)及其URL 信息可以JSON編碼的形式保存在該ODIN注冊(cè)者的數(shù)據(jù)庫(kù)內(nèi),這些被集中存貯起來的資源就形成一個(gè)ODIN資源標(biāo)識(shí)庫(kù).
當(dāng)用戶根據(jù)ODIN標(biāo)識(shí)串尋找一個(gè)數(shù)據(jù)資源或有關(guān)這一資源的相關(guān)信息時(shí),查詢請(qǐng)求就會(huì)通過開源的ODIN解析庫(kù)在區(qū)塊鏈上進(jìn)行定位,然后被傳送到該ODIN 注冊(cè)者所登記的訪問點(diǎn)(access point, AP)上進(jìn)行解析并得到該數(shù)據(jù)資源的元數(shù)據(jù)描述和實(shí)際數(shù)據(jù)URL鏈接.ODIN注冊(cè)者可以完全開放數(shù)據(jù)資源訪問權(quán),也可以通過適當(dāng)?shù)淖远x機(jī)制讓用戶獲取數(shù)據(jù)資源訪問權(quán),如通過訂購(gòu)、資源傳遞、按瀏覽付費(fèi)或者預(yù)印本付費(fèi)等方式獲得,為日后的授權(quán)數(shù)據(jù)認(rèn)證奠定基礎(chǔ).
Fig. 3 ODIN operation mechanism圖3 ODIN運(yùn)行機(jī)制示意圖
Fig. 4 ODIN based decentralized DNS domain name resolution process圖4基于ODIN的去中心化DNS域名解析流程
ODIN標(biāo)識(shí)運(yùn)行機(jī)制,為數(shù)據(jù)資產(chǎn)提供了統(tǒng)一命名的技術(shù)手段.每個(gè)數(shù)據(jù)便可以當(dāng)做一個(gè)數(shù)據(jù)提供服務(wù)來進(jìn)行請(qǐng)求,而ODIN便是類似于域名解析的地址.為此,通過ODIN標(biāo)識(shí)訪問數(shù)據(jù)塊的過程,便形成了一種基于ODIN的去中心化的DNS域名解析過程[6],如圖4所示,具體的解析流程如下:
步驟1. 數(shù)據(jù)請(qǐng)求者向ODIN客戶端發(fā)出以O(shè)DIN為標(biāo)識(shí)的DNS請(qǐng)求.
步驟2. 客戶端收到后首先就本塊中的數(shù)據(jù)庫(kù)檢索此域名,若檢索不到即向最近的存有完整區(qū)塊的節(jié)點(diǎn)請(qǐng)求檢索,仍檢索不到則說明該域名不合法.若檢索到域名,則向其指向的數(shù)據(jù)源所在ODIN客戶端檢索下一級(jí)域名,直到不能檢索為止.
步驟3,將最終得到的索引數(shù)據(jù)返回給數(shù)據(jù)請(qǐng)求者,請(qǐng)求者對(duì)其解析,得到元數(shù)據(jù)及URL,再利用P2P的對(duì)等傳輸協(xié)議訪問數(shù)據(jù).
本節(jié)基于工作組先前的工作基礎(chǔ)[10],利用5臺(tái)服務(wù)器搭建擴(kuò)展鏈, 并與公有鏈相鏈接構(gòu)成實(shí)驗(yàn)環(huán)境,將一級(jí)ODIN標(biāo)識(shí)注冊(cè)在公有鏈上,多級(jí)擴(kuò)展ODIN存儲(chǔ)在擴(kuò)展鏈上進(jìn)行原型系統(tǒng)驗(yàn)證,并針對(duì)域名解析效率進(jìn)行了統(tǒng)計(jì)分析.
如圖5所示,ODIN既支持開放式的命名方式,也對(duì)命名提出了部分約束條約,以實(shí)現(xiàn)ODIN域名的注冊(cè)與管理,如圖5中步驟1與步驟2,以支持本地化的ODIN注冊(cè)、管理與共享.其他人可以根據(jù)查詢已有的ODIN命名標(biāo)識(shí),該標(biāo)識(shí)便可以當(dāng)做域名,供人查詢與解析,以實(shí)現(xiàn)去中心化的可信的DNS域名解析能力.
如圖6所示,呈現(xiàn)基于ODIN的去中心化DNS域名解析成功訪問內(nèi)容的視圖,其他數(shù)據(jù)便可以依托于此標(biāo)識(shí)進(jìn)行安全驗(yàn)證,確保本標(biāo)識(shí)下的數(shù)據(jù)來源可信.
Fig. 5 ODIN registration process based on block chain圖5 基于區(qū)塊鏈的ODIN注冊(cè)過程
Fig. 6 ODIN based decentralized DNS domain name resolution圖6 基于ODIN的去中心化DNS域名解析
同時(shí),本文也根據(jù)用戶量與DNS解析的訪問效率進(jìn)行了時(shí)間驗(yàn)證,當(dāng)用戶逐步增大,以O(shè)DIN為基礎(chǔ)的DNS域名增長(zhǎng)時(shí),隨著用戶的增長(zhǎng),訪問時(shí)間也越來越大,但是可以發(fā)現(xiàn)用戶量與DNS域名之間是有平衡點(diǎn)的,即當(dāng)一定用戶量緩存域名時(shí),域名在一定量?jī)?nèi)訪問效率較高,一旦超過這個(gè)平衡,效率呈現(xiàn)下降趨勢(shì).如圖7所示,區(qū)塊數(shù)對(duì)解析速度的影響,一開始隨著用戶增加,查詢速度增長(zhǎng)較快,之后增長(zhǎng)放緩,有一定波動(dòng);解析用時(shí)始終在200 ms以內(nèi).
Fig. 7 The influence between users block and parsing speed圖7 DNS域名與用戶塊間解析速度
本文結(jié)合區(qū)塊鏈的去中心化、自主對(duì)等難以更改的技術(shù)特征,1)提出基于區(qū)塊鏈的數(shù)據(jù)安全共享網(wǎng)絡(luò)體系,主要包括去集中化數(shù)據(jù)統(tǒng)一命名技術(shù)及服務(wù)、授權(quán)數(shù)據(jù)分布式高效存儲(chǔ)和支持自主對(duì)等的數(shù)據(jù)高效分發(fā)協(xié)議;2)設(shè)計(jì)了開放式數(shù)據(jù)索引命名結(jié)構(gòu),含一級(jí)基礎(chǔ)ODIN和多級(jí)擴(kuò)展ODIN,且闡述了開放數(shù)據(jù)索引命名運(yùn)行機(jī)制;3)基于ODIN技術(shù),設(shè)計(jì)了基于ODIN的去中心化DNS的域名協(xié)議模塊;4)針對(duì)部分功能進(jìn)行驗(yàn)證并進(jìn)行性能的分析.下一步工作中,將針對(duì)數(shù)據(jù)分布式存儲(chǔ)及域名解析效率進(jìn)行優(yōu)化.