李國(guó)良 邵思豪
(遼寧省大數(shù)據(jù)管理中心(遼寧省信息中心) 沈陽(yáng) 110002)
黨的十八大以來(lái),黨中央、國(guó)務(wù)院要求深入推進(jìn)“互聯(lián)網(wǎng)+政務(wù)服務(wù)”[1],全面推進(jìn)“一網(wǎng)通辦”[2],加快推進(jìn)信息數(shù)據(jù)共享[3],加快電子證照庫(kù)建設(shè)及電子證照管理[4],力求打通數(shù)據(jù)壁壘,全面優(yōu)化營(yíng)商環(huán)境建設(shè).目前,全國(guó)各地均已建成覆蓋省市兩級(jí)的電子證照系統(tǒng),為減少企業(yè)提交辦事材料、為數(shù)據(jù)多跑路提供了重要的應(yīng)用支撐.
然而,電子證照建設(shè)應(yīng)用過(guò)程中存在的問(wèn)題也日益顯現(xiàn),包括:1)證照信息的安全可信問(wèn)題.電子證照存儲(chǔ)在數(shù)據(jù)中心服務(wù)器中,當(dāng)受到攻擊時(shí)將導(dǎo)致證照信息被篡改或刪除,無(wú)法保障數(shù)據(jù)安全存儲(chǔ)和可信共享.2)電子證照系統(tǒng)操作過(guò)程的行為審計(jì)、精準(zhǔn)授權(quán)問(wèn)題.在電子證照管理中存在拖延上傳、證照信息有誤等問(wèn)題,導(dǎo)致數(shù)據(jù)不全面、不準(zhǔn)確.此外,管理員不規(guī)范操作也會(huì)導(dǎo)致證照信息丟失、篡改、泄露等.3)證照驗(yàn)證過(guò)程中的隱私保護(hù)問(wèn)題.在電子證照驗(yàn)證場(chǎng)景中存在持證者隱私信息被過(guò)度暴露的風(fēng)險(xiǎn).
本文將區(qū)塊鏈技術(shù)與電子證照相結(jié)合,借助區(qū)塊鏈的去中心化、可追溯、不可篡改等特性,以及智能合約和零知識(shí)證明等關(guān)鍵技術(shù),解決了無(wú)法跨部門協(xié)同提供證明服務(wù),電子證照操作記錄無(wú)法安全存儲(chǔ)、可信共享、存證追溯,無(wú)法進(jìn)行數(shù)據(jù)應(yīng)用授權(quán)、精準(zhǔn)授權(quán)驗(yàn)證、行為審計(jì)等問(wèn)題.并基于本文提出的技術(shù)方案,分析重點(diǎn)應(yīng)用場(chǎng)景.最后通過(guò)實(shí)驗(yàn)驗(yàn)證了本文方案具備可行性,且提升了安全性.
自2008年比特幣問(wèn)世以來(lái)[5],因區(qū)塊鏈去中心化、集體維護(hù)、不可篡改、抗抵賴和可追溯等技術(shù)優(yōu)勢(shì),受到了工業(yè)界和學(xué)術(shù)界的廣泛關(guān)注.按照對(duì)用戶的開放程度,區(qū)塊鏈可分為3類:公有、私有和聯(lián)盟[6].區(qū)塊鏈技術(shù)發(fā)展可大致分為以下3個(gè)階段.1)區(qū)塊鏈1.0:可編程貨幣,代表為2008年比特幣的出現(xiàn).2)區(qū)塊鏈2.0:智能合約,代表為2015年以太坊的出現(xiàn)[7].3)區(qū)塊鏈3.0:2018年以來(lái),區(qū)塊鏈技術(shù)廣泛應(yīng)用在金融交易、物聯(lián)網(wǎng)和數(shù)據(jù)共享等領(lǐng)域[8],以Hyperledger為代表.
區(qū)塊鏈技術(shù)本質(zhì)上是對(duì)數(shù)字事件在分布式數(shù)據(jù)庫(kù)上創(chuàng)建無(wú)法篡改的記錄——分布式賬本[9].網(wǎng)絡(luò)中的參與者根據(jù)共識(shí)原則來(lái)制約和協(xié)商對(duì)賬本記錄的更新,沒(méi)有第三方仲裁機(jī)構(gòu)參與.分布式賬本中的每條記錄都有1個(gè)時(shí)間戳和唯一的密碼簽名,使其成為網(wǎng)絡(luò)中所有交易的可審計(jì)歷史記錄.哈希算法和Merkle樹結(jié)構(gòu)確保數(shù)據(jù)不被篡改.
共識(shí)機(jī)制是分布式系統(tǒng)的核心[10],互相不信任的節(jié)點(diǎn)通過(guò)預(yù)設(shè)機(jī)制最終達(dá)到數(shù)據(jù)一致性稱為共識(shí).共識(shí)機(jī)制的目標(biāo)為:1)一致性,所有誠(chéng)實(shí)節(jié)點(diǎn)所保存的區(qū)塊鏈前綴相同;2)有效性,由誠(chéng)實(shí)節(jié)點(diǎn)發(fā)布的消息將被所有誠(chéng)實(shí)節(jié)點(diǎn)記錄到自己的區(qū)塊鏈中.目前主要的共識(shí)機(jī)制有權(quán)益型(工作量證明[11]和股權(quán)證明[12-13]等)、容錯(cuò)型(實(shí)用拜占庭容錯(cuò)[14]和授權(quán)拜占庭容錯(cuò)[15]等)、選舉型(Ripple[16-18]和Raft[19]等)3種.共識(shí)機(jī)制在電子證照系統(tǒng)中應(yīng)用于證照的可信應(yīng)用,確保“一數(shù)一源”.
智能合約是傳統(tǒng)合約的數(shù)字化版本[20].“智能合約就是執(zhí)行合約條款的可計(jì)算交易協(xié)議”[21],可在滿足其寫入條件時(shí)自行執(zhí)行[22].智能合約須是合同條款[23],全生命周期包括生成、發(fā)布、執(zhí)行3部分[9].智能合約作為在區(qū)塊鏈上自動(dòng)執(zhí)行的特殊程序[24],在證照系統(tǒng)中應(yīng)用于證照的授權(quán)使用及到期自動(dòng)失效等場(chǎng)景,確保業(yè)務(wù)的可靠運(yùn)行.
超級(jí)賬本HyperLedger尤其是其中的Fabric是全球最流行的許可鏈技術(shù)[25],支持多種客戶端編程和智能合約語(yǔ)言,如Go,Java等.HyperLedger是一個(gè)不可變的共享賬本,支持多個(gè)不同的參與方加入同一通道來(lái)共享同一個(gè)賬本.通道間的數(shù)據(jù)是隔離的;通道中數(shù)據(jù)默認(rèn)是不加密的,可以被通道成員看到;但私有化數(shù)據(jù)默認(rèn)是加密的,只有得到授權(quán)的通道成員才能解密數(shù)據(jù).
基于區(qū)塊鏈可追溯和不可篡改的特性,可解決證照信息及操作記錄的安全存儲(chǔ)、可信共享、存證追溯問(wèn)題.基于智能合約和零知識(shí)證明來(lái)保護(hù)個(gè)人及企業(yè)的證照隱私.基于區(qū)塊鏈分布式、各節(jié)點(diǎn)平權(quán)的特點(diǎn),可在各部門分別搭建節(jié)點(diǎn)服務(wù)器,獲取區(qū)塊鏈全量數(shù)據(jù),實(shí)現(xiàn)證照數(shù)據(jù)獨(dú)立發(fā)布和驗(yàn)證.
基于區(qū)塊鏈技術(shù)賦能電子證照系統(tǒng)建設(shè)應(yīng)用,將有利于提高證照的存在性證明、變化過(guò)程證明、查驗(yàn)證明等[26-27]能力.借助區(qū)塊鏈的去中心化同步記賬、交易身份認(rèn)證、數(shù)據(jù)加密和數(shù)據(jù)不可篡改等特征,可跨部門提供證照證明服務(wù),保障了證照數(shù)據(jù)安全性、完整性、可靠性.既確保了企業(yè)和法人隱私安全,又提高了政務(wù)服務(wù)質(zhì)量和效率.
區(qū)塊鏈+電子證照具有如下幾點(diǎn)優(yōu)勢(shì):
1) 深化跨部門互信.
將電子證照數(shù)據(jù)寫入數(shù)據(jù)庫(kù)時(shí),同步會(huì)往區(qū)塊鏈平臺(tái)寫入1個(gè)節(jié)點(diǎn)數(shù)據(jù).根據(jù)區(qū)塊鏈平權(quán),節(jié)點(diǎn)數(shù)據(jù)只能寫入、不能修改和刪除的特點(diǎn),確保區(qū)塊節(jié)點(diǎn)數(shù)據(jù)的不可篡改.在每次調(diào)用電子證照時(shí),系統(tǒng)都會(huì)對(duì)數(shù)據(jù)進(jìn)行哈希計(jì)算,并與區(qū)塊鏈節(jié)點(diǎn)上的哈希值進(jìn)行比較,保障證照數(shù)據(jù)的完整性和可信性.
2) 電子證照調(diào)用過(guò)程可追溯.
區(qū)塊鏈的數(shù)據(jù)結(jié)構(gòu)如圖1所示:不同區(qū)塊節(jié)點(diǎn)根據(jù)哈希值首尾相連,如果當(dāng)前區(qū)塊數(shù)據(jù)造假會(huì)導(dǎo)致前一區(qū)塊作出修改,然后迭代修改前一區(qū)塊,必然會(huì)導(dǎo)致當(dāng)前節(jié)點(diǎn)的所有前驅(qū)節(jié)點(diǎn)數(shù)據(jù)都被迫作出造假修改,這在區(qū)塊鏈平臺(tái)的共識(shí)機(jī)制保護(hù)和約束下是很難做到的.因此,通過(guò)這種機(jī)制可確保寫入?yún)^(qū)塊鏈的數(shù)據(jù)不可篡改且可溯源.
3) 智能合約重構(gòu)電子證照業(yè)務(wù)應(yīng)用.
智能合約不僅是一個(gè)自動(dòng)執(zhí)行的計(jì)算機(jī)程序還是一個(gè)系統(tǒng)參與者,它既可接收和存儲(chǔ)信息,也可向外發(fā)送信息,還可臨時(shí)保管資產(chǎn),并總是按照事先的規(guī)則,不依賴第三方執(zhí)行操作,進(jìn)行可追蹤且不可逆轉(zhuǎn)的可信交易.安全性和交易成本方面均優(yōu)于傳統(tǒng)合約算法.
4) 可監(jiān)管的隱私保護(hù).
證照數(shù)據(jù)作為個(gè)人或企業(yè)的基本數(shù)據(jù)之一,具有隱私保護(hù)需求[28].同時(shí),部門頒發(fā)的證照信息屬于政務(wù)信息,不應(yīng)被其他部門全部知曉,需進(jìn)行可監(jiān)管的隱私保護(hù).可通過(guò)零知識(shí)證明、數(shù)據(jù)加密等隱私保護(hù)技術(shù)對(duì)區(qū)塊鏈記錄的信息進(jìn)行處理,控制證照信息的知悉范圍來(lái)保護(hù)隱私并進(jìn)行監(jiān)管.
圖1 區(qū)塊鏈的數(shù)據(jù)結(jié)構(gòu)
本著可靠、穩(wěn)定、可拓展、可信與安全的原則,系統(tǒng)按照統(tǒng)一規(guī)劃、分層構(gòu)建來(lái)設(shè)計(jì)實(shí)現(xiàn).總體架構(gòu)分為4層,分別是展示訪問(wèn)層、系統(tǒng)應(yīng)用層、區(qū)塊支撐層、共享交換層.總體架構(gòu)如圖2所示.
圖2 總體架構(gòu)設(shè)計(jì)
1) 展示訪問(wèn)層.
主要面向3大類用戶,如表1所示,包括社會(huì)公眾、業(yè)務(wù)應(yīng)用和管理人員.
表1 用戶分類及用戶功能
展示訪問(wèn)層包含政務(wù)服務(wù)網(wǎng)、行政審批系統(tǒng)、委辦局業(yè)務(wù)系統(tǒng)等需和電子證照系統(tǒng)集成的業(yè)務(wù)系統(tǒng).用戶通過(guò)上述系統(tǒng)訪問(wèn)電子證照系統(tǒng),獲取統(tǒng)一的數(shù)據(jù)接口服務(wù).數(shù)據(jù)接口主要分為2類:一類是面向互聯(lián)網(wǎng)提供公眾服務(wù)接口,另一類是為部門提供數(shù)據(jù)共享接口.
2) 系統(tǒng)應(yīng)用層.
應(yīng)用層主要?jiǎng)澐譃?個(gè)子系統(tǒng):一個(gè)是面向業(yè)務(wù)單位使用的證照管理系統(tǒng);另一個(gè)是面向數(shù)據(jù)采集和共享的證照共享系統(tǒng).
3) 區(qū)塊支撐層.
通過(guò)區(qū)塊支撐層,賦能電子證照管理和共享系統(tǒng),針對(duì)電子證照應(yīng)用場(chǎng)景,利用可信數(shù)據(jù)源管理機(jī)制確保數(shù)據(jù)安全,利用數(shù)字身份(包括人員身份和網(wǎng)絡(luò)設(shè)備身份)鎖定證照數(shù)據(jù)責(zé)任主體,利用區(qū)塊鏈存證溯源,確保數(shù)據(jù)不被篡改.
此外,還包含目錄索引庫(kù)、電子證照庫(kù)、審計(jì)日志庫(kù),涉及數(shù)據(jù)的存儲(chǔ)和管理.電子證照庫(kù)是本系統(tǒng)基礎(chǔ),主要包括電子證照、電子材料、批文等信息.主要使用讀寫分離、表分區(qū)、分表設(shè)計(jì)、分布式存儲(chǔ)等技術(shù)提升性能.
4) 共享交換層.
共享交換層借助省數(shù)據(jù)共享平臺(tái)和電子政務(wù)云平臺(tái),實(shí)現(xiàn)和省直/地市的電子證照系統(tǒng)共享證照數(shù)據(jù)的功能.
平臺(tái)基于超級(jí)賬本、Hyperledger和高并發(fā)審計(jì)側(cè)鏈,可運(yùn)行在云端或本地服務(wù)器上,利用關(guān)系型數(shù)據(jù)庫(kù)、對(duì)象存儲(chǔ)等作為基礎(chǔ)設(shè)施支撐.
3.2.1 自適應(yīng)上鏈算法
第①行:遍歷每個(gè)數(shù)據(jù)提供方;第②行:由數(shù)據(jù)提供方client提供原始數(shù)據(jù);第③行:對(duì)原始數(shù)據(jù)進(jìn)行清洗預(yù)處理,得到清洗后數(shù)據(jù)clean_data;第④行:對(duì)清洗后數(shù)據(jù)clean_data進(jìn)行結(jié)構(gòu)化處理,得到結(jié)構(gòu)化數(shù)據(jù)stru_data;第⑤行:對(duì)結(jié)構(gòu)化數(shù)據(jù)stru_data加密處理,得到數(shù)據(jù)data;第⑥行:數(shù)據(jù)data在當(dāng)前網(wǎng)絡(luò)進(jìn)行流通;第⑦行:創(chuàng)建新區(qū)塊blocknode;第⑧行:將數(shù)據(jù)data填入?yún)^(qū)塊blocknode;第⑨行:判斷主鏈?zhǔn)欠竦拓?fù)載;第⑩行:若主鏈低負(fù)載,則將blocknode加入主鏈;第~行:若主鏈高負(fù)載,則將blocknode加入側(cè)鏈;第行:上鏈算法結(jié)束.
算法1.自適應(yīng)上鏈算法.
輸入:clientSet;/*所有數(shù)據(jù)提供方*/
輸出:(mainchain,sidechain)./*更新后的主鏈和側(cè)鏈*/
① FOR eachclientbelongs toclientSet
/*遍歷*/
②raw_data=produce(client);
/*原始數(shù)據(jù)*/
③clean_data=clean(raw_data);
/*數(shù)據(jù)清洗*/
④stru_data=structure(clean_data);
/*結(jié)構(gòu)化*/
⑤data=encrypt(stru_data);
/*數(shù)據(jù)加密*/
⑥currentnet.flow(data);
/*在當(dāng)前網(wǎng)絡(luò)進(jìn)行流通*/
⑦blocknode=newblock();
⑧blocknode.add(data);
/*將data填入?yún)^(qū)塊*/
⑨ IFislowload(mainchain);
/*判斷主鏈低負(fù)載*/
⑩mainchain.add(blocknode);
3.2.2 審計(jì)側(cè)鏈
審計(jì)側(cè)鏈?zhǔn)菫楦卟l(fā)場(chǎng)景下的自適應(yīng)審計(jì)而設(shè)計(jì).這是一個(gè)中心化系統(tǒng),實(shí)現(xiàn)對(duì)區(qū)塊鏈交易客戶端簽名、交易發(fā)起、校驗(yàn)、打包成區(qū)塊、區(qū)塊哈希寫入母鏈等操作.
審計(jì)側(cè)鏈用戶使用母鏈的區(qū)塊頭哈希進(jìn)行簽名驗(yàn)證,使審計(jì)側(cè)鏈雖采用了中心化架構(gòu),仍可實(shí)現(xiàn)鏈上數(shù)據(jù)的不可篡改和抗抵賴.
3.2.3 電子證照的安全存儲(chǔ)與隱私保護(hù)
通過(guò)主鏈和側(cè)鏈上的智能合約將電子證照存儲(chǔ)在區(qū)塊鏈上,防止其內(nèi)容被篡改,達(dá)到數(shù)據(jù)安全存儲(chǔ)和隱私保護(hù)目的.
新增證照則將更新的證照保護(hù)在鏈下的數(shù)據(jù)庫(kù)中,將證照指紋(哈希值)保存在鏈上的智能合約中.如果篡改數(shù)據(jù)則改變相應(yīng)的哈希值,通過(guò)調(diào)用智能合約會(huì)發(fā)現(xiàn)與鏈上哈希值不相等,便無(wú)法執(zhí)行篡改操作,確保數(shù)據(jù)的安全存儲(chǔ).同時(shí),在算法執(zhí)行過(guò)程中,數(shù)據(jù)均加密存儲(chǔ),即使被泄露也很難還原,提高了隱私保護(hù)效果.
證照新增流程見算法2.第①行:遍歷每個(gè)要新增的電子證照l(shuí)i;第②行:權(quán)威節(jié)點(diǎn)AN首先生成隨機(jī)密鑰rand_key用于電子證照的AES加密;第③行:用AES算法對(duì)證照l(shuí)i加密,加密后的結(jié)果為aes_li;第④行:用sha256算法求電子證照的哈希值,哈希值保存為sha_li; 第⑤行:用sha256算法求加密后電子證照aes_li的哈希值,結(jié)果保存為sha_aes_li;第⑥行:利用[電子證照l(shuí)i、電子證照哈希值sha_li,加密后電子證照哈希值sha_aes_li]提取其他有用屬性;第⑦行:將[加密電子證照aes_li,加密電子證照哈希值sha_aes_li,和其他證照信息other_attri]加入電子證照數(shù)據(jù)庫(kù)DB中,并返回該license在數(shù)據(jù)庫(kù)DB中存儲(chǔ)地址li_DBaddr;第⑧行:用橢圓曲線算法對(duì)[電子證照身份信息sta_ID、證照編號(hào)lics_ID、電子證照的哈希值sha_li,加密電子證照的哈希值sha_aes_li]進(jìn)行數(shù)字簽名,得到數(shù)字簽名結(jié)果sig_li;第⑨行:將數(shù)字簽名結(jié)果sig_li通過(guò)RESTFul Service發(fā)送到智能合約SC,SC收到后從簽名中恢復(fù)公鑰publickey信息,與SC中預(yù)存的公鑰進(jìn)行比較;第⑩行:如果二者相同說(shuō)明證照新增流程合法,則在合約SC中添加[證照編號(hào)li_ID,證照版本li_ver,證照在數(shù)據(jù)庫(kù)DB中存儲(chǔ)地址li_DBaddr、電子證照的哈希值sha_li、時(shí)間戳time])等信息.電子證照更新算法與新增算法類似,不同之處在于權(quán)威節(jié)點(diǎn)AN不重新生成rand_key,而是使用第1次新增該證照時(shí)創(chuàng)建的rand_key.
算法2.證照新增算法.
輸入:licenseSet;/*所有要新增的電子證照*/
輸出:(DB,SC)./*更新后的數(shù)據(jù)庫(kù)和智能合約*/
① FOR eachlibelongs tolicenseSet
/*遍歷*/
②rand_key=producekey(AN);
/*生成隨機(jī)密鑰*/
③aes_li=AES(li,rand_key);
/*AES算法加密*/
④sha_li=SHA(li);
/*求電子證照的哈希值*/
⑤sha_aes_li=SHA(aes_li);
/*求加密后證照的哈希*/
⑥other_attri=extract(li,sha_li,
sha_aes_li);
⑦li_DBaddr=DB.add(aes_li,sha_aes_li,
other_attri);/*加入數(shù)據(jù)庫(kù)*/
⑧sig_li=ECCSig(sta_ID,li_ID,
sha_li,sha_aes_li);
⑨ IFSC.checkOwner(sig_li,sta_ID)
/*檢驗(yàn)身份*/
⑩SC.addmap(li_ID,li_ver,li_DBaddr,
sha_li,time);/*在合約SC中添
加證照相關(guān)信息*/
3.2.4 電子證照的可信共享與存證追溯
電子證照的可信共享是指在部門之間或部門與外部之間,通過(guò)智能合約、數(shù)據(jù)庫(kù)技術(shù)、公鑰加密、對(duì)稱加密等技術(shù)實(shí)現(xiàn)可信證照數(shù)據(jù)共享.
證照共享算法如算法3所示.第①②行:發(fā)送方權(quán)威節(jié)點(diǎn)ANsend,使用私鑰Pri_K_send對(duì)[要分享的證照編號(hào)li_ID,接收方權(quán)威節(jié)點(diǎn)ANrecv_ID等]通過(guò)ECC橢圓曲線算法進(jìn)行數(shù)字簽名,得到sig1并發(fā)送給智能合約;第③行:智能合約SC收到請(qǐng)求后,檢查發(fā)送方ANsend簽名,用ANrecv的公鑰Pub_K_send解簽名sig1,驗(yàn)證發(fā)送方是否是ANSend;第④行:檢查通過(guò)后,將接受方ANrecv_ID信息和待分享證照l(shuí)i_ID寫入合約分享列表shareANList;第⑥⑦行:接收方ANrecv使用私鑰Pri_K_recv對(duì)要接收證照編號(hào)li_ID和ANrecv的ID信息進(jìn)行簽名,得到sig2并發(fā)送給智能合約SC;第⑧行:SC收到請(qǐng)求后,對(duì)接收方ANrecv進(jìn)行簽名檢查,用ANrecv的公鑰Pub_K_recv解簽名sig2,驗(yàn)證是否確實(shí)ANrecv發(fā)送;第⑧行簽名檢查成功后,第⑨行進(jìn)一步檢查,SC用sig2還原ANrecv[發(fā)送方的li_ID和接收方ANrecv_ID],與第④行SC在shareANList已存信息進(jìn)行對(duì)比,確定是ANsend將共享li_ID發(fā)送給ANrecv.第⑨行檢查通過(guò)后,第⑩行智能合約SC發(fā)送[待分享電子證照的ID、哈希值和待分享證照DB地址li_DBaddr、證照哈希值sha_li]給ANrecv;第行:ANrecv根據(jù)從合約中獲取的證照l(shuí)i在DB中的存儲(chǔ)地址li_DBaddr,進(jìn)而從DB數(shù)據(jù)庫(kù)中獲取加密的證照aes_li,ANrecv通過(guò)請(qǐng)求將ANrecv的ID和待分享證照編號(hào)li_ID發(fā)送給ANsend,獲得加密的證照aes_li的解密密鑰;第行:ANrecv將[ANrecv_ID,li_ID]發(fā)送給ANsend,請(qǐng)求獲得解密密鑰rand_key;第行:用智能合約SC檢查行信息的合法性;若合法,則執(zhí)行行,ANsend利用智能合約獲取ANrecv的公鑰Pub_K_recv,用Pub_K_recv對(duì)rand_key進(jìn)行橢圓曲線加密,并發(fā)送給ANrecv;第行:ANrecv收到ANsend的數(shù)據(jù)后,使用私鑰Pri_K_recv進(jìn)行解密得到rand_key,再用rand_key對(duì)加密電子證照aes_li進(jìn)行解密,得到原始電子證照l(shuí)i.最終ANsend成功地將證照內(nèi)容li共享給ANrecv,實(shí)現(xiàn)了可信共享與存證追溯.
算法3.證照共享算法.
輸入:(li_ID,ANsend,ANrecv);/*待分享電子證照編號(hào)、發(fā)送方、接收方*/
輸出:li./*要共享的證照信息*/
①sig1=ECCSig(Pri_K_send,li_ID,
ANrecv_ID);
②ANsendsend [ANrecv_ID,sig1]→SC;
③ IFSC.checkOwner(sig1,ANsend_ID)
④shareANList.add(ANrecv_ID,li_ID);
⑤ END IF
⑥sig2=ECCSig(Pri_K_recv,li_ID,
ANrecv_ID);
⑦ANrecvsend[ANrecv_ID,sig2]→SC;
⑧ IFSC.checkOwner(sig2,ANrecv_ID)
⑨ IFSC.checkShareList(sig2,ANrecv_ID)
⑩SCsend [li_ID,li_DBaddr,sha_li]
→ANrecv;
req]→ANsend;
li_ID)
rand_key);
ANrecv;
en_r_key);
基于區(qū)塊鏈可追溯和不可篡改的特性,可解決數(shù)據(jù)安全可信問(wèn)題.業(yè)務(wù)系統(tǒng)產(chǎn)生的電子證照數(shù)據(jù)在寫入數(shù)據(jù)庫(kù)時(shí),同步向區(qū)塊鏈平臺(tái)寫入1個(gè)節(jié)點(diǎn)數(shù)據(jù).證照產(chǎn)生后會(huì)有變更、年檢、注銷、廢止等狀態(tài).區(qū)塊鏈對(duì)證照變更申請(qǐng)、審核人員、審核結(jié)果、審核時(shí)間等信息記鏈,以對(duì)證照進(jìn)行全過(guò)程管理.每次訪問(wèn)或調(diào)用證照數(shù)據(jù)時(shí)都將數(shù)據(jù)庫(kù)中的數(shù)據(jù)進(jìn)行哈希計(jì)算,并與區(qū)塊鏈節(jié)點(diǎn)上的哈希值比較,確保證照數(shù)據(jù)的完整性和可信性.
授權(quán)應(yīng)用點(diǎn)主要包括:1)當(dāng)電子證照到期時(shí),智能合約自動(dòng)執(zhí)行,將證照狀態(tài)改為無(wú)效狀態(tài),規(guī)避過(guò)期證照使用問(wèn)題;2)根據(jù)證照類型及業(yè)務(wù)屬性,將共享方式分為無(wú)條件共享、有條件共享和不予共享.對(duì)于有條件共享的,可將共享?xiàng)l件固化為智能合約,證照被調(diào)用訪時(shí)按智能合約自動(dòng)執(zhí)行.
如圖3所示,電子證照應(yīng)用授權(quán)智能合約應(yīng)用過(guò)程如下:1)首先電子證照服務(wù)提供方將電子證照共享目錄上鏈,上鏈內(nèi)容包含證照共享服務(wù)目錄列表;2)數(shù)據(jù)使用方申請(qǐng)電子證照共享資源;3)數(shù)據(jù)提供方審核數(shù)據(jù)使用方的調(diào)用申請(qǐng),建立智能合約,申請(qǐng)審核過(guò)程可追蹤且不可逆轉(zhuǎn);4)調(diào)用申請(qǐng)通過(guò)審核后可獲取共享資源.
圖3 證照共享智能合約過(guò)程
電子證照應(yīng)用過(guò)程的上鏈內(nèi)容包含持證者、證件號(hào)碼、證照類型、用途、調(diào)用時(shí)間等,從而建立應(yīng)用過(guò)程的分布式賬本.賬本中每條記錄都有時(shí)間戳和唯一的密碼簽名,使賬本成為所有交易的可審計(jì)歷史記錄,且數(shù)據(jù)不可篡改,便于應(yīng)用審計(jì).
利用零知識(shí)證明技術(shù)在提供完備證照驗(yàn)證功能的同時(shí),保障隱私不被泄露.其具備2點(diǎn)優(yōu)勢(shì):1)匿名性.不會(huì)向驗(yàn)證方透露除擁有證照之外的額外信息,可不用明示交易者多余信息,即可證明擁有相關(guān)證照.2)不可鏈接性.當(dāng)1個(gè)人申請(qǐng)多個(gè)電子證照時(shí),也不泄露這些證照歸屬同一身份,防止持證方的精準(zhǔn)用戶畫像被泄露.
在傳統(tǒng)電子證照應(yīng)用場(chǎng)景中,假設(shè)持證方Alice需要向Bob(商店職員)證明她有車管所發(fā)給她的駕照.Alice是持證方用戶,車管所是頒發(fā)者,商店職員Bob是驗(yàn)證方.Alice為了向Bob證明她有駕駛證,Alice可以出示車管所頒發(fā)的電子證照.這樣Bob就可以看到Alice的名字、地址、年齡等,無(wú)形中泄露了Alice的隱私.
如圖4所示.Alice可使用區(qū)塊鏈生成一個(gè)“零知識(shí)證明”駕駛證的電子證照,該電子證照只顯示她擁有有效的駕照,沒(méi)有額外信息.在“零知識(shí)證明”驗(yàn)證過(guò)程中:1)Bob(商店職員)只知道Alice有一個(gè)有效的執(zhí)照,他無(wú)法了解關(guān)于Alice的其他信息(匿名性);2)即使Alice多次訪問(wèn)商店并生成多個(gè)電子證照,Bob(商店職員)也無(wú)法從這些電子證照中判斷來(lái)源同一個(gè)人(不可鏈接性),確保個(gè)人隱私不被泄露.
圖4 電子證照零知識(shí)證明
為防止證照信息被泄露,持證方可選擇加密存儲(chǔ)某些證照數(shù)據(jù).利用“加密存儲(chǔ)+解密白名單”來(lái)保護(hù)隱私,只有解密白名單中的驗(yàn)證方才能獲得加密電子證照的密鑰來(lái)查看,實(shí)現(xiàn)精準(zhǔn)授權(quán)驗(yàn)證.
精準(zhǔn)授權(quán)驗(yàn)證過(guò)程如圖5所示.首先,生成一個(gè)隨機(jī)數(shù)K作為對(duì)稱加密密鑰并對(duì)文件進(jìn)行加密,密文證照存儲(chǔ)到區(qū)塊鏈外數(shù)據(jù)庫(kù)中.然后,對(duì)密文證照進(jìn)行哈希計(jì)算,得到哈希值作為密文文件的ID,在智能合約中使用這個(gè)ID作為文件索引.接下來(lái),電子證照授權(quán)給驗(yàn)證方進(jìn)行驗(yàn)證,就用對(duì)方用戶的公鑰對(duì)K進(jìn)行加密,加密后的多個(gè)K排在一起形成授權(quán)解密白名單,白名單附加在電子證照ID之后寫入?yún)^(qū)塊鏈.最后,只有得到授權(quán)的驗(yàn)證方才可以用自己的私鑰解密得到K,再用K解密鏈外數(shù)據(jù)庫(kù)中的密文證照,獲取電子證照明文.
圖5 電子證照精準(zhǔn)授權(quán)驗(yàn)證
本文系統(tǒng)基于Hyperledger Fabric開發(fā)環(huán)境搭建,操作系統(tǒng)采用Ubuntu的64 b系統(tǒng).運(yùn)用Hyperledger Fabric開發(fā)者測(cè)試網(wǎng)絡(luò)來(lái)配置模擬真實(shí)的網(wǎng)絡(luò)環(huán)境.系統(tǒng)服務(wù)器端的主要開發(fā)語(yǔ)言是Java(版本JDK 1.8.0_121).
5.2.1 單場(chǎng)景測(cè)試
因篇幅有限,僅以使用率較高的電子證照檢索實(shí)驗(yàn)數(shù)據(jù)為例.如表2所示,電子證照檢索服務(wù)分別為1 000,2 000,3 000個(gè)用戶并發(fā),平均事務(wù)響應(yīng)時(shí)間均小于3 s,且事務(wù)均全部通過(guò),符合性能指標(biāo).
表2 單場(chǎng)景測(cè)試實(shí)驗(yàn)結(jié)果
5.2.2 混合場(chǎng)景測(cè)試
混合場(chǎng)景測(cè)試結(jié)果如表3所示.測(cè)試采用2 000個(gè)并發(fā)線程,持續(xù)運(yùn)行時(shí)間5 min.其中電子證照檢索服務(wù)占26%,其他業(yè)務(wù)占10%或8%,模擬真實(shí)使用情況.平均事務(wù)響應(yīng)時(shí)間均小于3 s,且事務(wù)通過(guò)率均為100%,符合性能指標(biāo).
表3 混合場(chǎng)景測(cè)試實(shí)驗(yàn)結(jié)果
圍繞數(shù)據(jù)機(jī)密性、完整性、可用性、抗依賴性、可追溯性、真實(shí)性進(jìn)行測(cè)試.其中可用性測(cè)試包含在5.2節(jié)功能測(cè)試中.如表4所示,機(jī)密性、完整性、可用性、抗依賴性、可追溯性、真實(shí)性均測(cè)試通過(guò),表明系統(tǒng)具有較好的安全性.
表4 安全測(cè)試實(shí)驗(yàn)結(jié)果
區(qū)塊鏈本質(zhì)上是一個(gè)基于共識(shí)機(jī)制、利用智能合約的分布式賬本.本文將區(qū)塊鏈技術(shù)與電子證照相結(jié)合,借助區(qū)塊鏈的去中心化同步記賬,可通過(guò)任意部門提供證照證明服務(wù);基于區(qū)塊鏈可追溯、不可篡改、透明公開的特性,解決傳統(tǒng)信息存儲(chǔ)系統(tǒng)中證照信息與操作記錄的安全存儲(chǔ)、可信共享、存證追溯問(wèn)題;基于智能合約和零知識(shí)證明來(lái)保護(hù)個(gè)人及企業(yè)隱私.系統(tǒng)通過(guò)了功能測(cè)試和安全測(cè)試,表明本文方案具備可行性,并提升了安全性.