楊冠群,劉蔭,徐浩,邢宏偉,張建輝,李恩堂
(1. 國網山東省電力公司信息通信公司,山東 濟南 250001;2. 山東魯軟數字科技有限公司,山東 濟南 250001)
隨著微電網行業的不斷變革,新能源的布局占據著國家重要的戰略地位[1]。2020年4月,國家能源局綜合司發布的 《關于做好可再生能源發展“十四五”規劃編制工作有關事項的通知》,通知指出:“優先開發當地分散式和分布式可再生能源資源,大力推進分布式可再生電力、熱力、燃氣等在用戶側直接就近利用,結合儲能、氫能等新技術,提升可再生能源在區域能源供應中的比重。”可再生能源分布式是未來的發展方向,而在這樣的分布式系統中發展充電站乃至充放電站無疑是大勢所趨,甚至有可能成為標配[2]。
隨著我國新能源的廣泛應用,風電、太陽能等占比大幅提升。例如,大力發展光儲充一體化的微電網技術,將清潔能源供電通過光伏發電后存儲電能,光伏、儲能和充電設施形成了一個微網,根據需求與公共電網智能互動,可實現并網、離網兩種不同運行模式[3]。為了緩解充電樁大電流充電時對區域電網的沖擊,儲能系統的傳輸配送過程通常伴隨分布式發電、分布式售電、智能電表、終端智能充電樁等服務需求。
微電網在迅速擴展的同時,也帶來了愈加嚴重的安全挑戰[4]。以風電、光伏為主的新型供電系統呈現分布式架構,集中式的用戶管理系統已經無法滿足分布式各主體之間進行點對點可信交互的需求。此外,能源物聯網的終端節點分布廣、范圍寬、數量大、環境復雜且計算資源有限,極易受到冒用、篡改等攻擊[5-6]。
為適應新型的電力發展要求,2019年,國網公司提出“開展區塊鏈等新技術應用研究,有效支撐和促進‘兩網’融合發展”,推動了區塊鏈技術在電力行業的進一步研究和深化應用[7]。區塊鏈開放、共享、協同的技術形態與國網公司建設中國特色國際領先的微網戰略目標高度契合,可以有效解決泛在微網建設過程中面臨的數據融通、設備安全、個人隱私、架構僵化和多主體協同等問題,在引領泛在微網建設方面具有不可替代的重要作用[8-9]。
區塊鏈技術以其去中心化、安全透明、不易篡改等特性與分布式能源交易的需求具有極高的契合度[10]。為了解決微網中終端節點的身份管理、可信接入和業務訪問控制等問題,本文基于FISCO BCOS聯盟區塊鏈技術,設計了一個多中心的分布式身份認證系統,支持細粒度的聲明描述和基于零知識證明的隱私憑證,實現了實體身份的自主控制、屬性級的細粒度訪問控制、用戶身份的隱私保護和可信數據交換。具體而言,本文貢獻如下。
1) 用戶身份的自主控制:與傳統身份管理不同,身份不必再掌握在身份提供者手中,用戶的身份由自己建立和保存,用戶自己管理自己的信息,用戶完全擁有、控制和管理自己的身份。
2) 分布式可信接入:提出了基于聯盟區塊鏈的分布式身份管理技術,支持扁平化的分布式認證,不依賴于單一企業的認證,通過分布式的用戶社會關系獲得全面的身份認證,真正意義上實現了用戶身份自治,通過KYC(know your customer)技術實現身份監管,解決了微網終端節點的分布式可信接入問題。
3) 用戶信息身份隱私保護:提出了適用于微網的基于用戶細粒度屬性的可驗證憑證,基于零知識證明技術,系統支持生成匿名憑證,針對用戶的敏感信息,可以在不披露秘密信息的情況下完成驗證,有效實現了用戶身份的隱私保護。
4) 多中心化機構的移植:基于區塊鏈技術,支持多個證書頒發機構并對應不同的信任等級,是一個分布式多中心的身份管理平臺,支持多平臺、跨鏈、跨應用間身份標識和憑證的移植。
隨著互聯網的普及和發展,網絡數字身份應運而生,并用于補齊互聯網缺失的身份層,解決可信交互的問題。第一代網絡身份為應用賬戶,由中心式的身份提供方分配本地賬戶并簡單地提供用戶名和賬戶密碼。
由于不同應用間的本地賬戶無法聯通,人們需要維護大量的應用賬戶,基于聯盟的賬戶身份產生。SSO單點登錄系統[11]是比較流行的聯盟身份解決方案,可以解決在多個應用系統中的訪問聯盟所有應用系統和跨系統的信任問題。傳統的微電網的認證系統一般也通過SSO單點登錄系統來解決。Celesti等[12]在異構環境中建立聯盟的體系結構,提出了一種基于IdP/SP模型和SAML技術的身份認證解決方案。魏曉菁等[13]為國家電網公司建設了全網統一索引的身份管理和認證系統,為國網各大業務體系提供了身份認證、賬戶管理、SSO單點登錄等基礎設施服務,節省了各子應用系統之間各自數據保持的存儲開銷和降低了安全風險,避免了數據孤島的困境,基本解決了全網互聯互通的問題。然而,中心化系統中的用戶的身份信息完全由服務商所掌控,可能存在信息超量收集、惡意收集分析、數據泄露和數據買賣等不可控行為。
為了實現用戶身份自治,研究人員開始探索基于區塊鏈的數字身份管理方案[14-15]。公鑰基礎設施(PKI)[16]是較為常用的身份和證書管理技術。Yu等[17]設計并開發了基于區塊鏈的PKI管理框架,用于發布、驗證和撤銷X.509證書,以解決單點故障和實現對CA中心缺陷的快速反應。uPort[18]是基于以太坊和分布式網絡設計的開放式身份系統,基于智能合約實現了支持多中心身份數據的自治,支持多中心化應用。Kikitamara等[19]將身份管理權限歸于個人并在區塊鏈系統上共享,從而支持多個系統和應用程序之間交互和服務。
基于區塊鏈的身份認證系統大多基于公共區塊鏈平臺,沒有針對微電網的聯盟場景進行有效改造和整合,難以滿足微電網中可信接入、細粒度訪問控制等需求,因此不適合電網場景。雖然區塊鏈在電網的應用較多,但大多是集中于區塊鏈平臺在電網交易場景中的應用,而缺乏從身份管理的角度來解決分布式身份可信的問題。因此,本文基于FISCO BCOS聯盟區塊鏈技術,提出了一個支持多中心的分布式身份認證系統,實現用戶身份的自主控制和可信接入,并通過屬性聲明技術實現屬性級的細粒度訪問控制。
可信身份認證作為身份治理底層基礎設施,用以解決跨部門、跨組織、跨機構的可信身份認證問題,確保用戶的身份信息由自己掌握,保護隱私與個人信息,同時為監管保留查驗通道(如KYC認證或與eID聯通)。其系統目標如下。
(1)自主控制
DID可以由用戶自己建立,自己管理自己的信息。用戶完全擁有、控制和管理自己的身份。
(2)分布式認證
不依賴于單一企業的認證,通過分布式的用戶社會關系獲得全面的身份認證。
(3)建立信任
本文先選取委員會節點作為發證者和記賬節點,而區塊鏈技術旨在確保網絡中每一個記賬節點都參與數據交互及記錄管理等工作,再根據KYC的真實用戶信息記錄及審計規則,對用戶所提供的信息進行審核,并以委員會節點作為憑證頒發者對用戶憑證進行背書,可以實現多中心機構中信任橋梁的建立,由此實現支持多中心的特點及節點間的相互信任。
(4)隱私保護
用戶的數字身份標識符無法推測出用戶真實的身份信息,用戶的可信身份認證標識符和可驗證數字憑證鏈下存儲,鏈上存證。用戶屬性可表示為離散對數模型,轉換為密碼承諾隱藏用戶隱私,實現更高級別的隱私需求。
(5)可撤銷性
使用輔鏈支撐的撤銷策略,實現密碼憑據的撤銷查詢,提供未撤銷性證明。
(6)可移植性
支持多平臺、跨鏈、跨應用間身份標識和憑證的移植。
與傳統的密鑰證書管理PKI體系相似,在可信身份認證生態中,系統擁有4種角色,分別為發證者(Issuer)、持有者(Holder)、驗證者(Verifier)和標識符注冊機構,其中系統可以擁有多個發證中心,如圖1所示。此外,機構委員會成員、系統管理員也是聯盟鏈角色,分別具有管理發證機構的權限和系統管理權限。系統角色具體描述如下。

圖1 身份認證系統模型Figure 1 Identity authentication system model
發證者:擁有用戶數據并能開具可驗證聲明憑證的實體,如政府、銀行、大學等。區塊鏈中的委員會充當發證者。針對用戶的身份社會屬性多樣化與統一身份管理中心之間的矛盾,本文采用多機構頒發代替傳統的中心化證書中心。假設已有一個用于選擇委員會節點的許可模型,系統中選取委員會作為證書的頒發者。令Cmt表示委員會,由n個節點組成。委員會節點各自存儲一個私鑰 sk,用于頒發憑據。相應的公鑰pk用于驗證憑據。任何一方(分布式應用程序或委員會節點)都可以充當憑據發證者,發證者的主要功能包括發證方注冊/注銷、發布憑證模板、簽發用戶憑證等。輔助以KYC規則,對用戶所提供的信息進行審核,并以委員會節點作為憑證頒發者對用戶憑證進行背書,為多中心機構建立信任的橋梁。
驗證者:也稱應用方,接受可驗證聲明憑證并進行驗證,由此可以提供給出示可驗證聲明憑證者某種類型的服務。驗證者的主要功能包括發布驗證規則、通過鏈上信息驗證用戶DID、驗證用戶憑證等。驗證者包括雇主、安全人員和網站等。
持有者:向Issuer請求可驗證聲明憑證的實體。向驗證者出示可驗證聲明憑證。開具的可驗證聲明憑證可以放在可驗證聲明憑證錢包里,方便再次使用。持有者的主要功能包括DID注冊/注銷/更新、向發證者申請憑證、向驗證者展示憑證等。持有者包括學生、員工和客戶等。
標識符注冊機構:負責維護DID的數據庫,如某條區塊鏈、分布式賬本(DID里的example字段),方便驗證者驗證可驗證聲明憑證、Holder、Issuer、可信身份認證數據庫。
微網區塊鏈分布式身份認證系統可以擁有多個CA發證中心,一般由電網機構或其他機構承擔,如圖2所示。此外,微網中終端節點眾多,同一個用戶既可以作為持有者,也可以作為驗證者。

圖2 多授權中心的微網接入架構Figure 2 Microgrid access architecture with multiple authorization centers
本節的符號定義如表1所示。

表1 符號定義Table 1 Symbol definition
(1)DID
DID也可以記為did,參考比特幣的雙 hash方式,DID標識符的設計可以采用base58 (ripemd160 (sha256(
(2)Subject
Subject表示主體對象,是聲明描述的主體對象。實體示例包括人、動物和事物等。
(3)Claim
Claim指用戶憑證中的聲明,是對自己所持有屬性、內容等的聲明。
(4)Verifiable Credential
Verifiable Credential指用戶向發證方申請和簽發的憑證,由元數據、聲明和證明組成。
(5)Presentation
可驗證展示來自同一主體的一個或多個可驗證憑證的數據。
可信身份認證系統包括數字身份管理體系和憑證管理系統。數字身份管理體系包括身份注冊階段、身份驗證階段、KYC過程;憑證管理系統包括憑證創建階段、存證創建階段、憑證驗證階段、憑證更新階段、憑證撤銷階段。
(1)數字身份管理體系
① 身份注冊階段createDid (addr) →{pk, sk,did}:注冊是獲取身份的過程,需要由鏈上的機構來承認該所有者的身份,由身份所有者執行。輸入用戶節點的地址addr,系統創建公私鑰(pk,sk)和鏈上注冊用戶身份標識符did并返回(did可以直接使用公鑰地址)。其中系統用戶的公私鑰記為(pku, sku),發證者公私鑰記為(pkc, skc),驗證者公私鑰為(pkv, skv)。
② 身份驗證階段verifyDid (did, sign, pku)→result:驗證是校驗所提供的身份是否為合法身份的過程。身份所有者提供身份標識符did、相關挑戰信息的簽名sign和身份公鑰 pku,sign=Signsku(ch),ch為驗證者的挑戰。驗證者在鏈上查詢did的存在性,用公鑰 pku驗證用戶簽名sign的正確性,然后調用智能合約,查詢did的屬性,返回查詢結果result,其中result={TRUE/FALSE},TRUE表示身份驗證通過,FALSE表示身份驗證失敗。
③ KYC過程:聯盟委員會對用戶所提供的身份信息進行核驗,核驗通過后加密存儲于數據庫中,用于后續監管和用戶憑證信息比對核實,以防違法交易發生。
(2)憑證管理系統
① 憑證創建階段createCredential(did,a,v)→cred:憑證創建算法由憑證的發證者執行。DID持有者提供其身份標識符did、用戶屬性a及對應的屬性值v,發證者核驗屬性后,首先生成其聲明claimi={a,v}。然后,計算屬性值摘要,并為聲明簽名生成簽名證明S=Signskc(h),h=H(v),其中H為哈希函數;接著,發證者為授權證書添加憑證授權時間、憑證更新時間、用戶相關屬性、用戶did的使用方法、驗證類型(密鑰類型)、使用端口、更新屬性和發證者的簽名信息等元數據信息,以完成授權證書的創建和簽發。
如果用戶所持屬性為隱私屬性,選定群G的生成元為g?G,計算A=ga( modq)。選取盲因子r,其承諾值c=gr,于是匿名聲明為claim={a,A}并發送給發證者。發證者核驗承諾值,驗證成功則接受承諾;為聲明簽名生成簽名證明S,S=Signskc(c),并為授權證書添加憑證授權時間、軟件相關屬性、使用方自身屬性和發證者的簽名信息,完成授權證書的創建和簽發。選取(ch, rp)作為結果證明,該證明可被其他用戶和驗證者驗證。普通憑證創建算法和隱私憑證創建算法分別如算法1、算法2所示。
算法1普通憑證創建算法
輸入用戶身份標識符did,屬性a及對應屬性值v
輸出憑證結果

② 存證創建階段createEvidence (object,skc) →ev:輸入未上鏈的對象object(一般為所頒發的憑證對象)和身份私鑰skc,算法輸出存證ev。計算傳入的object對象的哈希值,通過身份私鑰skc簽名,So=Signskc(ho),生成存證ev={ho,So,ex},ex為其他輔助消息或備注消息,并將存證ev上鏈。存證創建算法可以由持有者或發證者調用。
③ 憑證驗證階段verifyCredential (did, cred,pk) →result:輸入持有者的身份標識did、一個或多個待驗證憑證cred和身份公鑰pk,驗證者首先從憑證cred重構憑證摘要ho'=H(cred),然后使用發證方公鑰pkc驗證憑證的簽名So,并與鏈上的簽名So和摘要ho進行比對,比較ho'與ho是否相等。然 后 返 回 驗 證 結 果result,其 中result={TRUE/FALSE},TRUE表示憑證驗證通過,FALSE表示憑證驗證失敗。普通憑證驗證算法如算法3所示。
算法3普通憑證驗證算法
輸入用戶身份標識符did,憑證cred,公鑰pk
輸出TRUE / FALSE
check(did) //查 驗did的 存 在 性tag1=verSignpkc(So)//驗證簽名值
ho'=H(cred) //重構憑證摘要
tag2=isEqual(ho,ho')//從鏈上讀取摘要ho,并與ho'比較

零知識憑證驗證算法中,除了常規的輸入以外,還需輸入一些零知識輔助參數,以支撐不披露屬性值的零知識驗證;除了常規的憑證驗證步驟,還需進行零知識挑戰和回應的驗證,并從鏈上讀取摘要,并與算法所恢復的摘要數據比較,具體驗證如算法4所示。
算法4零知識憑證驗證算法
輸入用戶身份標識符did,憑證cred,公鑰pk,挑戰/回應值(ch, rp),承諾A
輸出TRUE / FALSE
check(did) //查 驗did的 存 在 性tag1=verSignpkc(So)//驗證簽名值
ho'=H(cred) //重構憑證摘要
tag2=isEqual(ho,ho')//從鏈上讀取摘要ho,并與oh'比較

憑證驗證包含兩種模式,分別為鏈下模式和鏈上模式。鏈下模式中驗證者只需驗證憑證的簽名、有效期、是否撤銷等屬性項來判斷授權證書的真偽,這適用于安全需求較低的場景或者離線/應急場景;鏈上模式中,除上述驗證之外,驗證者還需要反向構造存證,調用智能合約向鏈上查詢和比較存證來證明與所持憑證的一致性。鏈上模式適用于安全需求較高的場景。
④ 憑證更新階段updateCredential(did, cred,newClaim)→newCred:輸入持有者的身份標識did、憑證主體cred和新聲明newClaim,newClaimi={a tt'i,val'i}。發證者核驗原證書cred和新的屬性聲明newClaim后,更新授權證書的update屬性、版本號和聲明主體,并添加簽名信息,完成授權證書的更新。
憑證撤銷階段revokeCredential(did,cid,cred)→result:輸入持有者的身份標識did、憑證主體cred,發證者核驗原證書cred后,更新授權證書的revoke屬性,并重新添加簽名信息,將撤銷憑證編號cid和存證上鏈。然后返回撤銷結果result,其中result={TRUE/FALSE},TRUE表示憑證撤銷成功,FALSE表示憑證撤銷失敗。
基于區塊鏈的電網可信分布式身份認證系統應用于微網的分布式交易體系中。通過使用DID,用戶持有全局唯一的身份標識符,且該DID標識符可以由用戶自己建立,自己管理自己的信息,因此用戶可以完全擁有、控制和管理自己的身份。
由于用戶自己掌握身份信息,用戶與驗證者(應用)之間缺少信任。通過區塊鏈技術,可以對每個節點用戶所發布的信息進行確認和共識,以建立鏈上信息在節點間的信任。
得益于區塊鏈的分布式賬本技術,用戶無須在每個電網交易系統(甚至是電網以外系統)都注冊賬號,只要用戶和驗證者在同一個鏈中,均可以通過分布式的用戶社會關系獲得全面的身份認證;驗證者可以通過屬性對電網用戶執行身份準入,擁有對應屬性才能接入訪問。
雖然用戶的數字身份標識符無法推測出用戶真實的身份信息,但憑證中可能包含用戶的隱私信息。針對敏感的身份信息,用戶可以將用戶屬性表示為離散對數模型,并加密為承諾來隱藏用戶隱私,驗證者只需要通過零知識證明技術即可有效驗證,實現了隱私的保護。針對過期的或存在問題的憑證,用戶和管理者可以撤銷密碼憑據。另外,基于區塊鏈的電網可信分布式身份認證系統可以實現跨平臺的移植,如兼容電網以外的系統身份驗證。
本文通過在CentOS主機上部署FISCO BCOS和身份認證系統服務器、實驗室主機模擬電網客戶端來模擬電網的分布式接入驗證過程,以驗證本文系統的高效性和可用性。服務器主機的參數為:Intel(R) Core i7-7700 CPU @3.60 GHz 3.60 GHz,RAM 16.00 GB,CentOS 7系統。客戶端主機的參數為Intel(R) Core i5-4590 CPU @ 3.30 GHz 3.30 GHz,RAM 8.00 GB,采用Apache JMeter測試工具分別對系統的各接口執行了Http請求測試,所有的實驗數據為運行10 次的平均值。區塊鏈部署的節點數為6個節點。
系統中的智能合約從數據對象上分為DID合約、Credential合約、CPT(憑證模板合約);從數據結構的定義和設計維度可以分為DidData合約、CredentialData合約、CptData合約、IssuerData合約和其他角色以及對象的權限控制合約,其依賴關系如圖3所示。

圖3 合約依賴關系Figure 3 Contract dependencies
DID智能合約負責鏈上ID體系建立,包括生成DID、生成DID相關文檔、DID在鏈上的讀取與更新。
Authority智能合約負責進行聯盟鏈權限管理,包括鏈上DID角色的定義、操作與權限的定義與控制。
系統性能測試時,模擬客戶端首先發起身份注冊請求,即DID創建請求。不同用戶并發數量下DID創建的時間變化趨勢如圖4所示,從圖4可以看出,身份創建時間隨用戶并發數量增加而增大。

圖4 不同用戶并發數量下DID創建的時間變化趨勢Figure 4 DID creation time under different concurrent users
聲明創建時間隨用戶屬性個數的變化如圖5所示。可以看出,聲明創建時間隨用戶屬性數量的增加而增大,基本呈線性趨勢,但增大趨勢較弱。實際上分布式的憑證聲明中的屬性個數是有限的,不會超過20個,因此該系統完全滿足實際運行的需要。

圖5 聲明創建時間隨用戶屬性個數的變化Figure 5 Claim creation time with different number of user attributes
不同用戶并發數量下普通憑證創建的時間和零知識憑證創建的時間分別如圖6和圖7所示。從圖6和圖7可以看出,憑證創建時間均隨用戶并發數量的增加而增大,但增長幅度逐漸減弱。且零知識憑證的性能幾乎與普通憑證相近,使用性能可以滿足實際需要。雖然用戶并發數量在增加,但分布式的憑證發放方式降低了系統的總體開銷,相比集中式的憑證發放方式,效率有所提高。在實際的系統中,憑證創建分別由不同的委員會節點承擔,實際上是互不干擾的獨立和并行運行子模塊,并不會累計于系統總時間中。

圖6 不同用戶并發數量下普通憑證創建的時間Figure 6 Credential creation time under different concurrent users

圖7 不同用戶并發數量下零知識憑證創建的時間Figure 7 Zero-knowledge credential creation time under different concurrent users
不同用戶并發數量下普通憑證驗證的時間和零知識憑證驗證的時間分別如圖8、圖9所示。可以看出,與憑證創建相似,憑證驗證時間隨用戶并發數量的增加而增大,但增長幅度逐漸減弱。因為用戶并發數量在增加,但分布式的憑證驗證方式降低了系統的總體開銷,相比集中式的驗證方式,效率有所提高,總體情況在可接受范圍之內。

圖8 不同用戶并發數量下普通憑證驗證的時間Figure 8 Credential verification time under different concurrent users

圖9 不同用戶并發數量下零知識憑證驗證時間Figure 9 Zero-knowledge credential verification time under different concurrent users
存證創建時間和憑證撤銷時間隨憑證個數的變化分別如圖10和圖11所示,憑證更新時間隨屬性個數的變化如圖12所示。

圖10 存證創建時間隨憑證個數的變化Figure 10 Evidence creation time with the number of vouchers

圖11 憑證撤銷時間隨憑證個數的變化Figure 11 Credential revocation time with the number of vouchers

圖12 憑證更新時間隨屬性個數的變化Figure 12 Credential update time with the number of vouchers
如圖10和圖11所示,存證創建時和憑證撤銷時間,限制在同一個用戶和模塊中,但是系統中的發證者實際上是分布式的而不是集中式的,分布式的存證生成及撤銷方式可以降低系統的總體開銷,相比集中式的驗證方式,效率有所提高。
從圖12可以看出,憑證更新時間隨用戶屬性數量的增加而增大,呈線性趨勢,由于每個屬性的量級限制,增大趨勢較弱。在實際應用中,屬性個數是有限的,一般為個位數,該時間完全滿足實際運行的需要。
為了解決微網中終端節點或應用的可信接入和業務訪問控制等問題,本文基于FISCO BCOS區塊鏈提出了一個支持多中心的分布式身份管理平臺,支持用戶身份的自主控制和多平臺、跨鏈、跨應用間身份標識和憑證的移植。用戶完全擁有、控制和管理自己的身份,為微網系統和上層應用構建了一個公開透明可信的分布式身份底層框架,實現了身份的自治和細粒度的訪問控制。未來將著重研究認證過程的隱私保護問題。