桑安琪 沈蒙 祝烈煌 劉勝 殷舒 肖堯
摘要 信息技術(shù)的快速發(fā)展使身份認(rèn)證機(jī)制的安全性得到越來(lái)越廣泛的關(guān)注.但現(xiàn)有的身份認(rèn)證機(jī)制存在著隱私泄露等風(fēng)險(xiǎn),這就要求設(shè)計(jì)出更加可靠的身份認(rèn)證機(jī)制.本文利用區(qū)塊鏈的去中心化、不可篡改等特性,設(shè)計(jì)出基于區(qū)塊鏈的多方協(xié)作安全身份認(rèn)證機(jī)制.在實(shí)現(xiàn)可靠身份認(rèn)證的同時(shí),保證信息的權(quán)威性,在一定程度上減少數(shù)據(jù)冗余,并提高身份認(rèn)證效率,保證全面且準(zhǔn)確的身份認(rèn)證.最后實(shí)現(xiàn)支持多個(gè)數(shù)據(jù)服務(wù)商對(duì)身份信息進(jìn)行加密簽名,保護(hù)數(shù)據(jù)隱私,以及多方共享數(shù)據(jù)的身份認(rèn)證系統(tǒng).
關(guān)鍵詞 區(qū)塊鏈;身份認(rèn)證;身份授權(quán);多方協(xié)作
中圖分類號(hào) TP302.1
文獻(xiàn)標(biāo)志碼 A
0 引言
互聯(lián)網(wǎng)迅速演進(jìn)到web2.0時(shí)代,網(wǎng)絡(luò)應(yīng)用和互聯(lián)網(wǎng)服務(wù)涉及到人們網(wǎng)絡(luò)生活的方方面面[1].互聯(lián)網(wǎng)在帶來(lái)便利的同時(shí),也造成了日益嚴(yán)重的網(wǎng)絡(luò)安全問(wèn)題,使得個(gè)人信息、部門信息乃至國(guó)家機(jī)密等都面臨著相應(yīng)的威脅.身份認(rèn)證便作為信息安全防護(hù)的第一個(gè)關(guān)卡,承擔(dān)了重要的責(zé)任.身份認(rèn)證機(jī)制在安全系統(tǒng)中是最基礎(chǔ)的安全服務(wù),只要身份認(rèn)證系統(tǒng)受到攻擊入侵,系統(tǒng)里的相應(yīng)安全措施都將無(wú)法產(chǎn)生作用.并且黑客入侵的首要目標(biāo)一般都是身份認(rèn)證系統(tǒng).所以,系統(tǒng)擁有一個(gè)安全可靠的身份認(rèn)證機(jī)制是很有必要的.
當(dāng)前的單一認(rèn)證在攻擊者的面前是很脆弱的,因?yàn)楣粽呖梢院茌p易地通過(guò)偽造身份等方式來(lái)實(shí)施攻擊[2-4].當(dāng)只有密碼認(rèn)證時(shí),賬戶等信息很容易便可被破解.例如,2015年的網(wǎng)易郵箱過(guò)億數(shù)據(jù)泄露導(dǎo)致iPhone手機(jī)用戶被勒索等類似事件.因此,采取綜合多因素的認(rèn)證機(jī)制是很有必要的,這里的綜合多因素包括綜合賬戶口令、生物智能卡、指紋識(shí)別等多種類型的身份特征數(shù)據(jù)實(shí)現(xiàn)可靠認(rèn)證[5-7].其次,單一機(jī)構(gòu)很難提供全面的多因子認(rèn)證所依賴的多種類型的身份特征數(shù)據(jù).而且,當(dāng)單一機(jī)構(gòu)遭到攻擊時(shí),其本地的多因子的身份數(shù)據(jù)依然會(huì)泄露.因此,可以采用多機(jī)構(gòu)、多數(shù)據(jù)源相結(jié)合的認(rèn)證方式,實(shí)現(xiàn)更加安全且全面的身份認(rèn)證機(jī)制.
然而,這種多機(jī)構(gòu)、多數(shù)據(jù)源相結(jié)合的認(rèn)證方式在實(shí)現(xiàn)中依然會(huì)遇到許多困難.首先,用戶的身份特征數(shù)據(jù)關(guān)系到數(shù)據(jù)服務(wù)商的根本利益.若每個(gè)數(shù)據(jù)請(qǐng)求方都分別從數(shù)據(jù)服務(wù)商那里獲得部分身份特征數(shù)據(jù),然后私下交換,則存在數(shù)據(jù)所有權(quán)確定困難和隱私泄露等問(wèn)題.其次,在多方協(xié)作的場(chǎng)景中,很難保證各個(gè)認(rèn)證機(jī)構(gòu)都可以提供高質(zhì)量的身份特征信息.可能存在某些認(rèn)證機(jī)構(gòu),為了謀取利益,提供大量低質(zhì)量的身份特征數(shù)據(jù),從而導(dǎo)致虛假、偽造身份特征數(shù)據(jù)等劣幣驅(qū)逐良幣現(xiàn)象.
區(qū)塊鏈以其無(wú)中心化和無(wú)信任化的獨(dú)特性質(zhì)進(jìn)入了廣大研究者的視野中.區(qū)塊鏈的分布式結(jié)構(gòu)使得它可以在不需要中心化機(jī)構(gòu)或可信第三方的前提下,實(shí)現(xiàn)多個(gè)弱信任實(shí)體間的交互,并保證這種交互數(shù)據(jù)不能被任意一方所篡改.因此,區(qū)塊鏈的這種特點(diǎn)適用于多方認(rèn)證場(chǎng)景.區(qū)塊鏈作為一個(gè)底層的平臺(tái),多方協(xié)作的身份認(rèn)證機(jī)制可以在它的基礎(chǔ)上設(shè)計(jì)并實(shí)現(xiàn).這種機(jī)制能夠保證數(shù)據(jù)的可信性和可靠性,并進(jìn)一步通過(guò)加密處理增強(qiáng)對(duì)數(shù)據(jù)的隱私保護(hù).
因?yàn)槟壳吧矸菡J(rèn)證的痛點(diǎn)亟待解決,所以基于區(qū)塊鏈設(shè)計(jì)一種多方身份認(rèn)證的解決方案很有必要.因此,本文提出了一個(gè)基于區(qū)塊鏈的多方協(xié)作安全身份認(rèn)證機(jī)制,并構(gòu)建了系統(tǒng),可以滿足多方身份認(rèn)證的需求.同時(shí),該系統(tǒng)提高了身份認(rèn)證的可靠性、權(quán)威性和高效性,從而實(shí)現(xiàn)全面并且準(zhǔn)確的身份認(rèn)證,具有重要的現(xiàn)實(shí)意義.例如,當(dāng)今中國(guó)互聯(lián)網(wǎng)金融風(fēng)險(xiǎn)相關(guān)案件頻頻發(fā)生,Equifax去年有1.43億信用和信息服務(wù)客戶的數(shù)據(jù)被泄露,規(guī)模龐大.類似案件影響了互金行業(yè)的健康發(fā)展,所以安全可靠的身份認(rèn)證機(jī)制,正是解決問(wèn)題的基礎(chǔ)和關(guān)鍵.
1 相關(guān)工作
1.1 研究現(xiàn)狀
區(qū)塊鏈技術(shù)是近年來(lái)的熱點(diǎn),但將區(qū)塊鏈技術(shù)與身份認(rèn)證機(jī)制結(jié)合的探索目前還處于初期研究階段[8-11].
2014年,F(xiàn)romknecht等[12]提出利用加密貨幣(如比特幣和Namecoin)提供的一致性保證來(lái)構(gòu)建可確保身份持有的公鑰基礎(chǔ)設(shè)施(PKI),并且構(gòu)建了名為Certcoin的系統(tǒng).該系統(tǒng)沒(méi)有中央管理機(jī)構(gòu),需要使用安全的分布式字典數(shù)據(jù)結(jié)構(gòu)來(lái)提供有效的支持.
2016年,Isaakidis等[13]提出了一個(gè)分散的、增強(qiáng)隱私的身份認(rèn)證、授權(quán)和消息傳遞系統(tǒng),它使用了基于代數(shù)MAC的盲簽名來(lái)改進(jìn)OpenID,使用即時(shí)通訊程序以加密的形式傳遞信息,但不保護(hù)元數(shù)據(jù)且服務(wù)集中,該系統(tǒng)在區(qū)塊鏈上以分散的方式搭建訪問(wèn)控制列表.
2017年,Matsumoto等[14]提出了IKP平臺(tái),它可以自動(dòng)響應(yīng)未經(jīng)授權(quán)的證書(shū),并為CA(Certificate Authority,證書(shū)頒發(fā)機(jī)構(gòu))提供行為正確的激勵(lì),并為其他人報(bào)告潛在的未經(jīng)授權(quán)的證書(shū).通過(guò)利用智能合約和基于區(qū)塊鏈的共識(shí)來(lái)使IKP去中心化,同時(shí)提供自動(dòng)化激勵(lì).
現(xiàn)有的身份認(rèn)證機(jī)制仍存在以下亟待解決的問(wèn)題:
1)身份數(shù)據(jù)缺乏共享.當(dāng)今各數(shù)據(jù)服務(wù)商都獨(dú)自維護(hù)自己的身份信息數(shù)據(jù)庫(kù),缺乏有效的共享機(jī)制,很難實(shí)現(xiàn)多方協(xié)作的身份認(rèn)證機(jī)制,使得認(rèn)證結(jié)果不全面、不可靠.
2)身份數(shù)據(jù)面臨泄露風(fēng)險(xiǎn).現(xiàn)今多家企業(yè)在各自的數(shù)據(jù)庫(kù)中冗余保存用戶的身份數(shù)據(jù),一旦被惡意者攻擊,會(huì)大概率導(dǎo)致用戶的身份信息很容易被泄露,引發(fā)一些不必要的損失.
3)身份認(rèn)證過(guò)程不公開(kāi).目前各企業(yè)有各自的身份認(rèn)證體系,采用集中式認(rèn)證.同時(shí)可隨時(shí)對(duì)本地的身份特征數(shù)據(jù)進(jìn)行任意修改,容易引起不必要的損失,也很難溯源追責(zé).
本文結(jié)合以上研究思想中的長(zhǎng)處,針對(duì)目前需要解決的必要問(wèn)題,在身份認(rèn)證的場(chǎng)景下結(jié)合多方,充分利用區(qū)塊鏈的特性,來(lái)保證身份數(shù)據(jù)的共享、身份數(shù)據(jù)的隱私保護(hù)、身份認(rèn)證過(guò)程的透明.從而使得多方協(xié)作的身份認(rèn)證機(jī)制是可信且可靠的.
1.2 國(guó)密算法
我國(guó)為了保障商用密碼的安全性,自主研發(fā)了包括SM2、SM3等一系列密碼算法,即國(guó)密算法.其中SM2、SM3等可以使用軟件實(shí)現(xiàn).
SM2算法是一種基于橢圓曲線上點(diǎn)群離散對(duì)數(shù)難題的公鑰密碼算法,目前已在各大領(lǐng)域中得到了廣泛的應(yīng)用.該算法包括了主要用于實(shí)現(xiàn)數(shù)字簽名密鑰協(xié)商的數(shù)字簽名算法和密鑰交換協(xié)議,以及用于實(shí)現(xiàn)數(shù)據(jù)加密等功能的公鑰加密算法[15].
SM3算法是一種密碼散列(哈希、雜湊)算法,其輸出長(zhǎng)度為256 bit.因此SM3算法的安全性高于MD5和SHA-1.此算法適用于商業(yè)密碼的數(shù)字簽名和驗(yàn)簽、消息認(rèn)證碼的生成與驗(yàn)證,以及隨機(jī)數(shù)生成,可滿足多種密碼應(yīng)用的安全需求[16].
本文設(shè)計(jì)的基于區(qū)塊鏈的多方協(xié)作安全身份認(rèn)證機(jī)制使用SM2和SM3算法.其中SM2算法主要用于身份認(rèn)證模塊,如數(shù)據(jù)請(qǐng)求方請(qǐng)求認(rèn)證時(shí)對(duì)認(rèn)證請(qǐng)求內(nèi)容使用SM2算法進(jìn)行私鑰簽名,然后數(shù)據(jù)服務(wù)商使用SM2算法進(jìn)行驗(yàn)簽;SM3算法主要用于身份授權(quán)模塊,如數(shù)據(jù)服務(wù)商將授權(quán)用戶的賬戶和該用戶的多個(gè)身份特征信息使用SM3算法分別生成數(shù)字摘要 等.
1.3 區(qū)塊鏈相關(guān)技術(shù)
區(qū)塊鏈?zhǔn)钱?dāng)前計(jì)算機(jī)應(yīng)用技術(shù)領(lǐng)域最前沿的創(chuàng)新之一,也是未來(lái)數(shù)十年內(nèi)最可能顛覆整個(gè)金融體系運(yùn)行模式的重大技術(shù).區(qū)塊鏈因比特幣的火爆而逐漸進(jìn)入人們的視線.比特幣的雛形是2008年中本聰在其發(fā)表的白皮書(shū)中提出的,由此比特幣開(kāi)始進(jìn)入人們視野[17].隨著比特幣的發(fā)展,其底層的區(qū)塊鏈技術(shù)因具有去中心化、不可篡改和去信任化等特點(diǎn)而得到產(chǎn)業(yè)界和學(xué)術(shù)界的重視.當(dāng)前國(guó)內(nèi)外研究機(jī)構(gòu)和金融機(jī)構(gòu)都在搶占時(shí)機(jī),努力抓住創(chuàng)新機(jī)遇,一場(chǎng)以區(qū)塊鏈技術(shù)為基礎(chǔ)的系統(tǒng)性創(chuàng)新正在拉開(kāi)大幕.
區(qū)塊鏈的本質(zhì)是一種鏈?zhǔn)浇Y(jié)構(gòu),它使用密碼學(xué)的相關(guān)技術(shù)來(lái)保證區(qū)塊數(shù)據(jù)的完整性和可驗(yàn)證性.同時(shí)區(qū)塊鏈還使用共識(shí)算法,實(shí)現(xiàn)了分布式節(jié)點(diǎn)對(duì)區(qū)塊數(shù)據(jù)的集體維護(hù).在以太坊為首的區(qū)塊鏈中,還可以利用智能合約對(duì)區(qū)塊鏈中的數(shù)據(jù)進(jìn)行操作.區(qū)塊鏈每個(gè)數(shù)據(jù)塊都詳細(xì)標(biāo)明了運(yùn)用哈希算法構(gòu)建的樹(shù)狀交易狀態(tài)信息,這些信息確保了區(qū)塊鏈里鏈接的區(qū)塊和每個(gè)區(qū)塊內(nèi)的交易數(shù)據(jù)的確定性,均不可篡改.
區(qū)塊鏈具備去中心化、不可篡改性、準(zhǔn)匿名性和可編程性等特征.其系統(tǒng)自上而下依次由數(shù)據(jù)層、網(wǎng)絡(luò)層、共識(shí)層、激勵(lì)層、智能合約層組成[18].本多方協(xié)作安全身份認(rèn)證機(jī)制的區(qū)塊鏈系統(tǒng)模型架構(gòu)如圖1所示.
2 系統(tǒng)模型
基于區(qū)塊鏈的多方協(xié)作安全身份認(rèn)證系統(tǒng)(圖2)主要包括3種角色:用戶、數(shù)據(jù)服務(wù)商、數(shù)據(jù)請(qǐng)求方.
1)用戶:指身份認(rèn)證服務(wù)的使用者.用戶能夠在系統(tǒng)中自由創(chuàng)建任意個(gè)賬戶信息,并基于這些賬戶使用身份認(rèn)證服務(wù).
2)數(shù)據(jù)服務(wù)商:指擁有海量的、可信的用戶身份信息的機(jī)構(gòu),如公安局、商業(yè)銀行、電信運(yùn)營(yíng)商等.數(shù)據(jù)服務(wù)商負(fù)責(zé)對(duì)用戶的賬戶進(jìn)行身份認(rèn)證,并將認(rèn)證結(jié)果上鏈存儲(chǔ).
3)數(shù)據(jù)請(qǐng)求方:指為用戶提供服務(wù)的機(jī)構(gòu),如商戶、信貸機(jī)構(gòu)等.數(shù)據(jù)請(qǐng)求方在收到用戶的服務(wù)申請(qǐng)后,將利用認(rèn)證系統(tǒng)對(duì)用戶提供的賬戶進(jìn)行身份認(rèn)證,只有通過(guò)認(rèn)證的用戶才能使用服務(wù).
日常生活中的很多行為都會(huì)涉及大量與身份相關(guān)的數(shù)據(jù),比如電話號(hào)碼、通訊地址、身份證照片等.這些身份數(shù)據(jù)不僅對(duì)于個(gè)人,對(duì)于提供服務(wù)的數(shù)據(jù)服務(wù)商和數(shù)據(jù)請(qǐng)求方也是至關(guān)重要的.首先數(shù)據(jù)服務(wù)商要保證身份數(shù)據(jù)的真實(shí)性,即用戶的身份數(shù)據(jù)是真實(shí)可靠的.在此基礎(chǔ)上,要保證身份數(shù)據(jù)的可追溯性,即一旦出現(xiàn)了虛假的或者不準(zhǔn)確的身份數(shù)據(jù),數(shù)據(jù)請(qǐng)求方或者數(shù)據(jù)服務(wù)商可以追溯到這些不可靠數(shù)據(jù)的來(lái)源.最后,身份數(shù)據(jù)應(yīng)具備安全性和匿名性,避免因用戶隱私泄露而導(dǎo)致的一系列問(wèn)題.
本系統(tǒng)是基于區(qū)塊鏈建立的開(kāi)放式的多方協(xié)作安全身份認(rèn)證系統(tǒng),支持多個(gè)用戶身份數(shù)據(jù)的加密共享,支持?jǐn)?shù)據(jù)請(qǐng)求方按需索取身份特征信息,并能夠在保護(hù)數(shù)據(jù)隱私的條件下結(jié)合多方數(shù)據(jù)完成身份認(rèn)證服務(wù).其利用支持隱私保護(hù)的多維身份認(rèn)證數(shù)據(jù)共享機(jī)制,提交文字與圖片類型的身份特征信息,執(zhí)行雙存儲(chǔ)操作,將身份特征信息存儲(chǔ)在已建立的授權(quán)業(yè)務(wù)數(shù)據(jù)庫(kù)及授權(quán)信息區(qū)塊鏈中;利用基于多方協(xié)作的身份認(rèn)證機(jī)制,向多個(gè)數(shù)據(jù)服務(wù)商請(qǐng)求已有身份特征信息、驗(yàn)證身份特征信息的完整性和一致性.逐步形成統(tǒng)一、規(guī)范、標(biāo)準(zhǔn)的多方協(xié)作安全身份認(rèn)證工作程序,力求實(shí)現(xiàn)各類身份信息的完整和可靠.同時(shí)利用密碼學(xué)技術(shù)和區(qū)塊鏈技術(shù),做到身份特征信息的可信存儲(chǔ),提高身份認(rèn)證的權(quán)威性和高效性,降低身份認(rèn)證系統(tǒng)面臨的單點(diǎn)崩潰和數(shù)據(jù)泄露風(fēng)險(xiǎn).多方協(xié)作安全身份認(rèn)證模型如圖2所示.
3 關(guān)鍵技術(shù)
3.1 賬戶注冊(cè)
用戶在被數(shù)據(jù)服務(wù)商和數(shù)據(jù)請(qǐng)求方服務(wù)前,要先在自己的設(shè)備上注冊(cè)賬戶.一個(gè)用戶可擁有多個(gè)賬戶,每個(gè)賬戶信息都是在用戶注冊(cè)時(shí)隨機(jī)生成的,這種隨機(jī)性在一定程度上可以保護(hù)用戶的隱私.每一個(gè)賬戶信息都包含隨機(jī)生成的賬號(hào)和隨機(jī)生成的該賬號(hào)對(duì)應(yīng)的密鑰對(duì).賬戶生成的偽代碼如圖3所示.
偽代碼第2行可獲得賬號(hào),此隨機(jī)賬號(hào)生成功能是利用rand里的getRandomAccpunt()函數(shù)實(shí)現(xiàn)的.第3行是通過(guò)sm2里的GenerateKey()函數(shù)來(lái)先獲取到使用SM2簽名算法隨機(jī)生成的密鑰對(duì).第7行是從新生成的密鑰對(duì)中得到SM2簽名算法生成的用戶私鑰;第八行是利用用戶私鑰推出的用戶公鑰.
最后,再將生成的賬號(hào)和該賬號(hào)對(duì)應(yīng)的密鑰對(duì)顯示給注冊(cè)用戶即可.但此賬號(hào)信息的顯示是一次性的,即只出現(xiàn)一次,需要用戶自己妥善保存.這樣就可以保證用戶賬號(hào)信息泄露風(fēng)險(xiǎn)的概率會(huì)大大降低,使用戶隱私盡可能的得到保護(hù).
3.2 基于區(qū)塊鏈的數(shù)據(jù)存儲(chǔ)
由于區(qū)塊鏈中可存儲(chǔ)內(nèi)容長(zhǎng)度有限,所以將授權(quán)內(nèi)容存儲(chǔ)在數(shù)據(jù)服務(wù)商本地?cái)?shù)據(jù)庫(kù),區(qū)塊鏈中只存儲(chǔ)數(shù)據(jù)服務(wù)商標(biāo)識(shí)、用戶賬戶散列值和授權(quán)內(nèi)容散列值等相關(guān)參數(shù).在用戶查詢鏈上數(shù)據(jù)時(shí),數(shù)據(jù)訪問(wèn)程序會(huì)根據(jù)經(jīng)過(guò)該用戶公鑰加密后的數(shù)據(jù)服務(wù)商標(biāo)識(shí)和賬戶散列值找到區(qū)塊鏈上對(duì)應(yīng)的字段進(jìn)行查詢.
用戶身份特征信息授權(quán)算法流程如圖4所示,將用戶的賬戶和多個(gè)身份特征信息使用SM3算法分別生成數(shù)字摘要 ,并用井號(hào)將他們組合,連接為字符串,形成數(shù)據(jù)服務(wù)商數(shù)字摘要 組合.然后再次使用SM3算法將用戶賬戶哈希,生成用戶數(shù)字摘要 .之后用戶數(shù)字摘要 和數(shù)據(jù)服務(wù)商數(shù)字摘要 組合,分別與數(shù)據(jù)服務(wù)商標(biāo)識(shí)用井號(hào)進(jìn)行連接,對(duì)應(yīng)生成用戶字符串組合和數(shù)據(jù)服務(wù)商字符串組合.再使用該被授權(quán)用戶的公鑰,運(yùn)用RSA算法,對(duì)用戶字符串組合進(jìn)行非對(duì)稱加密,形成用戶公鑰加密密文.同理,使用數(shù)據(jù)服務(wù)商的公鑰,運(yùn)用RSA算法,對(duì)數(shù)據(jù)服務(wù)商字符串組合進(jìn)行非對(duì)稱加密,形成數(shù)據(jù)服務(wù)商公鑰加密密文.然后將兩份密文使用井號(hào)組合,并將組合后的密文寫(xiě)入payload字段(指記載著上鏈的信息的那部分字段).這樣就可以保證授權(quán)內(nèi)容可以寫(xiě)入?yún)^(qū)塊鏈且不會(huì)被篡改.
3.3 區(qū)塊鏈核心功能
區(qū)塊鏈核心功能主要包含身份特征信息上鏈和身份特征信息查詢兩個(gè)核心功能.區(qū)塊鏈核心功能時(shí)序如圖5所示.
1) 身份特征信息上鏈
數(shù)據(jù)服務(wù)商對(duì)用戶線下提交的身份信息和用戶賬戶信息進(jìn)行整理后,提取出必要的身份特征信息,并按一定的格式存入本地?cái)?shù)據(jù)庫(kù).當(dāng)數(shù)據(jù)服務(wù)商管理員確認(rèn)用戶身份信息無(wú)誤時(shí),數(shù)據(jù)服務(wù)商管理員就可以對(duì)該用戶進(jìn)行準(zhǔn)備上鏈操作.前端代碼在獲取前端的post請(qǐng)求后,上鏈之前,調(diào)用datahandle()函數(shù),利用3.2節(jié)所述的數(shù)據(jù)存儲(chǔ)方法,將用戶賬戶和對(duì)應(yīng)的多個(gè)身份特征信息使用SM3算法生成數(shù)字摘要 ,并與數(shù)據(jù)服務(wù)商標(biāo)識(shí)連接.然后分別使用用戶公鑰和數(shù)據(jù)服務(wù)商公鑰,運(yùn)用RSA算法,對(duì)字符串組合進(jìn)行非對(duì)稱加密.
之后將最終密文寫(xiě)入交易的PoeData字段中,再調(diào)用區(qū)塊鏈底層接口函數(shù)PoeSet().該函數(shù)中利用Http協(xié)議的Post接口方法,根據(jù)配置文件interfaceConfig.yaml中設(shè)置的poe-post URL接口(用于向鏈上發(fā)送數(shù)據(jù)),向指定的資源提交要被處理的數(shù)據(jù)結(jié)構(gòu).最后,區(qū)塊鏈底層平臺(tái)調(diào)用AppImpl接口中的AppProcess()函數(shù)將數(shù)據(jù)結(jié)構(gòu)上鏈存儲(chǔ).存儲(chǔ)結(jié)果被全網(wǎng)確認(rèn)后,返回區(qū)塊鏈交易碼,數(shù)據(jù)上鏈成功,如圖5a所示.
2) 身份特征信息查詢
用戶在區(qū)塊鏈客戶端中選擇查看自己的身份特征信息授權(quán)結(jié)果.前端代碼獲取前端get請(qǐng)求,調(diào)用datahandle()函數(shù).然后通過(guò)區(qū)塊鏈底層接口函數(shù)PoeGet()調(diào)用Http協(xié)議的Get接口方法,根據(jù)配置文件interfaceConfig.yaml中設(shè)置的poe-get URL接口(用于從鏈上查詢數(shù)據(jù)),從指定的資源請(qǐng)求數(shù)據(jù).之后區(qū)塊鏈底層平臺(tái)調(diào)用AppImpl接口中的Query()函數(shù)查詢相應(yīng)數(shù)據(jù),并返回最終查詢結(jié)果,如圖5b所示.
3.4 安全身份認(rèn)證
用戶的賬戶信息、身份特征信息和授權(quán)信息上鏈后,用戶即可開(kāi)始申請(qǐng)使用數(shù)據(jù)請(qǐng)求方所提供的相關(guān)服務(wù).屆時(shí)數(shù)據(jù)請(qǐng)求方根據(jù)用戶服務(wù)申請(qǐng),與一個(gè)或多個(gè)數(shù)據(jù)服務(wù)商分別協(xié)商會(huì)話密鑰,然后數(shù)據(jù)請(qǐng)求方將使用協(xié)商的會(huì)話密鑰加密認(rèn)證請(qǐng)求,并分別發(fā)送給對(duì)應(yīng)的數(shù)據(jù)服務(wù)商,從而完成對(duì)用戶的安全身份認(rèn)證.多方協(xié)作安全身份認(rèn)證流程如圖6所示.
數(shù)據(jù)服務(wù)商根據(jù)數(shù)據(jù)請(qǐng)求方請(qǐng)求認(rèn)證的賬號(hào)查詢數(shù)據(jù)庫(kù),將查詢結(jié)果使用會(huì)話密鑰加密處理后發(fā)送給數(shù)據(jù)請(qǐng)求方.數(shù)據(jù)請(qǐng)求方用會(huì)話密鑰解密,然后對(duì)比提取最優(yōu)身份特征信息散列值.之后將該散列值用會(huì)話密鑰加密后,分別發(fā)送給數(shù)據(jù)服務(wù)商,向其請(qǐng)求此散列值對(duì)應(yīng)的明文.數(shù)據(jù)服務(wù)商解密后,結(jié)合賬戶信息,根據(jù)此散列值查詢數(shù)據(jù)庫(kù),找到相應(yīng)的最優(yōu)身份特征信息明文,然后將此明文用會(huì)話密鑰加密,再傳輸給數(shù)據(jù)請(qǐng)求方.數(shù)據(jù)請(qǐng)求方將接收到的密文解密,并存儲(chǔ)進(jìn)本地?cái)?shù)據(jù)庫(kù).
4 安全性分析
身份特征數(shù)據(jù)既涉及到用戶的個(gè)人隱私,也涉及到各個(gè)數(shù)據(jù)服務(wù)商的根本利益,因此,一旦這些數(shù)據(jù)泄露或被攻擊者所篡改,對(duì)用戶和服務(wù)商都會(huì)產(chǎn)生很大的損失.因此,多方協(xié)作安全身份認(rèn)證機(jī)制在安全性方面滿足以下要求:
1)數(shù)據(jù)訪問(wèn)控制
實(shí)時(shí)監(jiān)測(cè)用戶狀態(tài),對(duì)用戶的登錄狀態(tài)和所有與身份信息相關(guān)的操作進(jìn)行嚴(yán)格的控制.如用戶在登錄后30 min內(nèi)未在界面中進(jìn)行任何操作就自動(dòng)退出登錄,重新進(jìn)行登錄操作;登錄檢測(cè)通過(guò),則用戶可以進(jìn)入?yún)^(qū)塊鏈客戶端,查看相關(guān)信息.如果用戶要進(jìn)行申請(qǐng)授權(quán)的操作,則使用持有注冊(cè)賬戶成功時(shí)返回的私鑰,對(duì)操作進(jìn)行數(shù)字簽名,最大限度的保護(hù)身份數(shù)據(jù)的安全.
2)數(shù)據(jù)隱私保護(hù)
為了防止攻擊者查看、篡改或偽造身份數(shù)據(jù)、賬戶數(shù)據(jù)或者授權(quán)信息,對(duì)數(shù)據(jù)和信息進(jìn)行加密操作,將身份特征數(shù)據(jù)的明文,利用確定的密碼學(xué)加密算法進(jìn)行處理,使其變?yōu)槊芪?使用非對(duì)稱密碼算法(RSA、ECDSA)、單向散列算法(SHA256)和國(guó)密算法(SM2、SM3).三者的結(jié)合為多維身份認(rèn)證數(shù)據(jù)的共享和多方協(xié)作的安全身份認(rèn)證提供了支持,同時(shí)在密碼學(xué)層面上保證了區(qū)塊鏈的高度隱私.
3)匿名化
為了避免攻擊者通過(guò)統(tǒng)計(jì)分析等方式將身份信息和賬戶一一對(duì)應(yīng),對(duì)身份特征數(shù)據(jù)進(jìn)行匿名化處理.利用加密算法(RSA)和哈希算法(SM3)對(duì)賬戶加密,使攻擊者在無(wú)用戶私鑰時(shí)不可查.從而達(dá)到消除或混淆賬戶與用戶真實(shí)身份、授權(quán)信息和認(rèn)證信息之間的實(shí)際聯(lián)系的目的.
4)日志管理
為了嚴(yán)密監(jiān)控,且減少多方協(xié)作安全身份認(rèn)證機(jī)制出現(xiàn)巨大損害的可能性,利用日志管理將系統(tǒng)上的所有訪問(wèn)和操作都記錄下來(lái),并且在后臺(tái)記錄操作的摘要 ,從而提高系統(tǒng)運(yùn)行的安全性.因?yàn)橄到y(tǒng)存儲(chǔ)的身份信息可能隨時(shí)會(huì)發(fā)生改變,所以詳細(xì)地記錄每一次改變,有助于根據(jù)日志索引進(jìn)行定位,在必要時(shí)也可完成追責(zé)功能.
5 實(shí)驗(yàn)
5.1 實(shí)驗(yàn)部署
基于區(qū)塊鏈的多方協(xié)作安全身份認(rèn)證系統(tǒng)使用的底層平臺(tái)搭建在Linux操作系統(tǒng)環(huán)境之上,平臺(tái)的核心功能使用Go語(yǔ)言進(jìn)行實(shí)現(xiàn),可以進(jìn)行跨平臺(tái)的開(kāi)發(fā)和布置.在部署新鏈之前,配置Go語(yǔ)言環(huán)境.本系統(tǒng)使用的是go 1.9.1版本環(huán)境.
鏈的部署主要分為peer.yaml配置文件修改、添加URL接口、區(qū)塊鏈底層編譯、區(qū)塊鏈應(yīng)用編譯、應(yīng)用注冊(cè)、啟動(dòng)節(jié)點(diǎn)、網(wǎng)頁(yè)訪問(wèn),共7個(gè)步驟.
系統(tǒng)部署后的物理結(jié)構(gòu)如圖7所示.1)客戶端:系統(tǒng)功能是以網(wǎng)頁(yè)的形式呈現(xiàn),因此計(jì)算機(jī)中可運(yùn)行的瀏覽器都屬于系統(tǒng)的客戶端.2)系統(tǒng)服務(wù)器:系統(tǒng)使用Tomcat服務(wù)器,支持全部JSP(Java Server Pages,java服務(wù)器頁(yè)面)以及Servlet規(guī)范,用于存放靜態(tài)頁(yè)面,實(shí)現(xiàn)業(yè)務(wù)邏輯處理等功能.3)區(qū)塊鏈分布式網(wǎng)絡(luò):專指底層區(qū)塊鏈網(wǎng)絡(luò),各節(jié)點(diǎn)之間網(wǎng)絡(luò)互通,以便多個(gè)節(jié)點(diǎn)之間進(jìn)行共識(shí)交互,以及區(qū)塊同步等操作.
5.2 性能評(píng)估
為了檢驗(yàn)基于區(qū)塊鏈的多方協(xié)作安全身份認(rèn)證機(jī)制的效率,選取了吞吐量、出塊時(shí)間和存儲(chǔ)空間這3個(gè)方面來(lái)進(jìn)行評(píng)估.
1)吞吐量
吞吐量是指單位時(shí)間內(nèi)成功地傳送數(shù)據(jù)的數(shù)量.對(duì)于區(qū)塊鏈來(lái)說(shuō),吞吐量就是每秒進(jìn)行的交易數(shù)量(筆/s).本身份認(rèn)證機(jī)制的底層區(qū)塊鏈平臺(tái)是以Fabric為基礎(chǔ)進(jìn)行開(kāi)發(fā)的,但在存儲(chǔ)性能上相比于Fabric有大幅度的提升.表1針對(duì)憑證存儲(chǔ)業(yè)務(wù),羅列了目前主流的三種開(kāi)源區(qū)塊鏈框架的吞吐量.
由表1可知,基于Fabric的身份認(rèn)證機(jī)制的底層區(qū)塊鏈平臺(tái)以25 000 TPS(Transaction Per Second,每秒事務(wù)處理量)的吞吐量對(duì)身份信息進(jìn)行存儲(chǔ)處理,可以滿足實(shí)驗(yàn)環(huán)境下的需求,且吞吐量遠(yuǎn)高于以太坊等區(qū)塊鏈平臺(tái).
2)出塊時(shí)間
不同于公有鏈比特幣每隔10 min(600 s)產(chǎn)生一個(gè)區(qū)塊、以太坊每15 s產(chǎn)生一個(gè)區(qū)塊的固定出塊策略,F(xiàn)abric出塊可配置時(shí)間、大小,甚至交易的上限大小,非常靈活.本身份認(rèn)證機(jī)制的底層區(qū)塊鏈平臺(tái)最終確認(rèn)一個(gè)區(qū)塊的時(shí)間只需2 s.圖8是身份信息密文上鏈時(shí)間圖.由圖可知密文上鏈1 000~10 000筆交易(塊),上鏈時(shí)間在16~156 s 之間,且上鏈時(shí)間隨交易數(shù)量的增多而增加.本身份認(rèn)證機(jī)制的底層區(qū)塊鏈平臺(tái)的出塊時(shí)間等于上鏈時(shí)間加上區(qū)塊最終確認(rèn)時(shí)間,此結(jié)果的數(shù)值遠(yuǎn)小于比特幣、以太坊等區(qū)塊鏈平臺(tái).所以本身份認(rèn)證機(jī)制的出塊時(shí)間短,上鏈時(shí)間快且穩(wěn)定.
本方案還做了一組對(duì)比實(shí)驗(yàn),測(cè)試分析了身份信息明文上鏈的時(shí)間情況,如圖9所示.由圖可知明文上鏈1 000~10 000筆交易,上鏈時(shí)間在16~166 s之間,且上鏈時(shí)間隨交易數(shù)量的增多而增加.對(duì)比身份信息明文上鏈時(shí)間與身份信息密文上鏈時(shí)間,后者的時(shí)間開(kāi)銷在不同交易數(shù)量的情況下,與前者均相差不超過(guò)10 s,且后者的時(shí)間開(kāi)銷小于前者的時(shí)間開(kāi)銷.所以相比于明文上鏈,采用密文上鏈的方式,在時(shí)間開(kāi)銷基本持平的情況下,更能保護(hù)身份特征數(shù)據(jù)的隱私安全.
3)存儲(chǔ)空間
表2列出了身份特征數(shù)據(jù)上鏈后明文和密文的存儲(chǔ)空間大小對(duì)比,交易數(shù)量從2 000~10 000筆.由表2可知,當(dāng)交易數(shù)量增多時(shí),明文和密文所需的存儲(chǔ)空間也相應(yīng)的增加.并且加密操作會(huì)使鏈上占用的存儲(chǔ)空間增大.表2顯示存儲(chǔ)10 000筆身份信息密文交易大約需要221 184 KB 的空間,存儲(chǔ)10 000 筆身份信息明文交易大約需要219 136 KB的空間.可以看出,在同樣的交易數(shù)量下,身份信息密文占用的存儲(chǔ)空間比身份信息明文占用的存儲(chǔ)空間大,但是基本在一個(gè)數(shù)量級(jí)上,且存儲(chǔ)空間增加量不超過(guò)百分之五,屬于可接受范圍.
通過(guò)對(duì)吞吐量、出塊時(shí)間和存儲(chǔ)空間這3個(gè)性能指標(biāo)進(jìn)行評(píng)估,可以得出基于區(qū)塊鏈的多方協(xié)作安全身份認(rèn)證機(jī)制的效率較高,其吞吐量?jī)?yōu)于其他主流存證區(qū)塊鏈平臺(tái),出塊時(shí)間也比比特幣、以太坊等主流區(qū)塊鏈平臺(tái)快,存儲(chǔ)復(fù)雜度可接受.所以,基于區(qū)塊鏈的多方協(xié)作安全身份認(rèn)證機(jī)制在實(shí)現(xiàn)支持隱私保護(hù)的可靠且準(zhǔn)確的身份認(rèn)證的同時(shí),又保證了身份認(rèn)證的效率.
6 結(jié)束語(yǔ)
針對(duì)當(dāng)前身份認(rèn)證機(jī)制存在的諸如數(shù)據(jù)泄露等問(wèn)題,為了解決現(xiàn)有身份認(rèn)證痛點(diǎn),結(jié)合區(qū)塊鏈技術(shù),利用區(qū)塊鏈的去中心化和不可篡改等特性,提出了保障身份數(shù)據(jù)完整性、可靠性和可信性的基于區(qū)塊鏈的多方協(xié)作安全身份認(rèn)證機(jī)制.進(jìn)而實(shí)現(xiàn)了基于區(qū)塊鏈的多方協(xié)作安全身份認(rèn)證系統(tǒng),在區(qū)塊鏈上完成了身份授權(quán)、身份認(rèn)證和數(shù)據(jù)共享等功能,且在實(shí)現(xiàn)可靠身份認(rèn)證的同時(shí),還保證了信息的權(quán)威性,并在一定程度上減少了數(shù)據(jù)冗余,提高了身份認(rèn)證效率,保證了全面且準(zhǔn)確的身份認(rèn)證.從而為將來(lái)研究支持多種類身份特征信息認(rèn)證機(jī)制等相關(guān)技術(shù)提供了基礎(chǔ)研究.
參考文獻(xiàn)References
[1] 荊繼武.網(wǎng)絡(luò)可信身份管理的現(xiàn)狀與趨勢(shì)[J].信息安全研究,2016,2(7):666-668
JING Jiwu.The development status and tendency of Internet trusted identity management[J].Journal of Information Security Research,2016,2(7):666-668
[2] 夏振杰.基于人臉識(shí)別技術(shù)的身份認(rèn)證系統(tǒng)實(shí)現(xiàn)簡(jiǎn)介[J].科技信息,2010(5):44,23
XIA Zhenjie.Introduction to identity authentication system based on face recognition technology[J].Science & Technology Information,2010(5):44,23
[3] 王帥,常朝穩(wěn),魏彥芬.基于云計(jì)算的USB Key身份認(rèn)證方案[J].計(jì)算機(jī)應(yīng)用研究,2014,31(7):2130-2134
WANG Shuai,CHANG Chaowen,WEI Yanfen.USB Key authentication scheme based on cloud computing[J].Application Research of Computers,2014,31(7):2130-2134
[4] 余幸杰,高能,江偉玉.云計(jì)算中的身份認(rèn)證技術(shù)研究[J].信息網(wǎng)絡(luò)安全,2012(8):71-74
YU Xingjie,GAO Neng,JIANG Weiyu.Research on the authentication in cloud computing[J].Netinfo Security,2012(8):71-74
[5] 楊勇,許杰.個(gè)人身份認(rèn)證技術(shù)及其研究進(jìn)展[J].通信技術(shù),2017,50(1):124-128
YANG Yong,XU Jie.Personal identity verification technology and research progress[J].Communications Technology,2017,50(1):124-128
[6] 張利華,沈友進(jìn).基于ECC和指紋USBKey的身份認(rèn)證協(xié)議[J].華東交通大學(xué)學(xué)報(bào),2014,31(2):95-98
ZHANG Lihua,SHEN Youjin.A novel user authentication scheme based on ECC and fingerprint USBKey[J].Journal of East China Jiaotong University,2014,31(2):95-98
[7] 徐欽桂,黃培燦,楊桃欄.增強(qiáng)的基于生物密鑰智能卡遠(yuǎn)程身份認(rèn)證方案[J].計(jì)算機(jī)研究與發(fā)展,2015,52(11):2645-2655
XU Qingui,HUANG Peican,YANG Taolan.An enhanced biometrics-key-based remote user authentication scheme with smart card[J].Journal of Computer Research and Development,2015,52(11):2645-2655
[8] Hammudoglu J S,Sparreboom J,Rauhamaa J I,et al.Portable trust:biometric-based authentication and blockchain storage for self-sovereign identity systems[J].arXiv e-print,arXiv:1706.03744
[9] Moinet A,Darties B,Baril J-L.Blockchain based trust & authentication for decentralized sensor networks[J].arXiv e-print,arXiv:1810.01291
[10] Alexopoulos N,Daubert J,Muhlhauser M,et al.Beyond the hype:on using blockchains in trust management for authentication[C]∥IEEE Trustcom/BigDataSE/ICESS,2017,DOI:10.1109/Trustcom/B ̄i ̄g ̄D ̄a ̄t ̄a ̄S ̄E/I ̄C ̄E ̄S ̄S.2017.283
[11] Lundbaek L N,D'Iddio A C,Huth M.Optimizing governed blockchains for financial process authentications[J].arXiv e-print,arXiv:1612.00407
[12] Fromknecht C,Velicanu D,Yakoubov S.A decentralized public key infrastructure with identity retention[J].IACR Cryptology ePrint Archive,2014,2014:803
[13] Isaakidis M,Halpin H,Danezis G.UnlimitID:privacy-preserving federated identity management using algebraic MACs[C]∥ACM on Workshop on Privacy in the Electronic Society,2016,DOI:10.1145/2994620.2994637
[14] Matsumoto S,Reischuk R M.IKP:turning a PKI around with decentralized automated incentives[C]∥IEEE Symposium on Security and Privacy,2017,DOI:10.1109/SP.2017.57
[15] 李珊,余少標(biāo),王功文,等.基于NFC和商用密碼技術(shù)的防偽溯源系統(tǒng)研究[J].數(shù)碼世界,2017(5):58-60
LI Shan,YU Shaobiao,WANG Gongwen,et al.Research on anti-forgery traceability system based on NFC and commercial cryptography[J].Digital Space,2017(5):58-60
[16] 丁冬平,高獻(xiàn)偉.SM3算法的FPGA設(shè)計(jì)與實(shí)現(xiàn)[J].微型機(jī)與應(yīng)用,2012,31(5):26-28
DING Dongping,GAO Xianwei.Design and implementation of SM3 algorithm on FPGA[J].Microcomputer & Its Applications,2012,31(5):26-28
[17] Nakamoto S.Bitcoin:a peer-to-peer electronic cash system[EB/OL].[2019-07-01].https:∥bitcoin.org/bitcoin.pdf
[18] 袁勇,王飛躍.區(qū)塊鏈技術(shù)發(fā)展現(xiàn)狀與展望[J].自動(dòng)化學(xué)報(bào),2016,42(4):481-494
YUAN Yong,WANG Feiyue.Blockchain:the state of the art and future trends[J].Acta Automatica Sinica,2016,42(4):481-49