李馥娟,馬 卓,王 群
1.江蘇警官學(xué)院 計(jì)算機(jī)信息與網(wǎng)絡(luò)安全系,南京 210031
2.計(jì)算機(jī)軟件新技術(shù)國(guó)家重點(diǎn)實(shí)驗(yàn)室(南京大學(xué)),南京 210093
信息系統(tǒng)的出現(xiàn)和應(yīng)用,中心化管理機(jī)制一直發(fā)揮著關(guān)鍵作用。直到1998 年,亞裔密碼學(xué)家戴維(Wei Dai)提出了B-money[1]設(shè)計(jì)架構(gòu),其核心思想是通過一組協(xié)議來構(gòu)建一個(gè)集體記賬、不可追蹤、去中心化的分布式匿名電子現(xiàn)金系統(tǒng),以打破傳統(tǒng)系統(tǒng)中心化機(jī)制存在的種種弊端,但B-money 只提供了一個(gè)功能描述,并沒有代碼實(shí)現(xiàn)。2008 年,自稱為中本聰(Satoshi Nakamoto)[2]但其真實(shí)身份未知的神秘作者發(fā)表了一篇名為Bitcoin:a peer-to-peer electronic cash system的論文,描述了一種稱之為比特幣(Bitcoin)的加密數(shù)字貨幣,其算法實(shí)現(xiàn)的核心是一項(xiàng)以去中心化的分布式賬本為基本特征,以P2P傳輸、共識(shí)機(jī)制、密碼學(xué)、博弈論、經(jīng)濟(jì)學(xué)等眾多技術(shù)和理論為保障的區(qū)塊鏈(blockchain)技術(shù)[3]。2009 年1 月3 日,根據(jù)中本聰設(shè)計(jì)方案開發(fā)的比特幣系統(tǒng)正式上線,印證了區(qū)塊鏈技術(shù)的可行性,也使去中心化從概念和設(shè)想變成了現(xiàn)實(shí)。至此,區(qū)塊鏈技術(shù)開始引起學(xué)術(shù)界和產(chǎn)業(yè)界的普遍關(guān)注,社會(huì)各領(lǐng)域力求借助區(qū)塊鏈技術(shù)在解決傳統(tǒng)系統(tǒng)中遇到的一些問題和困擾的同時(shí),以其創(chuàng)新技術(shù)來催生新的發(fā)展范式。區(qū)塊鏈新型應(yīng)用范式的出現(xiàn)引發(fā)了用戶身份管理機(jī)制的變革,也促使學(xué)術(shù)界和產(chǎn)業(yè)領(lǐng)域加快了對(duì)區(qū)塊鏈系統(tǒng)身份管理技術(shù)的研究。
在人際交流和社會(huì)管理中,身份特指人的出身和社會(huì)地位,身份管理既包括屬于人力資源管理范疇的以自然人為對(duì)象的實(shí)體身份管理,也包括屬于信息管理范疇的與自然人相對(duì)應(yīng)的線上身份、組織機(jī)構(gòu)代碼身份以及智能設(shè)備編址身份的管理。IET(International Electrotechnical Commission,國(guó)際電子技術(shù)委員會(huì))將信息系統(tǒng)的“身份”定義為“一組與實(shí)體關(guān)聯(lián)的屬性”,這里的實(shí)體包括自然人、組織機(jī)構(gòu)、智能設(shè)備等可以被信息系統(tǒng)識(shí)別和管理的對(duì)象。傳統(tǒng)的身份管理(identity management,IDM)是賬號(hào)管理、認(rèn)證管理、授權(quán)管理和審計(jì)管理解決方案的統(tǒng)稱,稱之為4A(賬號(hào)-account,認(rèn)證-authentication,授權(quán)-authorization,審計(jì)-audit)。由于區(qū)塊鏈提供的是一種去中心化的底層服務(wù),主要通過共識(shí)機(jī)制實(shí)現(xiàn)不同節(jié)點(diǎn)之間的協(xié)同,從而在一個(gè)不可信網(wǎng)絡(luò)環(huán)境中共同維護(hù)同一個(gè)分布式賬本,所以在討論區(qū)塊鏈中的身份管理時(shí)一般主要集中于身份標(biāo)識(shí)和身份認(rèn)證兩個(gè)方面,有關(guān)資源授權(quán)功能則由上層應(yīng)用系統(tǒng)來實(shí)現(xiàn),而區(qū)塊鏈賬本的公開性也使針對(duì)用戶訪問的審計(jì)功能失去了效能。W3C(World Wide Web Consortium,萬維網(wǎng)聯(lián)盟)分布式標(biāo)識(shí)符工作組也在文獻(xiàn)[4]中將區(qū)塊鏈身份管理分為身份標(biāo)識(shí)和身份認(rèn)證(包括身份證明和身份驗(yàn)證)兩部分。為此,本文重點(diǎn)從身份標(biāo)識(shí)和身份認(rèn)證兩個(gè)方面討論區(qū)塊鏈的身份管理技術(shù),不但符合區(qū)塊鏈作為底層技術(shù)的特點(diǎn),也反映了統(tǒng)一身份管理技術(shù)的發(fā)展趨勢(shì),同時(shí)能夠抓住問題的關(guān)鍵,聚焦核心技術(shù)的分析和主要問題的解決。
在以身份標(biāo)識(shí)和身份認(rèn)證為重點(diǎn)的區(qū)塊鏈身份管理研究中,國(guó)內(nèi)姚前等人[5]重點(diǎn)針對(duì)隱私保護(hù)需要綜述了區(qū)塊鏈中的身份管理技術(shù)涵蓋的主要內(nèi)容;宋靖文等人[6]借鑒門羅幣中的身份隱私保護(hù)方法,設(shè)計(jì)了針對(duì)公有鏈中基于匿名身份認(rèn)證的可監(jiān)管的交易隱私保護(hù)方案;佘維等人[7]針對(duì)區(qū)塊鏈隱蔽通信,提出了一種可以實(shí)現(xiàn)對(duì)敏感文檔和發(fā)送者身份信息進(jìn)行隱藏的區(qū)塊鏈隱蔽通信模型。在國(guó)外研究方面,Genkin等人[8]在回顧了基于區(qū)塊鏈的加密數(shù)字貨幣中隱私保護(hù)實(shí)現(xiàn)機(jī)制的基礎(chǔ)上,重點(diǎn)對(duì)不同實(shí)現(xiàn)機(jī)制功能特點(diǎn)進(jìn)行了對(duì)比分析;Dunphy 等人[9]在系統(tǒng)介紹區(qū)塊鏈身份管理特點(diǎn)和存在不足的基礎(chǔ)上,選擇了幾個(gè)典型的區(qū)塊鏈身份管理系統(tǒng)進(jìn)行了分析;Buccafurri 等人[10]針對(duì)區(qū)塊鏈公鑰地址在交易過程中存在的偽匿名特征,提出了一種基于身份加密(identity-based-encryption,IBE)的解決方案,以提高身份的匿名性。上述工作多針對(duì)加密數(shù)字貨幣為代表的公有鏈環(huán)境,主要以用戶隱私保護(hù)為目的,集中于解決用戶身份隱藏中涉及的具體技術(shù),也有部分對(duì)一些區(qū)塊鏈身份管理系統(tǒng)的功能實(shí)現(xiàn)和技術(shù)特點(diǎn)進(jìn)行了比較分析。但并未對(duì)區(qū)塊鏈系統(tǒng)身份管理技術(shù)涉及到的結(jié)構(gòu)、方法、特征及適用性等內(nèi)容進(jìn)行系統(tǒng)研究和全面梳理。此外,隨著區(qū)塊鏈技術(shù)的日臻成熟和應(yīng)用領(lǐng)域的不斷拓寬,區(qū)塊鏈技術(shù)應(yīng)用場(chǎng)景也被細(xì)分,但現(xiàn)有工作并未進(jìn)行有針對(duì)性的分類研究。本文對(duì)近年來區(qū)塊鏈系統(tǒng)管理技術(shù)進(jìn)行了較為全面的梳理,對(duì)比分析了傳統(tǒng)系統(tǒng)和區(qū)塊鏈系統(tǒng)身份管理的主要差異,系統(tǒng)闡述了區(qū)塊鏈系統(tǒng)身份標(biāo)識(shí)和身份認(rèn)證機(jī)制,其中,針對(duì)區(qū)塊鏈系統(tǒng)身份標(biāo)識(shí)特點(diǎn),從公鑰密鑰、數(shù)字證書和去中心化數(shù)字身份3個(gè)方面進(jìn)行了分類分析,針對(duì)公有鏈和聯(lián)盟鏈(包括去中心化程度更高的私有鏈)特征,分匿名身份認(rèn)證、實(shí)名身份認(rèn)證和可控匿名身份認(rèn)證3類應(yīng)用場(chǎng)景討論了區(qū)塊鏈身份認(rèn)證模式的實(shí)現(xiàn)方法。最后,針對(duì)公有鏈和聯(lián)盟鏈身份管理技術(shù)的差異性,分類對(duì)相關(guān)技術(shù)的未來發(fā)展進(jìn)行了展望。
在身份管理機(jī)制方面,傳統(tǒng)系統(tǒng)與區(qū)塊鏈之間的區(qū)別在于:首先,區(qū)塊鏈系統(tǒng)采用去中心化機(jī)制,身份標(biāo)識(shí)和安全驗(yàn)證都是構(gòu)建區(qū)塊鏈技術(shù)的內(nèi)生要素和核心組件。而對(duì)于中心化的傳統(tǒng)系統(tǒng)而言,安全和身份管理一般只作為系統(tǒng)的附加配置,是否需要為每個(gè)用戶賦予唯一身份和分配相應(yīng)權(quán)限,可由中心化的身份管理和認(rèn)證中心來實(shí)現(xiàn);其次,區(qū)塊鏈的身份管理和安全機(jī)制一旦確定將無法變更,否則將會(huì)導(dǎo)致區(qū)塊鏈的硬分叉而產(chǎn)生新的系統(tǒng)。而傳統(tǒng)系統(tǒng)可通過對(duì)中心化系統(tǒng)的升級(jí),以打補(bǔ)丁方式解決發(fā)現(xiàn)的一些身份管理和安全問題;還有,區(qū)塊鏈系統(tǒng)采用了經(jīng)濟(jì)獎(jiǎng)懲機(jī)制,在對(duì)忠誠(chéng)礦工進(jìn)行獎(jiǎng)勵(lì)的同時(shí),將使惡意節(jié)點(diǎn)對(duì)其作惡行為付出經(jīng)濟(jì)代價(jià),以此來保障系統(tǒng)運(yùn)行的安全性。傳統(tǒng)系統(tǒng)中針對(duì)用戶身份的管理多采用凍結(jié)或關(guān)閉用戶賬戶的單一模式,無法實(shí)施對(duì)用戶的有限度懲戒;再者,區(qū)塊鏈系統(tǒng)中為了實(shí)現(xiàn)中心化機(jī)制,必須全網(wǎng)公開所有的交易記錄,并利用共識(shí)機(jī)制對(duì)交易進(jìn)行背書和驗(yàn)證[11]。而在傳統(tǒng)系統(tǒng)中,所有事務(wù)都由中心化機(jī)制進(jìn)行統(tǒng)一驗(yàn)證和確認(rèn),而且驗(yàn)證內(nèi)容、過程和結(jié)果都控制在封閉環(huán)境中,不對(duì)外公開;同時(shí),傳統(tǒng)系統(tǒng)的中心化機(jī)制將權(quán)利全部集中于平臺(tái),平臺(tái)擁有用戶創(chuàng)造的數(shù)字資產(chǎn),并對(duì)用戶及資產(chǎn)進(jìn)行集中管理,由用戶資產(chǎn)創(chuàng)造的價(jià)值也歸平臺(tái)所有,但由用戶不當(dāng)操作造成的不良后果則由用戶承擔(dān),平臺(tái)一般只負(fù)責(zé)監(jiān)管責(zé)任。這種高度中心化的管理模式和資源壟斷方式使傳統(tǒng)系統(tǒng)在發(fā)展過程中遇到了瓶頸,所以在區(qū)塊鏈技術(shù)出現(xiàn)后,中心化與去中心化之爭(zhēng)自然而然地引起了各方面的高度關(guān)注,而去中心機(jī)制在眾各領(lǐng)域蘊(yùn)藏的諸多價(jià)值和變革引發(fā)了一輪信息技術(shù)的應(yīng)用創(chuàng)新。
綜上分析,區(qū)塊鏈系統(tǒng)在打破了傳統(tǒng)系統(tǒng)中央控制機(jī)制存在的種種弊端的同時(shí),也對(duì)參與實(shí)體的身份管理提出了挑戰(zhàn)。如何在開放網(wǎng)絡(luò)環(huán)境中,在互不信任的節(jié)點(diǎn)之間實(shí)現(xiàn)用戶身份標(biāo)識(shí)和身份認(rèn)證,對(duì)深入研究區(qū)塊鏈系統(tǒng)的身份管理機(jī)制,進(jìn)而實(shí)現(xiàn)信息發(fā)現(xiàn)和價(jià)值挖掘具有重要意義。
區(qū)塊鏈系統(tǒng)以鏈?zhǔn)浇Y(jié)構(gòu)的分布式賬本形式來管理數(shù)據(jù),用戶與交易關(guān)聯(lián),通過共識(shí)機(jī)制將交易打包進(jìn)區(qū)塊,在挖礦過程中勝出的礦工將新區(qū)塊追加到鏈尾(同時(shí)獲得系統(tǒng)一定金額的挖礦獎(jiǎng)勵(lì)),由此形成一條以區(qū)塊為單位的前后有序連接的區(qū)塊鏈。由于區(qū)塊鏈起源于以比特幣為代表的加密數(shù)字貨幣,所以在相關(guān)的應(yīng)用和研究中大家習(xí)慣于借用加密數(shù)字貨幣的場(chǎng)景來描述區(qū)塊鏈中的概念和模型。因此,針對(duì)與用戶身份最緊密的交易對(duì)象,按照記賬方式的不同,可將區(qū)塊鏈交易模型分為以比特幣為代表的UTXO(unspent transaction outputs,未花費(fèi)的交易輸出)模型[12]和以以太坊為代表的賬戶(account)余額模型[13]。同時(shí),交易模型決定了區(qū)塊中交易的組織和管理模式,為此,針對(duì)比特幣的UTXO 模型提供了默克爾樹(Merkle tree)[14]組織交易,而針對(duì)以太坊的賬戶余額模型提供了默克爾帕特里夏樹(Merkle patricia tree,MPT)[15]組織交易。
1.2.1 UTXO模型
UTXO模型因比特幣的興起而進(jìn)入人們的視野,隨后大量公有鏈(如零幣[16]、門羅幣[17]、維基幣[18]等)和一些聯(lián)盟鏈(如Fabric[19]、Corda[20]、BigBang Core[21]等)廣泛采用該模型。本小節(jié)選取比特幣應(yīng)用場(chǎng)景,分析UTXO模型和默克爾樹的工作原理與應(yīng)用特點(diǎn)。
UTXO模型與賬戶模型不同,不存在具體的用戶賬戶來記錄詳細(xì)的交易過程和結(jié)果,而提供的是一個(gè)與具體交易地址相關(guān)聯(lián)的交易關(guān)系和交易金額的集合,是一個(gè)包括了交易數(shù)據(jù)和可執(zhí)行代碼的數(shù)據(jù)結(jié)構(gòu)[22]。如圖1 所示,在UTXO 模型中,每一筆交易(transaction)都由交易哈希(Tx_hash)、交易輸入(Inputs)和交易輸出(Outputs)3個(gè)基本屬性組成,相關(guān)描述如表1所示,其中交易哈希用于唯一地標(biāo)識(shí)本筆交易,每筆交易可能存在多個(gè)輸入和輸出。當(dāng)產(chǎn)生一個(gè)交易輸出時(shí),該輸出被鎖定,只有在進(jìn)行下一步交易時(shí)由該用戶的私鑰進(jìn)行解鎖,同時(shí),在一筆交易中需要調(diào)用一個(gè)未花費(fèi)的交易輸出作為本筆交易的輸入時(shí),也只能由該用戶進(jìn)行解鎖操作,以此來防止雙重花費(fèi)的發(fā)生。一筆交易的完整過程其實(shí)質(zhì)是對(duì)一定數(shù)量的輸入和輸出的封裝,并對(duì)封裝結(jié)果用交易哈希進(jìn)行標(biāo)識(shí)。UTXO 模型具有良好的可擴(kuò)展性,并在一定程度上提供了對(duì)交易隱私的保護(hù)功能。

表1 UTXO模型的屬性功能描述Table 1 Description of attributes of UTXO model

圖1 UTXO模型中的交易結(jié)構(gòu)Fig.1 Transaction structure in UTXO model
作為比特幣等主流區(qū)塊鏈系統(tǒng)使用的數(shù)據(jù)結(jié)構(gòu),默克爾樹利用基于哈希值的二叉樹結(jié)構(gòu)實(shí)現(xiàn)對(duì)交易數(shù)據(jù)的組織和完整性驗(yàn)證。默克爾樹是一種特殊的哈希列表(Hash list),其葉子節(jié)點(diǎn)存放交易數(shù)據(jù)的哈希值,依次將相鄰兩個(gè)哈希值串接后再計(jì)算其哈希值,將得到上一層節(jié)點(diǎn)的哈希值。依此類推,將最后形成的默克爾根(Merkle root)寫入?yún)^(qū)塊頭部指定的字段。默克爾樹為大規(guī)模數(shù)據(jù)結(jié)構(gòu)提供了針對(duì)交易數(shù)據(jù)的快速查詢和針對(duì)區(qū)塊數(shù)據(jù)的高效校驗(yàn)功能,其中,當(dāng)一個(gè)區(qū)塊中打包進(jìn)N個(gè)交易時(shí),查詢某個(gè)交易是否存在于該區(qū)塊的算法復(fù)雜度為lbN。同時(shí),利用區(qū)塊頭部字段信息的完整性和穩(wěn)定性,可以使得區(qū)塊頭部只保存默克爾根而不需要封裝底層的數(shù)據(jù),使得區(qū)塊鏈可以脫離底層數(shù)據(jù)而在計(jì)算能力和存儲(chǔ)空間有限的智能終端或物聯(lián)網(wǎng)設(shè)備上運(yùn)行,并支持輕量級(jí)的SPV(simplified payment verification,簡(jiǎn)化支付驗(yàn)證)[23]協(xié)議。
在UTXO模型中,每筆交易的輸入和輸出都對(duì)應(yīng)一個(gè)唯一的可動(dòng)態(tài)生成的交易地址,用戶與交易地址之間沒有顯性的對(duì)應(yīng)關(guān)系,交易地址為用戶的假名。根據(jù)交易需要,同一用戶可能會(huì)隨機(jī)生成多個(gè)不同的交易地址。同一筆交易中的不同輸入和輸出地址也可能屬于同一個(gè)用戶。雖然區(qū)塊鏈中的賬本是公開的,但從公開賬本中直接得出真實(shí)用戶身份的可能性是很小的。目前,也有研究者通過大數(shù)據(jù)分析技術(shù),借助機(jī)器學(xué)習(xí)等方法,并利用網(wǎng)絡(luò)地址、論壇公開信息等鏈下數(shù)據(jù)可以窺探出部分交易地址之間的關(guān)系以及交易與用戶之間的關(guān)聯(lián)性[24]。為解決上述問題,可通過信息混淆機(jī)制對(duì)交易信息進(jìn)行混淆,隱藏輸入地址與輸出地址之間以及不同交易地址之間的關(guān)系,增加隱私保護(hù)能力。加密數(shù)字貨幣中的混淆技術(shù)稱為“混幣技術(shù)”[25],根據(jù)是否借助第三方機(jī)構(gòu)的不同,可以分為中心化混幣技術(shù)和去中心化混幣技術(shù)兩種類型,與中心化混幣技術(shù)相比,去中心化混幣技術(shù)由于無須第三方機(jī)構(gòu)的參與,所以技術(shù)實(shí)現(xiàn)更便捷,方案實(shí)施更安全。
1.2.2 賬戶余額模型
賬戶余額模型是一種類似于銀行賬戶的傳統(tǒng)交易模型,賬戶與用戶相對(duì)應(yīng),交易在賬戶之間進(jìn)行,所有賬戶信息、交易記錄、當(dāng)前余額都存儲(chǔ)在賬戶中。除以太坊外,EOS(enterprise operation system,商用操作系統(tǒng))[26]、WisdomChian[27]、CITA[28]等使用賬戶余額模型。
以太坊使用賬戶余額模型的初衷是為了更好地支持智能合約,因?yàn)橹悄芎霞s需要一個(gè)相對(duì)穩(wěn)定的身份,而不是像UTXO 模型那樣頻繁地生成交易地址。以太坊中的賬戶分為外部賬戶(external owned account)和合約賬戶(contract account)兩種類型,其中外部賬戶由私鑰創(chuàng)建并用于交易和執(zhí)行合約代碼,而合約賬戶由外部賬戶或其他合約賬戶創(chuàng)建,且擁有一個(gè)賬戶地址,用于存儲(chǔ)合約代碼以及與合約相關(guān)的數(shù)據(jù)。
以太坊使用MPT 組織和管理用戶的賬戶數(shù)據(jù),并生成區(qū)塊中交易集合的哈希值。比特幣中的默克爾樹無法描述交易的資產(chǎn)持有者、合約狀態(tài)等信息,而MPT通過融合默克爾樹、Patricia 樹和Trie 樹的數(shù)據(jù)結(jié)構(gòu)特點(diǎn)[29],從而形成一種基于密碼學(xué)的自校驗(yàn)、防篡改的數(shù)據(jù)結(jié)構(gòu)。為了盡可能降低樹的高度,進(jìn)而降低操作的復(fù)雜度,MPT 采用RLP(recursive length prefix,遞歸長(zhǎng)度前綴)編碼來組織數(shù)據(jù),引入了空(empty)節(jié)點(diǎn)、葉子(leaf)節(jié)點(diǎn)、擴(kuò)展(extension)節(jié)點(diǎn)和分支(branch)節(jié)點(diǎn)類型,分別采用鍵/值(key/value)對(duì)來存儲(chǔ)數(shù)據(jù),將除葉子節(jié)點(diǎn)外的其他節(jié)點(diǎn)的數(shù)據(jù)存儲(chǔ)在LevelDB 關(guān)系型數(shù)據(jù)庫(kù)中。
只有滿足應(yīng)用需求的技術(shù)才是最優(yōu)的。有關(guān)UTXO模型和賬戶余額模型在交易的可追溯性、計(jì)算復(fù)雜度、空間(計(jì)算和存儲(chǔ))占用、可擴(kuò)展性、可編程性、應(yīng)用的靈活性和對(duì)跨鏈操作的支持等方面的比較如表2所示。

表2 UTXO模型與賬戶余額模型主要性能比較Table 2 Main performance comparison between UTXO model and account balance model
身份標(biāo)識(shí)是指信息系統(tǒng)中用于識(shí)別用戶身份唯一性的一種方法。區(qū)塊鏈系統(tǒng)采用密碼學(xué)算法生成身份憑證(身份標(biāo)識(shí)符)。無論采用UTXO 模型還是賬戶余額模型,區(qū)塊鏈系統(tǒng)都必須建立身份標(biāo)識(shí)機(jī)制來確定用戶的數(shù)字資產(chǎn)的權(quán)屬,再通過身份認(rèn)證機(jī)制來確保交易行為的可信性和可確認(rèn)性。具體而言,目前的公有鏈由于強(qiáng)調(diào)匿名性,所以多基于公鑰密鑰算法實(shí)現(xiàn)對(duì)用戶身份的標(biāo)識(shí),一般用公鑰作為身份憑證,用對(duì)應(yīng)的私鑰實(shí)現(xiàn)對(duì)身份的驗(yàn)證。而在聯(lián)盟鏈環(huán)境中,一般需要對(duì)用戶身份進(jìn)行實(shí)名認(rèn)證,所以聯(lián)盟鏈系統(tǒng)多直接采用傳統(tǒng)系統(tǒng)中已成熟的基于PKI(public key infrastructure,公鑰基礎(chǔ)設(shè)施)來管理用戶身份,利用數(shù)字證書作為用戶的身份標(biāo)識(shí)。其實(shí),不同區(qū)塊鏈環(huán)境下生成用戶身份憑證時(shí)都采用了公鑰密鑰算法,只是在不同類型區(qū)塊鏈中的實(shí)現(xiàn)方法不同。
為實(shí)現(xiàn)交易的匿名性,有效保護(hù)用戶隱私,比特幣、零幣、門羅幣等基于公有鏈的加密數(shù)字貨幣采用開放網(wǎng)絡(luò)架構(gòu),提供無準(zhǔn)入機(jī)制的匿名身份認(rèn)證模式。用戶利用錢包工具,基于公鑰密鑰算法生成和管理自己的身份,即通過公鑰派生出身份標(biāo)識(shí)符,用對(duì)應(yīng)的私鑰簽名完成身份認(rèn)證。
目前,區(qū)塊鏈系統(tǒng)一般采用公鑰密鑰算法中基于橢圓曲線數(shù)學(xué)的橢圓曲線密碼(elliptic curve cryptography,ECC)算法來生成用戶身份標(biāo)識(shí),依賴于橢圓曲線離散對(duì)數(shù)問題的困難性實(shí)現(xiàn)身份管理的安全性[30]。以比特幣為例,采用了加拿大Certicom公司推薦的secp256k1橢圓曲線密碼算法實(shí)現(xiàn)用戶的身份標(biāo)識(shí)和驗(yàn)證。比特幣用交易地址(Tx_Address)來間接地標(biāo)識(shí)用戶身份,具體由secp256k1 算法生成的公鑰(key_pub)經(jīng)SHA256和RIPEMD160 兩次哈希運(yùn)算生成的160 bit 的字符(具體為40 位十六進(jìn)制數(shù))來表示,其運(yùn)算過程為(實(shí)現(xiàn)過程如圖2 所示,其中Base58Check 編碼用于將比特幣中的字節(jié)數(shù)組編碼為可分類、易讀的字符串):

圖2 區(qū)塊鏈交易地址的生成過程Fig.2 Blockchain transaction address generation process
Tx_Address=RIPEMD160(SHA256(key-pub))
每筆交易地址對(duì)應(yīng)的私鑰存放在用戶端的錢包中,只有通過私鑰才能訪問和使用對(duì)應(yīng)交易地址中鎖定的資產(chǎn),一旦私鑰丟失或被竊取,對(duì)應(yīng)交易地址中的資產(chǎn)將全部丟失。區(qū)塊鏈錢包的功能不僅僅是用戶私鑰的創(chuàng)建、存儲(chǔ)和運(yùn)用,還包括交易地址的生成。以比特幣為例,其公鑰密鑰對(duì)的生成有兩種方法:一種是利用錢包通過偽隨機(jī)數(shù)生成器(pseudorandom number generator,PRNG)生成一個(gè)256 bit 的私鑰,然后使用橢圓曲線數(shù)字簽名算法(elliptic curve digital signature algorithm,ECDSA)再生成對(duì)應(yīng)的公鑰;另一種方法是將錢包中的私鑰作為種子(seed)密鑰,再利用密鑰派生函數(shù)(key derivation function)生成真正用于交易的私鑰,然后再通過橢圓曲線生成公鑰。后一種錢包稱之為HD(hierarchical deterministic,分層確定性)錢包[31]。為此,錢包中首先生成私鑰(private key),然后利用私鑰生成公鑰(public key),再利用公鑰經(jīng)轉(zhuǎn)換后生成地址(address),3者之間的關(guān)系如圖3所示。

圖3 比特幣私鑰、公鑰和地址之間的關(guān)系Fig.3 Relationship between private key,public key,and address of Bitcoin
HD 錢包也稱為“身份錢包”,采用分層確定性算法通過對(duì)種子密鑰的逐層擴(kuò)展得到私鑰,繼而得到擴(kuò)展公鑰和地址。HD錢包是目前廣泛使用的虛擬貨幣錢包標(biāo)準(zhǔn),錢包中密鑰對(duì)的生成過程在BIP(Bitcoin improvement proposal,比特幣改進(jìn)建議)32[32]中進(jìn)行了詳細(xì)描述,具體過程如圖4所示。BIP 32建議提出使用種子生成樹形結(jié)構(gòu)的密鑰,HD錢包只需要保存種子,在不同的應(yīng)用場(chǎng)景下可通過種子派生出不同的私鑰,再由私鑰生成公鑰,直至生成地址。

圖4 比特幣HD錢包中密鑰的派生過程Fig.4 Derivation process of key in Bitcoin HD wallet
與以比特幣為代表的加密數(shù)字貨幣不同的是,許多聯(lián)盟鏈(如Fabric、Corda 等)需要對(duì)用戶身份進(jìn)行嚴(yán)格審核后才決定是否允許其以實(shí)名方式加入,PKI作為一種建立在公鑰加密基礎(chǔ)上的安全架構(gòu),不但是傳統(tǒng)系統(tǒng)中提供身份認(rèn)證、信息安全、訪問控制等服務(wù)的關(guān)鍵技術(shù),同時(shí)也是強(qiáng)監(jiān)管環(huán)境下區(qū)塊鏈身份管理的主要選擇。
PKI由硬件、軟件、人員、策略和過程等共同組了一個(gè)分布式環(huán)境基礎(chǔ)設(shè)施,用于數(shù)字證書的創(chuàng)建、分發(fā)、使用、存儲(chǔ)和撤銷等全生命周期的管理。通過PKI 系統(tǒng),終端用戶將在分布式環(huán)境中擁有數(shù)字簽名和基于公鑰加密的數(shù)據(jù)保護(hù)能力,PKI是用于實(shí)現(xiàn)安全交易和通信的安全架構(gòu)的基石[33]。數(shù)字證書、公鑰和私鑰、證書授權(quán)中心以及證書撤銷列表構(gòu)成了PKI 的4 個(gè)關(guān)鍵要素。在PKI 中,由證書認(rèn)證中心(certification authority,CA)為用戶簽發(fā)數(shù)字證書,數(shù)字證書中存放有由CA簽發(fā)給用戶的用于標(biāo)識(shí)身份唯一性的公鑰,同時(shí)綁定了證書發(fā)行者對(duì)證書的簽名、證書的發(fā)行機(jī)構(gòu)名稱、證書的有效期等信息。在一個(gè)完整的PKI系統(tǒng)中,還提供有用于認(rèn)證用戶身份的“注冊(cè)機(jī)構(gòu)”(registration authority,RA)、存儲(chǔ)已簽發(fā)證書和公鑰的“數(shù)字證書庫(kù)”、記錄已失效證書的“證書撤銷列表”(certificate revocation list,CRL)以及與應(yīng)用程序之間進(jìn)行對(duì)接的“應(yīng)用程序接口(API)”等內(nèi)容。如圖5所示,PKI用戶首先向可信CA申領(lǐng)數(shù)字證書,通過身份信息審核的用戶獲得經(jīng)CA簽名的數(shù)字證書,并將其保存在本地計(jì)算機(jī)中,用來驗(yàn)證與之通信的其他PKI用戶的數(shù)字證書鏈,以此來獲得該用戶的公鑰,從而實(shí)現(xiàn)對(duì)用戶身份的可信驗(yàn)證。

圖5 數(shù)字證書的申領(lǐng)和使用過程Fig.5 Digital certificate application and use process
通常情況下,PKI由根CA(root CA)和一系列中間CA(intermediate CA)組成的信任鏈建立可驗(yàn)證的身份管理體系,即采用分層結(jié)構(gòu)。在該結(jié)構(gòu)中,根CA一般不直接向用戶頒發(fā)證書,而由根CA 簽發(fā)的中間CA 實(shí)現(xiàn)對(duì)實(shí)體或用戶的證書頒發(fā)與管理,以確保CA服務(wù)的安全性、高效性和可擴(kuò)展性。例如,可以在根CA 下創(chuàng)建CA-A和CA-B,其中CA-A頒發(fā)的證書用于實(shí)名認(rèn)證,而CA-B頒發(fā)的證書用于匿名認(rèn)證,使CA-A和CA-B分別服務(wù)于不同認(rèn)證方式的系統(tǒng)。同時(shí),也可以根據(jù)認(rèn)證需要,建立根CA 下不同CA 之間的關(guān)聯(lián),當(dāng)需要進(jìn)行實(shí)名認(rèn)證時(shí)直接使用CA-A頒發(fā)的證書,而針對(duì)用一用戶需要進(jìn)行匿名認(rèn)證時(shí),則由CA-A頒發(fā)的證書自動(dòng)派生出CA-B下的證書,由被派生出的證書進(jìn)行匿名認(rèn)證,而且在后臺(tái)(CA 管理端)做到匿名與實(shí)名之間的關(guān)聯(lián)[34],以便于實(shí)現(xiàn)對(duì)用戶的監(jiān)管。
分布式數(shù)字身份也稱為自主管理的數(shù)字身份,它使用用戶自己獨(dú)立擁有的數(shù)字標(biāo)識(shí)符和可驗(yàn)證憑據(jù)來實(shí)現(xiàn)受信任的數(shù)據(jù)交換,其目的是使用區(qū)塊鏈、分布式賬本和公鑰密鑰加密技術(shù)來保護(hù)隱私,實(shí)現(xiàn)安全的在線交互。基于區(qū)塊鏈技術(shù)的去中心化身份(decentralized identity,DID)是一種不依賴于中心化機(jī)構(gòu)作為信用背書的數(shù)字身份,目前主要有W3C的DID[35]和DIF(decentralized identity foundation,去中心化身份基金會(huì))的DID[36]兩個(gè)標(biāo)準(zhǔn)。其中,W3C 的DID 主要致力于“DID規(guī)范”(DID specification)和“可驗(yàn)證憑證”(verifiable credentials,VC)兩個(gè)方面展開研究,如圖6 所示;而DIF的DID 目標(biāo)是通過創(chuàng)建通用的身份驗(yàn)證協(xié)議以提高區(qū)塊鏈系統(tǒng)的互操作性,推動(dòng)基于開源代碼的去中心化標(biāo)準(zhǔn)的創(chuàng)建。需要說明的是,雖然區(qū)塊鏈技術(shù)不是DID的必選項(xiàng),但從目前的技術(shù)實(shí)現(xiàn)來看,區(qū)塊鏈技術(shù)能夠有效地推動(dòng)DID技術(shù)的實(shí)現(xiàn)和應(yīng)用推廣,便于以較低成本實(shí)現(xiàn)DID 信任體系的構(gòu)建。為此,本節(jié)選取W3C 的DID,主要基于區(qū)塊鏈技術(shù)的DID進(jìn)行闡述。

圖6 W3C的DID組成Fig.6 W3C DID composition
2.3.1 DID規(guī)范
DID 規(guī)范由DID 標(biāo)識(shí)符和DID 文檔兩部分組成。其中,DID 標(biāo)識(shí)符是一個(gè)去心化的全局標(biāo)識(shí)符,是實(shí)現(xiàn)自主身份(self-sovereign identity,SSI)[37]的基本身份標(biāo)識(shí)。利用DID可以在實(shí)體之間建立可信的通道,實(shí)現(xiàn)信息交換和身份認(rèn)證,而無需任何中心化機(jī)構(gòu)的干預(yù)。DID規(guī)范通過使用生成具有足夠熵的128位值的算法,使得在DID 標(biāo)識(shí)符集合中幾乎不可能出現(xiàn)兩個(gè)完全相同的DID標(biāo)識(shí)符,實(shí)現(xiàn)了DID標(biāo)識(shí)符在身份識(shí)別空間的唯一性。由于DID建立在區(qū)塊鏈技術(shù)上,所以DID標(biāo)識(shí)符的生成和管理不需要依賴于PKI中的CA或其他任何第三方,使得用戶的身份信息完全掌控在自己手中。
DID標(biāo)識(shí)符是通過DID URL關(guān)聯(lián)到描述目標(biāo)對(duì)象的DID文檔(DID document)的唯一標(biāo)識(shí)符,即通過DID標(biāo)識(shí)符能夠在注冊(cè)數(shù)據(jù)庫(kù)中找到與之對(duì)應(yīng)的DID 文檔。DID 標(biāo)識(shí)符的命名方式為<did:+DID method:+DID Method Specific Identifier>,示例如“did:example:123456789abcdefghi”,類似于TCP/IP 中的“http://www.http://cea.ceaj.org”。DID 標(biāo)識(shí)符各字段的功能描述如表3所示。

表3 DID標(biāo)識(shí)符各字段功能描述Table 3 DID identifier function description of each field
每個(gè)DID標(biāo)識(shí)符對(duì)應(yīng)一個(gè)DID文檔,該文檔包含有所有與實(shí)體DID 標(biāo)識(shí)符相關(guān)的信息。DID 文檔是一個(gè)通用數(shù)據(jù)結(jié)構(gòu),驗(yàn)證DID標(biāo)識(shí)符時(shí)所有使用的公鑰信息以及采用的驗(yàn)證方法(主要有公鑰驗(yàn)證和數(shù)字證書)等內(nèi)容都包含在該文檔中。DID 文檔通常由DID 控制器(DID controller)負(fù)責(zé)數(shù)據(jù)的寫入和更改,DID控制器既可以是實(shí)體本身,也可以是第三方機(jī)構(gòu)。DID標(biāo)識(shí)符與DID 文檔之間利用類似于互聯(lián)網(wǎng)DNS 的DID 解析器進(jìn)行一對(duì)一地映射。DID 規(guī)范采用鍵/值<key/value>方式在數(shù)據(jù)庫(kù)或分布式賬本中記錄和存儲(chǔ)信息,其中DID標(biāo)識(shí)符是鍵,而DID文檔是對(duì)應(yīng)的值。DID文檔由DID實(shí)體、公鑰、身份驗(yàn)證、授權(quán)、服務(wù)端點(diǎn)和時(shí)間戳等字段組成。
(1)DID實(shí)體(DID subject)。指該DID文檔描述的對(duì)象,通常一個(gè)實(shí)體可以同時(shí)擁有多個(gè)身份,每個(gè)身份分配一個(gè)唯一的DID以及與之關(guān)聯(lián)的公私鑰對(duì),不同身份之間沒有關(guān)聯(lián)。每個(gè)DID文檔對(duì)應(yīng)一個(gè)DID實(shí)體。
(2)公鑰(public key)。實(shí)現(xiàn)身份認(rèn)證和其他的加密操作(如與服務(wù)端點(diǎn)之間建立安全通道),當(dāng)DID文檔中的公鑰被撤銷或失效時(shí),DID文檔必須包含或引用相應(yīng)的撤銷列表。
(3)身份驗(yàn)證(authentication)。是指DID 實(shí)體通過基于密碼學(xué)的加密方式來明證其與DID相關(guān)聯(lián)的過程。
(4)授權(quán)(authorization)。是指委托其他實(shí)體執(zhí)行操作,例如,當(dāng)密鑰丟失時(shí)可委托指定的實(shí)體更新DID文檔內(nèi)容以恢復(fù)密鑰。
(5)服務(wù)端點(diǎn)(service endpoint)。用于描述實(shí)體希望公告的任何類型的服務(wù),包括身份認(rèn)證、授權(quán)、交互等去中心化身份管理服務(wù)。
(6)時(shí)間戳(time stamp)。用于證明DID 文檔自指定時(shí)間(時(shí)間戳確定的時(shí)間)后內(nèi)容保護(hù)完整、未被更改。DID 文檔的內(nèi)容一經(jīng)更新,將會(huì)產(chǎn)生一個(gè)新的時(shí)間戳。
需要強(qiáng)調(diào)的是,每個(gè)DID標(biāo)識(shí)符對(duì)應(yīng)的DID文檔是獨(dú)立的,以此來實(shí)現(xiàn)不同DID 標(biāo)識(shí)符之間的信息隔離。在進(jìn)行身份認(rèn)證過程中,DID標(biāo)識(shí)符擁有者可以根據(jù)需要對(duì)不同的DID標(biāo)識(shí)符進(jìn)行授權(quán),驗(yàn)證者只能查閱被授權(quán)的DID 文檔內(nèi)容,而無法獲得其他更多的信息,從而實(shí)現(xiàn)了DID實(shí)體的信息保護(hù)。
2.3.2 可驗(yàn)證憑證
DID 標(biāo)識(shí)符和DID 文檔本身都不包含實(shí)體的真實(shí)信息,如自然人實(shí)體的用戶姓名、家庭住址、手機(jī)號(hào)碼等,可驗(yàn)證憑證規(guī)范的主要功能便是建立DID與現(xiàn)實(shí)世界中實(shí)體之間的關(guān)聯(lián)。具體講,可驗(yàn)證憑證用于定義可在實(shí)體之間交換的憑證格式,并提供關(guān)于實(shí)體的屬性說明。
聲明(claims)是指與身份關(guān)聯(lián)的屬性信息,它是一種斷言(assert)數(shù)字身份的方式,獨(dú)立于任何需要依賴它的特定系統(tǒng)。以自然人為例,聲明信息包括用戶姓名、身份證信息、受教育情況、家庭住址等內(nèi)容。聲明可以由個(gè)人或組織等單一身份所有者自行發(fā)起,也可以由發(fā)行者(issuer)簽發(fā),當(dāng)一個(gè)聲明由發(fā)行者簽發(fā)時(shí)稱之為可驗(yàn)證聲明(verified claims)。多項(xiàng)聲明的集合稱為憑證(credentials)。如圖7所示,可驗(yàn)證憑證系統(tǒng)中的聲明通常由發(fā)行者(issuer)、驗(yàn)證者(inspector)、持有者(holder)和可驗(yàn)證身份注冊(cè)表(identifier registry)4部分組成,每部分的功能描述如表4 所示。其中,由請(qǐng)求者向發(fā)行者請(qǐng)求發(fā)行聲明,發(fā)行者向持有者簽發(fā)可驗(yàn)證聲明,再由持有者向驗(yàn)證者披露可驗(yàn)證表述,最后由驗(yàn)證者向身份依賴者驗(yàn)證可驗(yàn)證表述。

表4 可驗(yàn)證憑證系統(tǒng)中的聲明組成Table 4 Claims in verifiable credential system

圖7 可驗(yàn)證憑證模型Fig.7 Verifiable credential model
聲明(或憑證)交換的核心技術(shù)是密碼學(xué),主要用于證明可驗(yàn)證聲明或可驗(yàn)證表述(verifiable presentation)[38]中信息的完整性與真實(shí)性。可驗(yàn)證表述是一種防篡改描述,它來自一個(gè)或多個(gè)可驗(yàn)證憑證,并由披露這些憑證的實(shí)體用私鑰進(jìn)行簽名。聲明持有人可以使用零知識(shí)證明(zero-knowledge proofs,ZKP)[39]將不同聲明之間披露的信息量減至最小。憑證和對(duì)應(yīng)的私鑰存放在代表實(shí)體身份數(shù)據(jù)容器的身份錢包中,身份錢包是將身份控制權(quán)置于身份所有者手中的保證。
2.3.3 DID應(yīng)用場(chǎng)景
在去中心化數(shù)字身份系統(tǒng)中,實(shí)體通過向DID身份注冊(cè)機(jī)構(gòu)提出申請(qǐng)以獲得用于標(biāo)識(shí)該實(shí)體身體唯一性的DID標(biāo)識(shí)符,然后依托DID標(biāo)識(shí)符向發(fā)證方申請(qǐng)各類可驗(yàn)證憑證,最后通過向身份驗(yàn)證方提供DID標(biāo)識(shí)符和可驗(yàn)證憑證以證明自己身份的真實(shí)性和可信性,從而完成身份認(rèn)證操作。在去中心化數(shù)字身份系統(tǒng)中,一個(gè)實(shí)體的數(shù)字身份組成如圖8所示。

圖8 實(shí)體的去中心化數(shù)字身份組成Fig.8 Decentralized identity composition of entity
目前,已經(jīng)推出的DID 項(xiàng)目有Microsoft DID[40]、基于以太坊的分布式數(shù)字身份管理服務(wù)uPort[41]、微眾銀行推出的基于聯(lián)盟鏈身份的實(shí)體身份標(biāo)識(shí)和可信數(shù)據(jù)交換解決方案Weldentity[42-43]等。例如,WeIdentity 主要包括DID 規(guī)范和Credential 兩部分,其中DID 規(guī)范模塊在FISCO-BCOS[44]區(qū)塊鏈底層平臺(tái)上實(shí)現(xiàn)了W3C 的DID規(guī)范,Credential 提供了一套基于W3C 可驗(yàn)證憑證規(guī)范的解決方案,以新入職員工背景調(diào)查為例,首先,員工、學(xué)校、公司分別進(jìn)行DID 注冊(cè)及KYC(know your customer,客戶身份識(shí)別)認(rèn)證;然后,員工向?qū)W校申請(qǐng)學(xué)歷學(xué)位證明憑證(Credential),并向前雇主公司申請(qǐng)工作及離職證明憑證;接著,員工將這些憑證提交給現(xiàn)雇主公司,現(xiàn)雇主公司通過憑證驗(yàn)證(verify)接口對(duì)上述憑證進(jìn)行驗(yàn)證;最后,如果驗(yàn)證通過,現(xiàn)雇主公司將給該員工發(fā)放入職通知。在此過程中,任何參與身份管理的一方都沒有泄露該員工的身份信息,實(shí)現(xiàn)了身份信息的有效保護(hù)。
表5從實(shí)現(xiàn)原理、實(shí)現(xiàn)方式、安全性、隱私性和中心化程度等方面,對(duì)3種身份標(biāo)識(shí)技術(shù)進(jìn)行了對(duì)比分析。

表5 身份標(biāo)識(shí)技術(shù)比較Table 5 Identification technology comparison
簡(jiǎn)單講,身份標(biāo)識(shí)用于說明“我是誰”,而身份認(rèn)證則用于證明“你是誰”。身份認(rèn)證系統(tǒng)對(duì)用戶提供的身份信息進(jìn)行驗(yàn)證,以證明該身份的真實(shí)性、合法性和不可抵賴性。在區(qū)塊鏈系統(tǒng)中,交易是與用戶緊密關(guān)聯(lián)的最小數(shù)據(jù)單位,所以身份認(rèn)證的功能便是確認(rèn)交易者具體身份、建立交易者與交易信息之間的聯(lián)系。從安全角度出發(fā),區(qū)塊鏈系統(tǒng)中的身份認(rèn)證是一個(gè)確定用戶是否能夠?qū)灰讛?shù)據(jù)訪問或操作的過程,也是一個(gè)對(duì)訪問或操作者的具體身份信息進(jìn)行確認(rèn)并防范可能發(fā)生的抵賴現(xiàn)象的過程。根據(jù)應(yīng)用場(chǎng)景和實(shí)現(xiàn)方式的不同,可將區(qū)塊鏈系統(tǒng)的身份認(rèn)證分為匿名身份認(rèn)證、實(shí)名身份認(rèn)證和可控匿名身份認(rèn)證3種類型。
匿名身份認(rèn)證是指用戶在注冊(cè)過程中無需提供身份信息便可以獲得身份標(biāo)識(shí)并用于系統(tǒng)認(rèn)證。匿名的目的是隱藏真實(shí)的身份信息,而不是在信息交互過程中不需要提供身份標(biāo)識(shí),只是無法通過線上身份標(biāo)識(shí)符來直接獲取到線下實(shí)體的真實(shí)身份信息。以比特幣、以太坊為代表的公有鏈系統(tǒng)采用無準(zhǔn)入機(jī)制的開放系統(tǒng)架構(gòu),為用戶提供匿名身份認(rèn)證方式,以隱藏交易者的真實(shí)身份信息,起到了保護(hù)交易者隱私的功能。
在無準(zhǔn)入機(jī)制的區(qū)塊鏈系統(tǒng)中,用戶多采用錢包方式進(jìn)行系統(tǒng)注冊(cè),注冊(cè)過程無需提供用戶身份信息。成功注冊(cè)后將生成一個(gè)私鑰,然后通過該私鑰利用橢圓曲線密碼算法生成對(duì)應(yīng)的公鑰(具體過程見圖2所示),其中公鑰經(jīng)轉(zhuǎn)換后作為交易者的身份標(biāo)識(shí)符,利用對(duì)應(yīng)的私鑰簽名實(shí)現(xiàn)身份認(rèn)證。在此過程中,始終未出現(xiàn)過用戶的真實(shí)身份信息,實(shí)現(xiàn)了認(rèn)證過程的匿名性。另外,在UTXO 模型中,使用了假名機(jī)制以實(shí)現(xiàn)交易的匿名性,即用戶在進(jìn)行交易時(shí),涉及到的交易輸入和輸出地址都以假名形式出現(xiàn),即使同一筆交易中有關(guān)同一用戶的不同地址之間也沒有顯性的關(guān)聯(lián)性,實(shí)現(xiàn)了交易過程中對(duì)用戶真實(shí)身份信息的保護(hù)。
由于區(qū)塊鏈賬本的公開性和多方確認(rèn)等特征,攻擊者通過對(duì)賬本數(shù)據(jù)的聚類分析便可將交易信息關(guān)聯(lián)到具體的身份,所以使匿名身份認(rèn)證對(duì)用戶隱私的保護(hù)效果具有一定的局限性。為此,在對(duì)身份和交易信息的匿名要求較高的區(qū)塊鏈系統(tǒng)中,引入了身份隱藏機(jī)制來實(shí)現(xiàn)對(duì)用戶身份隱私的進(jìn)一步保護(hù)[45]。
在匿名認(rèn)證過程中,身份認(rèn)證者向應(yīng)用系統(tǒng)中的身份證明者模塊提交表示可以訪問該系統(tǒng)的身份憑證,服務(wù)證明者模塊只能判斷出該身份憑證擁有訪問系統(tǒng)的資格,但無法確認(rèn)具體的身份信息。但在很多情況下,憑證中披露的信息往往超出身份證明者需要的信息,帶來用戶身份隱私泄露的風(fēng)險(xiǎn)。為解決此問題,一種稱為匿名憑證(anonymous credential)[46]的解決方案提出被得到應(yīng)用。匿名憑證是一種由憑證發(fā)行者提供的包含用戶信息的特殊憑證,它用于發(fā)送聲明信息,但不包含具體與聲明相關(guān)的明文或密文信息,只是提供有關(guān)聲明結(jié)果的密碼學(xué)驗(yàn)證方法。這樣,服務(wù)提供商將無法得到具體的憑證內(nèi)容,也無法利用該憑證模擬其他用戶身份進(jìn)行中間人(man in the middle,MITM)[47]攻擊,提高了認(rèn)證過程的用戶身份隱私性。
實(shí)名身份認(rèn)證是指從用戶身份標(biāo)識(shí)到身份認(rèn)證的身份管理全生命周期過程中涉及到的用戶身份都是真實(shí)的,其中身份標(biāo)識(shí)的實(shí)名制是實(shí)現(xiàn)實(shí)名身份認(rèn)證的前提和保證。實(shí)名身份認(rèn)證是強(qiáng)監(jiān)管系統(tǒng)中身份管理的基本要求,為用戶提供準(zhǔn)入機(jī)制并保證交易、交流等行為符合監(jiān)管規(guī)定。區(qū)塊鏈系統(tǒng)中的實(shí)名身份認(rèn)證在沿用了傳統(tǒng)系統(tǒng)中的PKI/CA身份認(rèn)證或動(dòng)態(tài)口令認(rèn)證方式的基礎(chǔ)上,結(jié)合了區(qū)塊鏈中交易數(shù)據(jù)的防篡改性和公開透明性等特點(diǎn),一方面解決了區(qū)塊鏈系統(tǒng)的身份認(rèn)證需求,另一方面將區(qū)塊鏈的功能和特征應(yīng)用于自身的身份認(rèn)證過程。整體來看,區(qū)塊鏈中的身份認(rèn)證是基于中心化機(jī)制的身份管理與去中心化或部分去中心化的區(qū)塊鏈應(yīng)用相模式的結(jié)合,其實(shí)質(zhì)是將身份認(rèn)證模塊嵌入到區(qū)塊鏈系統(tǒng)中,在一個(gè)已通過身份認(rèn)證的準(zhǔn)入環(huán)境中部署區(qū)塊鏈系統(tǒng)。
3.2.1 基于PKI/CA的身份認(rèn)證
區(qū)塊鏈系統(tǒng)中的實(shí)名身份認(rèn)證多出現(xiàn)在采用準(zhǔn)入機(jī)制的聯(lián)盟鏈中(如Fabric、Corda等),其基本實(shí)現(xiàn)方式之一是在區(qū)塊鏈系統(tǒng)中部署PKI/CA來生成和管理數(shù)字證書,建立用戶與CA 之間的信任關(guān)系。用戶向CA 提交實(shí)名身份注冊(cè)信息,CA 核實(shí)用戶身份信息并對(duì)通過審核的用戶生成一對(duì)非對(duì)稱密鑰,其中公鑰封裝在數(shù)字證書中,用戶從CA處獲得所選取用戶的數(shù)字證書和自己的私鑰,在之后的交易過程中就可以使用數(shù)字證書作為身份標(biāo)識(shí),用私鑰簽名實(shí)現(xiàn)身份認(rèn)證。由于用戶真實(shí)身份信息已綁定到CA頒發(fā)的自簽名證書上,所以在認(rèn)證過程只需要驗(yàn)證CA自簽名證書的有效性,提升了認(rèn)證效率。同時(shí),證書由PKI 中的第三方可信CA 進(jìn)行監(jiān)管,減輕了系統(tǒng)運(yùn)行的額外負(fù)擔(dān)。另外,考慮到身份認(rèn)證系統(tǒng)中CA 的重要性,F(xiàn)abric 提供了一個(gè)稱為“Fabric CA”的內(nèi)置CA 組件,允許用戶在自己的區(qū)塊鏈網(wǎng)絡(luò)中創(chuàng)建一個(gè)私有根CA 來提供和管理具有X.509 數(shù)字證書,用于對(duì)Fabric用戶的身份認(rèn)證。
隱私保護(hù)是區(qū)塊鏈的一項(xiàng)內(nèi)生功能,而基于PKI/CA 數(shù)字證書的身份管理機(jī)制則與之相沖突[48]。很顯然,區(qū)塊鏈借助于中心化的PKI機(jī)制實(shí)現(xiàn)了用戶身份認(rèn)證的實(shí)名化,但卻帶來了嚴(yán)重的隱私泄露問題,攻擊者通過對(duì)賬本中交易信息的分析可以窺探出不同用戶之間以及不同交易之間的關(guān)聯(lián)性,用戶的交易隱私幾乎暴露無遺。為此,在采用實(shí)名制的聯(lián)盟鏈中進(jìn)行有效的用戶隱私保護(hù),就需要提供一套有效的賬本保護(hù)機(jī)制,只允許特權(quán)用戶來訪問賬本信息,而不是像公有鏈那樣將賬本公開給所有用戶。
3.2.2 基于區(qū)塊鏈的PKI身份認(rèn)證
基于PKI/CA的身份認(rèn)證在傳統(tǒng)信息系統(tǒng)中正在發(fā)揮著極其重要的作用,但針對(duì)區(qū)塊鏈應(yīng)用場(chǎng)景中交易的高頻發(fā)、匿名等要求,在效率、可靠性、安全和隱私等方面存在不足,尤其是PKI 主要依賴于中心化的CA 來頒發(fā)、存儲(chǔ)和管理密鑰對(duì),很容易出現(xiàn)中間人攻擊,為加密通信和身份隱私帶來了安全隱患。區(qū)塊鏈系統(tǒng)中交易數(shù)據(jù)的不可篡改性、賬本信息的公開透明性等特征以及智能合約的應(yīng)用,為構(gòu)建基于區(qū)塊鏈的PKI身份認(rèn)證技術(shù)提供了保障[49-51]。
作為首個(gè)基于區(qū)塊鏈的PKI 項(xiàng)目,CertCoin[52]摒棄了傳統(tǒng)PKI/CA中的CA,將公鑰證書和域名發(fā)布在區(qū)塊鏈上,通過公開透明和分布式存儲(chǔ)的區(qū)塊鏈賬本來替代CA,為區(qū)塊鏈用戶提供身份驗(yàn)證方案。同時(shí),CertCoin系統(tǒng)引入了累加器和布隆過濾器技術(shù),使得區(qū)塊鏈系統(tǒng)使用較小的存儲(chǔ)空間來保存證書。圖9 給出了基于區(qū)塊鏈的PKI身份認(rèn)證系統(tǒng)的操作示意圖,其中主要的操作過程如下:

圖9 基于區(qū)塊鏈的PKI身份認(rèn)證示意圖Fig.9 Schematic diagram of PKI identity authentication based on blockchain
(1)證書申請(qǐng)。用戶生成SSL 自簽名證書,向數(shù)字證書的注冊(cè)節(jié)點(diǎn)提交證書發(fā)布申請(qǐng)。注冊(cè)節(jié)點(diǎn)對(duì)申請(qǐng)者提交的證書和用戶身份進(jìn)行驗(yàn)證,對(duì)通過驗(yàn)證的證書發(fā)布申請(qǐng)經(jīng)簽名后提交給區(qū)塊鏈系統(tǒng)。
(2)證書發(fā)布。區(qū)塊鏈系統(tǒng)中的節(jié)點(diǎn)在接收到證書發(fā)布申請(qǐng)后,會(huì)對(duì)證書格式、內(nèi)容及持有者的簽名等信息進(jìn)行驗(yàn)證,通過驗(yàn)證的合法證書發(fā)布申請(qǐng)將被共識(shí)算法打包進(jìn)區(qū)塊,即將證書內(nèi)容和證書狀態(tài)寫入?yún)^(qū)塊鏈。
(3)證書更新與撤銷。當(dāng)用戶在證書到期之前需要對(duì)其進(jìn)行更新或需要對(duì)正在使用的證書進(jìn)行撤銷時(shí),可通過注冊(cè)節(jié)點(diǎn)向區(qū)塊鏈系統(tǒng)提交更新或撤銷申請(qǐng),區(qū)塊鏈系統(tǒng)在對(duì)申請(qǐng)內(nèi)容和申請(qǐng)者身份進(jìn)行驗(yàn)證后,通過調(diào)用智能合約對(duì)分布式賬本中的證書進(jìn)行更新操作或設(shè)置為撤銷狀態(tài),并將結(jié)果寫入?yún)^(qū)塊鏈。
(4)證書查詢與應(yīng)用。在證書使用中需要對(duì)證書的真實(shí)性和合法性進(jìn)行查詢時(shí),證書依賴方首先從證書持有者處獲得完整證書或證書摘要,然后通過證書查詢節(jié)點(diǎn)向區(qū)塊鏈系統(tǒng)求證證書的合法性和有效性。
由于區(qū)塊鏈的不可篡改性,寫入?yún)^(qū)塊鏈的證書無法被修改或刪除,這在確保了證書應(yīng)用和管理的安全性的同時(shí),卻為證書的更新和撤銷帶來了困難。利用區(qū)塊鏈智能合約和共識(shí)機(jī)制可以解決這一問題[53]。在證書過期后,證書持有者通過智能合約對(duì)原有證書進(jìn)行更新從而生成新證書并寫入?yún)^(qū)塊,同時(shí)聲明用新證書來替代原有證書的使用。這樣,原有證書將永久保存在區(qū)塊鏈中,而新的證書將作為唯一合法有效的證書來使用。此功能還實(shí)現(xiàn)了PKI 系統(tǒng)的可審計(jì)性及對(duì)證書應(yīng)用的溯源功能。
圖10是傳統(tǒng)PKI/CA系統(tǒng)與基于區(qū)塊鏈的PKI系統(tǒng)之間的區(qū)別。可以看出,在傳統(tǒng)PKI/CA 機(jī)制中,CA 基于對(duì)用戶的信任來對(duì)用戶提供的公鑰、DID 等簽發(fā)證書,在使用證書時(shí),證書依賴方需要向CA進(jìn)行證書狀態(tài)查詢。而基于區(qū)塊鏈的PKI 機(jī)制通過去中心化特征建立信任關(guān)系,將傳統(tǒng)CA集中式的證書發(fā)放轉(zhuǎn)變?yōu)橐苑植际椒绞降淖詣?dòng)實(shí)現(xiàn)。用戶可自行生成自簽名證書,再經(jīng)注冊(cè)節(jié)點(diǎn)驗(yàn)證后提交給區(qū)塊鏈系統(tǒng),通過礦工節(jié)點(diǎn)的驗(yàn)證和共識(shí)后,證書將被寫入?yún)^(qū)塊。在證書使用過程中,用戶需要將證書提交給認(rèn)證方,認(rèn)證方再通過區(qū)塊鏈系統(tǒng)驗(yàn)證證書的合法性和有效性。

圖10 兩種類型PKI系統(tǒng)之間的區(qū)別Fig.10 Dfference between two types of PKI systems
基于區(qū)塊鏈的PKI 身份認(rèn)證方式在解決了傳統(tǒng)PKI/CA 固有的安全性差、存在單點(diǎn)故障、多CA 部署復(fù)雜、證書查詢過于依賴CA等問題的同時(shí),利用區(qū)塊鏈自身的技術(shù)特點(diǎn)可以提升區(qū)塊鏈用戶身份認(rèn)證的一些性能。例如,利用分布式賬本的特性,在基于區(qū)塊鏈的PKI系統(tǒng)中不再需要CRL服務(wù),而且對(duì)證書狀態(tài)信息的更新可以快速得到應(yīng)用,同時(shí)避免了傳統(tǒng)PKI/CA 中的單點(diǎn)故障問題;再如,利用區(qū)塊鏈的去中心化特征,由區(qū)塊鏈中的共識(shí)節(jié)點(diǎn)共同對(duì)證書進(jìn)行驗(yàn)證,并將結(jié)果保存在區(qū)塊鏈中,供區(qū)塊鏈用戶進(jìn)行身份認(rèn)證時(shí)使用。除此之外,基于區(qū)塊鏈的PKI還可以支持X.509證書[54],以兼容傳統(tǒng)PKI/CA,同時(shí)通過自行搭建證書驗(yàn)證節(jié)點(diǎn),實(shí)現(xiàn)證書狀態(tài)的本地驗(yàn)證,以擴(kuò)展身份認(rèn)證的實(shí)現(xiàn)范圍,并提高驗(yàn)證效率。
3.2.3 基于動(dòng)態(tài)口令的身份認(rèn)證
基于口令的認(rèn)證是傳統(tǒng)信息系統(tǒng)中較早使用且一直沿用至今的一種經(jīng)典身份認(rèn)證方式。由于口令認(rèn)證易被暴力破解,也易受重放攻擊和弱口令攻擊,所以在安全性要求較高的應(yīng)用中逐漸被動(dòng)態(tài)口令替代。動(dòng)態(tài)口令因其具有較高的安全性、易操作性以及與傳統(tǒng)信息系統(tǒng)之間的兼容性,已廣泛應(yīng)用到區(qū)塊鏈系統(tǒng)的身份認(rèn)證中[55]。
早在1981 年,Lamport[56]就提出了基于哈希鏈的動(dòng)態(tài)口令(one-time password,OTP)解決方案,目前使用的各類動(dòng)態(tài)口令解決方案基本上是在該方案基礎(chǔ)上的改進(jìn)。動(dòng)態(tài)口令也稱為一次性口令,是采用“一次一密”方式在客戶端與服務(wù)器之間通過共享密鑰實(shí)現(xiàn)的一種強(qiáng)認(rèn)證機(jī)制,合法用戶利用動(dòng)態(tài)令牌生成動(dòng)態(tài)密碼,認(rèn)證服務(wù)器通過驗(yàn)證密碼的正確性來實(shí)現(xiàn)對(duì)用戶身份的認(rèn)證。OTP算法的實(shí)現(xiàn)主要有以下3種類型:
(1)HOTP。HOTP(HMAC-based one-time password,基于HMAC的OTP)算法[57]基于HMAC(hashed message authentication code,散列消息驗(yàn)證碼),利用HMACSHA-1算法生成一次性密鑰,具體算法為:
其中,Truncate()是一個(gè)將160 bit的HMAC轉(zhuǎn)換為32 bit的HOTP 值的函數(shù),HOTP 是一個(gè)無符號(hào)整數(shù);K為輸入的密鑰;C為計(jì)數(shù)器值,每次在使用HOTP 時(shí),C值都會(huì)在前一次基礎(chǔ)上自動(dòng)增加,從而實(shí)現(xiàn)每次認(rèn)證時(shí)使用的HOTP 值不同。HMAC-SHA-1 算法的安全性決定著HOTP的安全性。
(2)TOTP。TOTP(time-based one-time password,基于時(shí)間的OTP)算法[58]利用一個(gè)共享密鑰,再結(jié)合當(dāng)前時(shí)間來計(jì)算動(dòng)態(tài)口令,其算法定義為:
TOTP算法基于HOTP算法來實(shí)現(xiàn),其中K是一個(gè)共享密鑰,T為時(shí)間步長(zhǎng)(系統(tǒng)默認(rèn)值為30 s,即每過30 s更換一次口令),即從用UNIX時(shí)間戳表示的初始時(shí)間T0到當(dāng)前時(shí)間Tnow所經(jīng)歷的時(shí)間步長(zhǎng)數(shù),T=(Tnow-T0)/X,X為默認(rèn)的時(shí)間步長(zhǎng)。
(3)基于挑戰(zhàn)/應(yīng)答的OTP。在基于挑戰(zhàn)/應(yīng)答(challenge/response)的OTP 算法中,一次性口令由服務(wù)器發(fā)出的挑戰(zhàn)值經(jīng)客戶端的應(yīng)答算法產(chǎn)生,其中挑戰(zhàn)值由服務(wù)器隨機(jī)生成或使用計(jì)數(shù)器產(chǎn)生。
將動(dòng)態(tài)口令技術(shù)應(yīng)用到區(qū)塊鏈系統(tǒng)的身份認(rèn)證,實(shí)現(xiàn)了傳統(tǒng)OTP技術(shù)與區(qū)塊鏈系統(tǒng)身份管理的結(jié)合,OTP采用動(dòng)態(tài)密鑰生成機(jī)制,同一用戶在不同時(shí)間段訪問系統(tǒng)時(shí)會(huì)使用不同的密鑰,而且密鑰無需記憶和保存。同時(shí),OTP采用雙因素認(rèn)證機(jī)制,即使密碼被竊取,也不會(huì)造成損失。另外,由于OTP技術(shù)自身實(shí)現(xiàn)簡(jiǎn)單且提供了功能完備的接口,身份認(rèn)證系統(tǒng)可以獨(dú)立于區(qū)塊鏈系統(tǒng),在保證了區(qū)塊鏈系統(tǒng)完整性的同時(shí),利于在各類區(qū)塊鏈錢包或平臺(tái)中的實(shí)現(xiàn)[59]。
針對(duì)區(qū)塊鏈系統(tǒng)的身份認(rèn)證要求,許多學(xué)者通過理論研究和實(shí)踐探索提出了一些創(chuàng)新應(yīng)用和方案。其中,Park[60]通過對(duì)Lamport提出的OTP中加密哈希函數(shù)的改造,形成的新哈希鏈在無需證明者和驗(yàn)證者之間預(yù)共享密鑰的前提下,能夠無限制地生成用于身份驗(yàn)證的密鑰,在保留Lamport 方案優(yōu)點(diǎn)的同時(shí),滿足了區(qū)塊鏈系統(tǒng)中針對(duì)大量交易用戶身份認(rèn)證的需要;Erdem 等人[61]提出了一種基于云服務(wù)的OTP方案,該方案將驗(yàn)證器置于云端,為不同系統(tǒng)提供可靠、便捷的身份認(rèn)證服務(wù),并可抵御外部攻擊;Zhang 等人[55]將區(qū)塊鏈分布式賬本技術(shù)與OTP 技術(shù)結(jié)合,提出了基于區(qū)塊鏈的OTP 身份認(rèn)證方案。在該方案中,由區(qū)塊鏈分布式賬本作為驗(yàn)證器來替代傳統(tǒng)OTP中的服務(wù)器,并通過一個(gè)安全標(biāo)準(zhǔn)列表來實(shí)時(shí)分析身份驗(yàn)證協(xié)議的安全性,以抵御重放攻擊、暴力破解、OTP 偽造等攻擊行為的發(fā)生;Catalfamo 等人[62]針對(duì)基于雙因素認(rèn)證(two-factor authentication,2FA)等典型身份認(rèn)證方案中因集中式認(rèn)證導(dǎo)致的拒絕服務(wù)(DoS)攻擊和中間人(MITM)攻擊等安全威脅,提出了一種分散的微服務(wù)(microservices)和基于區(qū)塊鏈的一次性密碼(blockchain based one time password,MBB-OTP)協(xié)議,用于提升身份認(rèn)證的安全性。以上方案,有些是對(duì)傳統(tǒng)OTP方案性能的改進(jìn),有些是利用云計(jì)算優(yōu)勢(shì)對(duì)身份認(rèn)證方案和功能的優(yōu)化,有些是將區(qū)塊鏈技術(shù)與OTP 技術(shù)進(jìn)行結(jié)合以豐富身份認(rèn)證功能并增強(qiáng)系統(tǒng)的安全性。
表6基于區(qū)塊鏈系統(tǒng)身份認(rèn)證具體要求,從實(shí)現(xiàn)原理、證書類型、驗(yàn)證者、安全性、隱私性、可擴(kuò)展性和中心化程度等方面對(duì)不同方案進(jìn)行對(duì)比分析。

表6 實(shí)名身份認(rèn)證機(jī)制對(duì)比分析Table 6 Comparative analysis of real-name identity authentication mechanism
為了解決聯(lián)盟鏈中基于PKI/CA數(shù)字證書的身份認(rèn)證帶來的用戶隱私泄露問題,一些對(duì)隱私保護(hù)要求較高的聯(lián)盟鏈(如Fabric、Corda、FISCO BCOS[63]等)在身份管理上采用了可控匿名身份認(rèn)證方案。可控匿名身份認(rèn)證是指根據(jù)不同的監(jiān)管需要,同一系統(tǒng)中同一用戶在不同場(chǎng)景中采用不同的身份認(rèn)證方式,一般在前臺(tái)應(yīng)用中采用匿名身份認(rèn)證,而在后臺(tái)監(jiān)管中采用實(shí)名身份認(rèn)證。可控匿名身份認(rèn)證模型如圖11所示。

圖11 基于PKI/CA的可控匿名身份認(rèn)證模型Fig.11 Controllable anonymous authentication model based on PKI/CA
可以看出,可控匿名身份認(rèn)證一般是在PKI/CA 工作機(jī)制的基礎(chǔ)上,通過在系統(tǒng)中增加監(jiān)管者身份來實(shí)現(xiàn)。其中,可控匿名身份認(rèn)證的CA具有對(duì)匿名數(shù)字證書的追蹤功能,當(dāng)因交易糾紛等原因需要核實(shí)用戶真實(shí)身份信息時(shí),監(jiān)管者可將核實(shí)信息發(fā)送給CA,由CA將匿名數(shù)字證書持有者的真實(shí)身份信息反饋給監(jiān)管者。
以由微眾銀行牽頭研發(fā)的區(qū)塊鏈底層開源平臺(tái)FISCO BCOS 為例,在身份管理方面FISCO BCOS 提供了區(qū)塊鏈治理通用組件,通過“輕量解耦”將身份管理功能與具體業(yè)務(wù)解耦,以方便系統(tǒng)的部署和管理。同時(shí),F(xiàn)ISCO BCOS 提供了證書管理組件(Governance-Cert)和私鑰管理組件(Governance-Key),證書管理組件提供了X.509 標(biāo)準(zhǔn)的多級(jí)證書簽發(fā)、驗(yàn)證、重置、撤銷、導(dǎo)出及托管等功能,私鑰管理組件提供了私鑰的生成、保存、托管、使用等能力。為了實(shí)現(xiàn)可控匿名身份認(rèn)證,F(xiàn)ISCO BCOS的賬戶治理組件還提供了如圖12所示的雙重賬戶體系,其中,具體交易過程中使用的賬戶不再直接使用公鑰地址,而是采用經(jīng)公鑰派生出來的內(nèi)部賬戶,以提供交易的匿名性。但是,在需要對(duì)用戶身份進(jìn)行監(jiān)管時(shí),監(jiān)管方可以通過公鑰賬戶地址與內(nèi)部賬戶之間的映射關(guān)系得到該用戶的真實(shí)身份信息。

圖12 傳統(tǒng)賬戶模型與雙重賬戶模型對(duì)比Fig.12 Comparison between traditional account model and dual account model
基于PKI 機(jī)制的Fabric 采用兩級(jí)證書體系實(shí)現(xiàn)可控匿名認(rèn)證。在Fabric中,一個(gè)組織一般擁有一個(gè)MSP(membership services provider,成員關(guān)系服務(wù)提供者)[64],MSP采用PKI分層架構(gòu),默認(rèn)使用X.509證書來標(biāo)識(shí)聯(lián)盟鏈中的用戶身份,為用戶提供證書簽發(fā)與驗(yàn)證、證書撤銷等服務(wù),并利用“注冊(cè)-交易”兩級(jí)證書體系實(shí)現(xiàn)同一用戶的前臺(tái)匿名認(rèn)證與后臺(tái)監(jiān)管。MSP 是一個(gè)為Fabric 中的節(jié)點(diǎn)提供身份認(rèn)證的可信權(quán)威機(jī)構(gòu),SMP中提供了注冊(cè)證書頒發(fā)機(jī)構(gòu)(enrollment certificate authority,ECA)和交易證書頒發(fā)機(jī)構(gòu)(transaction certificate authority,TCA)兩類CA,其中由ECA 簽發(fā)的注冊(cè)證書(Ecert)用于實(shí)名身份認(rèn)證,而由TCA 簽發(fā)的交易證書(Tcert)用于交易中的匿名身份認(rèn)證,同時(shí)TCA 在簽發(fā)交易證書Tcert 時(shí)受注冊(cè)證書Ecert的控制,以此實(shí)現(xiàn)針對(duì)同一用戶的不同類型數(shù)字證書之間的關(guān)聯(lián)。
在Fabric中,Tcert由Ecert派生產(chǎn)生,同時(shí)Tcert基于橢圓曲線密鑰疊加算法生成交易中使用的公私鑰對(duì),在監(jiān)管過程需要知道Tcert 的真實(shí)身份信息時(shí),可利用Tcert公鑰的可恢復(fù)特征恢復(fù)出該公鑰持有者的真實(shí)身份。具體實(shí)現(xiàn)過程為:當(dāng)用戶向TCA申請(qǐng)用于交易的Tcert 時(shí),TCA 首先通過隨機(jī)數(shù)種子生成一個(gè)派生密鑰DF_key,同時(shí)利用用戶提交的Ecert 證書中的公鑰及相關(guān)參數(shù)生成Tcert 證書的公鑰,并將最后生成的Tcert 以及DF_key 通過安全通道(一般采用PKI 系統(tǒng)集成的SSL/TLS 加密通道)發(fā)送給用戶;用戶利用從TCA 處申請(qǐng)到的Tcert和DF_key生成Tcert的私鑰。因?yàn)镋CA在生成用于加密EcertID(注冊(cè)證書ID)的密鑰時(shí)使用了監(jiān)管方可見的加密密鑰pre_key,即:
那么,監(jiān)管方可利用EcertID_key 解密位于Tcert 證書中的encEcertID(身份證書ID的密文)得到EcertID:
另外,MSP 在傳統(tǒng)PKI 的基礎(chǔ)上,還提供了一個(gè)用于存放可依賴用戶信息的列表,以實(shí)現(xiàn)對(duì)用戶身份的進(jìn)一步分類管理。
表7 主要從身份標(biāo)識(shí)方式、主要實(shí)現(xiàn)原理、準(zhǔn)入機(jī)制、區(qū)塊鏈類型和典型應(yīng)用場(chǎng)景等方面對(duì)3種身份認(rèn)證方式進(jìn)行了綜合比較。

表7 區(qū)塊鏈身份認(rèn)證方式比較Table 7 Blockchain identity authentication mode comparison
無論是信息交換還是價(jià)值轉(zhuǎn)移,身份管理都是區(qū)塊鏈系統(tǒng)的核心要素和研究重點(diǎn)。由于不同的區(qū)塊鏈系統(tǒng)在功能實(shí)現(xiàn)、應(yīng)用場(chǎng)景、準(zhǔn)入機(jī)制等方面存在較大差異,所以針對(duì)主流區(qū)塊鏈系統(tǒng)身份管理的研究方法和實(shí)現(xiàn)路徑也有所不同。
對(duì)于Fabric、Corda、FISCO BCOS 等典型聯(lián)盟鏈的身份管理主要采用PKI/CA 數(shù)字證書作為用戶身份標(biāo)識(shí),實(shí)現(xiàn)實(shí)名或可控匿名身份認(rèn)證。近年來,PKI 體系在區(qū)塊鏈應(yīng)用中存在的主要問題集中于安全、效率和可擴(kuò)展性等方面。
首先,是數(shù)字證書的安全問題。區(qū)塊鏈用戶一般通過配置客戶端(一般為Web 瀏覽器)對(duì)根CA 的信任來實(shí)現(xiàn)對(duì)服務(wù)器證書的驗(yàn)證。但是,近年來大量出現(xiàn)的證書驗(yàn)證安全漏洞引發(fā)的中間人攻擊,使得為用戶簽發(fā)數(shù)字證書的CA服務(wù)的可信度受到威脅。如果用戶不能正確地驗(yàn)證CA簽發(fā)的數(shù)字證書,那么攻擊者很容易通過將自己假扮為合法的CA為用戶提供虛假的證書服務(wù),從而竊取或篡改用戶之間的交易,擾亂整個(gè)系統(tǒng)的正常運(yùn)行。針對(duì)此問題,一些改進(jìn)方案相繼被提出并得到應(yīng)用[65],以提升CA 證書服務(wù)的安全性。例如,在CA 服務(wù)端,為了防止CA被攻擊后簽發(fā)虛假的數(shù)字證書或進(jìn)行其他的惡意操作,谷歌(Google)公司早在2013 年就提出了certificate transparency[66]技術(shù),通過引入日志服務(wù)(log server)部件讓CA 簽發(fā)數(shù)字證書的服務(wù)具有公開審計(jì)性,以增強(qiáng)證書簽發(fā)階段的安全性;在用戶端,可通過對(duì)瀏覽器或錢包的設(shè)置,使其只信任滿足一定條件的CA 簽發(fā)的數(shù)字證書,從而通過對(duì)客戶端的配置來增強(qiáng)數(shù)字證書的安全性。
其次,是交易的效率問題。在交易過程中,由于需要通過數(shù)字證書對(duì)交易者的身份信息進(jìn)行頻繁的驗(yàn)證,每一次驗(yàn)證都需要訪問數(shù)字證書的證書庫(kù),以獲得證書鏈上的CA 證書、CRL 文件信息以及OCSP(online certificate status protocol,在線證書狀態(tài)協(xié)議)等服務(wù)內(nèi)容,這一過程需要占用一定時(shí)間,會(huì)在較大程度上影響到交易效率,尤其是在需要進(jìn)行跨域部署PKI的大規(guī)模區(qū)塊鏈系統(tǒng)中,此問題更顯突出。針對(duì)此問題,需要借鑒PKI在大范圍跨域交叉認(rèn)證已有成果的基礎(chǔ)上,結(jié)合區(qū)塊鏈系統(tǒng)具體應(yīng)用場(chǎng)景,進(jìn)行性能優(yōu)化[67]。另外,基于公鑰密鑰機(jī)制的PKI系統(tǒng)在證書管理上的復(fù)雜性在很大程度上影響了交易的效率。為解決此問題,早在1984年RSA算法的作者之一以色列密碼學(xué)家Adi Shamir就提出了IBC(identity-based cryptography,基于身份的密碼系統(tǒng))[68]的概念,直接利用用戶身份標(biāo)識(shí)信息作為公鑰來綁定用戶身份,用戶私鑰由擁有主密鑰的私鑰生成器(private key generator,PKG)生成。IBC 不再依賴于PKI 系統(tǒng),從而極大地簡(jiǎn)化了管理密碼系統(tǒng)的復(fù)雜性。IBC技術(shù)自提出后在應(yīng)用過程中不斷發(fā)展和完善,目前,在區(qū)塊鏈用戶身份管理中,IBC也已作為PKI機(jī)制的發(fā)展和補(bǔ)充得到進(jìn)一步的研究,既保證簽名的安全性,又滿足各種應(yīng)用場(chǎng)景的安全需求。還有,2003 年,Al-Riyami等人[69]提出了無證書公鑰密碼學(xué)(certificateless public key cryptography,CL-PKC)的概念,它與IBC 一樣不需要數(shù)字證書,而且避免了PKI系統(tǒng)中的私鑰托管(key escrow)問題,也不涉及到數(shù)字證書的管理,因此具有系統(tǒng)開鎖小、效率高等優(yōu)化,更適用于區(qū)塊鏈技術(shù)在智能手機(jī)、物聯(lián)網(wǎng)等資源有限的環(huán)境中的應(yīng)用。
最后,是信息管理的可擴(kuò)展性問題。通過跨鏈技術(shù)打破單一區(qū)塊鏈系統(tǒng)的封閉性,實(shí)現(xiàn)不同區(qū)塊鏈系統(tǒng)之間的信息共享和價(jià)值轉(zhuǎn)移是區(qū)塊鏈技術(shù)發(fā)展的大勢(shì)所趨和必然要求。然而,不同區(qū)塊鏈系統(tǒng)所采用的共識(shí)算法和底層數(shù)據(jù)結(jié)構(gòu)有所不同,為跨鏈身份認(rèn)證帶來了挑戰(zhàn)[70]。為此,如何提供適應(yīng)于跨鏈操作環(huán)境要求的身份管理機(jī)制,提升區(qū)塊鏈身份管理的可擴(kuò)展性,以適應(yīng)不同類型聯(lián)盟鏈之間互操作過程中的差異化身份認(rèn)證,還需要在已取得成果的基礎(chǔ)上進(jìn)行深入研究[71-72]。
另外,PKI依賴于數(shù)字簽名技術(shù)在實(shí)體之間建立信任聯(lián)系和數(shù)據(jù)的安全傳輸,允許實(shí)體使用標(biāo)準(zhǔn)化數(shù)字證書(如X.509)與身份認(rèn)證進(jìn)行互操作。盡管PKI技術(shù)被許多應(yīng)用程序作為其安全保障(如Web/Https/TLS、云支持服務(wù)、VPN、IP 安全等),但因中心化信任固有機(jī)制產(chǎn)生的缺陷隨著新應(yīng)用的出現(xiàn)不斷暴露出來,與此同時(shí),區(qū)塊鏈技術(shù)所見長(zhǎng)的去中心化、賬本公開、不可篡改等機(jī)制,使PKI的應(yīng)用受到極大挑戰(zhàn)。早在2016年,IETF(Internet Engineering Task Force,Internet 工程任務(wù)組)就提出了一個(gè)專門的草案,描述了PKI 存在的主要問題,并認(rèn)為基于中心化機(jī)制的PKI 已無法滿足數(shù)字化環(huán)境的應(yīng)用需求,建議開發(fā)去中心化的PKI[73]。DPKI(decentralized public key infrastructure,去中心化公鑰基礎(chǔ)設(shè)施)[74-75]是對(duì)PKI的改進(jìn)和完善,通過建立一個(gè)去中心化的身份管理體系來解決中心化機(jī)制存在的不足,為構(gòu)建新型網(wǎng)絡(luò)信任環(huán)境提供了保障。
以加密數(shù)字貨幣為典型應(yīng)用的公有鏈,在身份管理方面存在的主要問題是處理好隱私保護(hù)與身份監(jiān)管之間的關(guān)系,其研究重點(diǎn)集中于安全和隱私保護(hù)兩個(gè)方面。
公有鏈?zhǔn)褂瞄_放架構(gòu)的無準(zhǔn)入機(jī)制的匿名身份認(rèn)證方式,并通過地址混淆等手段加強(qiáng)交易過程中用戶身份的隱私性,以此來防范區(qū)塊鏈公開賬本中用戶隱私泄露的風(fēng)險(xiǎn),但隱私保護(hù)機(jī)制為基于區(qū)塊鏈加密數(shù)字貨幣的交易監(jiān)管帶來了挑戰(zhàn)。加密數(shù)字貨幣的重要特點(diǎn)之一是交易的匿名性,而在金融和證券等區(qū)塊鏈應(yīng)用場(chǎng)景中則強(qiáng)調(diào)用戶交易的強(qiáng)監(jiān)管,有效打擊金融網(wǎng)絡(luò)犯罪,這就要求系統(tǒng)在能夠保護(hù)用戶交易隱私的同時(shí),必須為監(jiān)管需要(如調(diào)查取證、交易信息核查等)提供交易用戶的真實(shí)身份信息,引發(fā)了隱私保護(hù)與交易監(jiān)管之間的博弈。在此情況下,如何在公有鏈加密數(shù)字貨幣系統(tǒng)中引入聯(lián)盟鏈中的可控匿名身份認(rèn)證,實(shí)現(xiàn)前臺(tái)匿名與后臺(tái)實(shí)名的按需可控匿名身份管理機(jī)制,是目前區(qū)塊鏈應(yīng)用中亟待解決的關(guān)鍵技術(shù)。
在安全方面,采用匿名身份認(rèn)證的公有鏈采用非對(duì)稱密鑰機(jī)制的ECDSA[76]、ED25519[77]、EdDSA[78]等橢圓曲線密鑰算法,算法自身及其實(shí)現(xiàn)過程的安全性很大程度上決定著應(yīng)用的安全性。就算法自身而言,算法提供的是一套完整的用系統(tǒng)的方法描述和解決問題的策略或機(jī)制,是對(duì)輸入范圍和輸出結(jié)果的明確限定。如果一個(gè)算法存在設(shè)計(jì)上的缺陷,或不適宜于某一問題的具體解決,那么使用這一算法的具體應(yīng)用便存在安全隱患;就區(qū)塊鏈身份管理中算法的實(shí)現(xiàn)過程而言,橢圓曲線簽名算法只是提供了一種算法的完整描述,可是橢圓曲線的參數(shù)選擇是多樣的,所以參數(shù)選擇是否規(guī)范和貼合實(shí)際,不僅僅影響著應(yīng)用中的安全問題,還會(huì)影響算法的空間復(fù)雜度與時(shí)間復(fù)雜度。區(qū)塊鏈的簽名算法是區(qū)塊鏈應(yīng)用和身份管理研究的重點(diǎn)之一,為此,下一步研究需要在對(duì)算法自身進(jìn)行優(yōu)化的基礎(chǔ)上,結(jié)合具體應(yīng)用場(chǎng)景選擇適合區(qū)塊鏈系統(tǒng)自身業(yè)務(wù)需求的簽名算法,并通過合理的參數(shù)選擇和環(huán)境配置提升安全性。
在隱私保護(hù)方面,雖然區(qū)塊鏈采用了經(jīng)轉(zhuǎn)換的公鑰來作為身份標(biāo)識(shí),并且UTXO 模型提供了假名機(jī)制,以此來保護(hù)交易過程中用戶的隱私。但區(qū)塊鏈所具有的賬本公開和多方確認(rèn)機(jī)制給交易身份的隱私保護(hù)提出了挑戰(zhàn)。其中,匿名身份認(rèn)證和基于“混淆”思想的身份隱藏技術(shù)是解決這一問題的主要方式,在此基礎(chǔ)上,結(jié)合聯(lián)邦學(xué)習(xí)、零知識(shí)證明、環(huán)簽名、安全多方計(jì)算等技術(shù),提出了大量創(chuàng)新應(yīng)用[79-80],為匿名和可控匿名身份管理提供了有效解決方案。
總之,身份管理作為信息系統(tǒng)的基本特征,可根據(jù)不同的應(yīng)用需求選擇不同的身份標(biāo)識(shí)方法和身份認(rèn)證機(jī)制,實(shí)現(xiàn)了對(duì)用戶的全過程管理,從而為應(yīng)用系統(tǒng)的資源授權(quán)、數(shù)據(jù)溯源和數(shù)據(jù)取證等工作提供保障。本文在對(duì)比分析傳統(tǒng)系統(tǒng)與區(qū)塊鏈系統(tǒng)差異性的基礎(chǔ)上,分別討論了區(qū)塊鏈身份標(biāo)識(shí)和認(rèn)證的相關(guān)技術(shù),并對(duì)區(qū)塊鏈系統(tǒng)身份管理的下一步發(fā)展和研究進(jìn)行展望。隨著區(qū)塊鏈技術(shù)的迭代發(fā)展和應(yīng)用領(lǐng)域的不斷拓寬,也將對(duì)區(qū)塊鏈系統(tǒng)身份管理技術(shù)提出更高要求。因此,如何將密碼學(xué)、分布式計(jì)算、博弈論、零信任等領(lǐng)域的最新研究成果深度融入到區(qū)塊鏈系統(tǒng)身份管理技術(shù),構(gòu)建安全、高效、可擴(kuò)展的區(qū)塊鏈身份管理體系是需要進(jìn)一步研究的一個(gè)方向。