湛高峰,王曉峰,程 楠
(公安部第一研究所 信息安全部,北京 100048)
電子證照是數字化時代社會信用體系建立的重要一環[1],電子證照管理系統是實現安全高效的證照創建、存儲與使用共享的有效方案。傳統的電子證照管理系統通常依賴核心部門的中心服務器,這種管理模式只占用少量資源,但在數據共享方面限制較大,且易遭受非法攻擊導致中心、邊緣節點數據泄漏。因此,如何實現電子證照管理的去中心化,實現證照數據共享過程的隱私保護,是構建電子證照管理方案的主要問題。
針對上述問題,學者們面向不同應用場景,提出了一些基于區塊鏈技術的電子證照管理系統。2017 年閔旭蓉等[2]針對政務信息透明需求,提出一種基于區塊鏈技術的電子證照管理平臺,通過區塊鏈的共同記賬技術原理實現數據共享,實現了各部門政務信息的互聯互通。2018 年,巢燕[3]同樣針對“互聯網+政務”場景提出一種基于區塊鏈技術的電子證照管理系統,使用Hyperledger Fabric 設計證照管理區塊鏈,實現了各部門間數據共享、海量數據存儲。2020 年,王浩亮等[4]針對傳統智慧誠實系統建設下的數據孤島問題提出了一種基于區塊鏈的去中心化電子證照共享交易系統,將電子證照上鏈存儲,借助智能合約實現了電子證照的鏈上交易。2021 年,藺悅霞等[5]針對水利能源場景,提出一種取水許可電子證照系統,系統采用標準中心化架構,實現電子證照的集中式管理。
上述研究方案中,區塊鏈通常作為一個不可篡改的分布式賬本來存儲電子證照數據,由于區塊鏈的可追溯特性,可以保證電子證照數據共享過程的透明。這些方案相較于傳統的電子證照管理系統在安全性上有明顯提升,但仍忽略了一些實際通信場景的安全問題。由于區塊鏈交易使轉賬人和收款人綁定,敵手可以通過分析區塊內容獲得有效信息,且智能合約輸入輸出公開[6],可能造成隱私數據泄漏。為此,一些學者開始關注分布式存儲系統下的訪問控制與隱私保護問題。2018 年,Wang 等[7]提出了一個基于區塊鏈的,結合IPFS、以太坊和屬性基加密技術的分布式存儲框架,實現分布式存儲中的數據共享;2021 年,Li 等[8]提出一種基于區塊鏈并帶有隱私保護的電子證照管理系統,采用屬性基加密方式對電子證照數據進行加密,實現安全的電子證照數據共享。
受Wang 等[7]工作的啟發,為了確保電子證照數據的有效存儲與安全管理,本文基于區塊鏈智能合約與屬性基加密(Attribute-Based Encryption,ABE)技術,設計并實現了一種安全有效的電子證照管理系統。智能合約的設計思想來自以太坊[9],實現電子證照信息的發布、共享與瀏覽功能,并且使用基于屬性的加密來確保細粒度的電子證照數據的訪問控制。
區塊鏈最早由NAKAMOTO[10]提出,作為比特幣底層基礎的點對點分布式網絡技術,比特幣區塊鏈是第一個出現的公共區塊鏈網絡。比特幣區塊鏈是一個分布式、不斷增長、共享的區塊分類賬[11]。2014年,以太坊(Ethereum)[9]作為一個新的公共區塊鏈被提出,以太坊基于新的智能合約實現分布式計算,以去中心化的特性解決了比特幣區塊鏈擴展性不足問題,廣泛應用于金融、科學、政務、醫療、教育等領域。
在物聯網領域,區塊鏈技術的引入可以使分布式系統突破對中心服務器的依賴,使用區塊鏈的共識機制解決信任問題[12]。現有電子證照的管理同樣屬于分布式存儲問題,結合區塊鏈技術可以實現系統的去中心化,進一步提高系統安全性。
智能合約(Smart Contract)最早由Szabo[13]提出,是一種以信息化方式傳播、驗證或執行合同的計算機協議,允許在沒有第三方的情況下進行可信的交易并且交易具有可追蹤性和不可否認性。智能合約并不綁定區塊鏈技術,其最初的定義是關于法律的自動化合同。近年來,智能合約在區塊鏈和其他分布式賬本技術中獲得了更新的含義:是防篡改的計算更新分類賬狀態的程序[14]。智能合約針對不同性質的自動化任務來執行任意邏輯。
智能合約是一段代碼和數據的集合,可以部署在以太坊網絡上,通過以太坊虛擬機(Ethereum Virtual Machine,EVM)解釋成字節碼進行執行。EVM 內運行的每一步操作實際上同時在被所有節點所執行,保證了智能合約在同一時刻狀態的一致性。同時智能合約有自己的賬戶,在時間或事件的驅動下能自動執行一些功能,如可以在相互之間傳遞信息,修改區塊鏈的狀態(比如賬戶信息)等。
設G 和GT是素數p 的兩個乘法循環群,g 代表G 的生成元,雙線性映射[15]滿足以下條件:
雙線性:對任意a,b∈Zp,有;
可計算性:對g1,g2∈G,計算是可行的。
本系統在以太坊的基礎上設計開發。以太坊是一個通用區塊鏈平臺,與標準的比特幣區塊鏈相比,以太坊的交易場景更加簡單,且以太坊的智能合同可以解決數據完整性問題,實現客戶端-服務器架構,適合跨層級、跨領域的分布式電子證照管理系統的開發。
系統架構如圖1 所示,主要包括六個部分:證照發布方、證照使用方、證照持有方、智能合約、區塊鏈、可信機構組織。

圖1 系統模型
證照發布方:負責為證照持有者發布電子證照,可以上傳數據密文至存儲系統,并將密文索引發布至區塊鏈。
證照持有方:電子證照數據的持有者,證照持有方執行訪問控制策略,根據自身電子證照信息生成簽名信息可使用密鑰加解密電子證照數據,可以為證照使用方的訪問請求進行授權。
證照使用方:需要使用電子證照數據的第三方,使用方在獲取持有方授權后,可以使用持有方提供的搜索令牌與關鍵詞進行檢索,并通過可信機構提供的屬性密鑰進行數據解密。證照使用方獲取電子證照數據時,首先向證照持有方申請授權,獲得持有方屬性令牌。然后向區塊鏈系統發送訪問電子證照的請求,以獲取對應的電子證照數據索引,最后使用索引獲得電子證照數據密文。
可信機構:負責系統的管理,初始化階段可信機構為整個系統選擇公共參數,系統的參與者需要在可信機構進行注冊,在驗證注冊用戶的身份后,可信機構會為系統的參與者生成屬性密鑰。
存儲系統:負責存儲電子證照數據密文與電子證照數據相關的信息及其簽名。
區塊鏈:負責存儲電子證照數據密文索引。
智能合約:其核心為電子證照的操作過程,區塊記錄內容為加密的電子證照。智能合約需完成電子證照發布、取用接口,發布電子證照的過程需有可信機構組織、證照發布方、證照持有方簽名,發布成功的電子證照密文索引在區塊上。
電子證照的共享實質為證照持有方將電子證照的副本交易給目標用戶的過程,該過程由證照發布方、證照使用方、證照持有方、可信機構通過以太坊智能合約實現。副本的有效性可由電子證照hash值與原始區塊中記錄的電子證照hash 值對比,以校驗真實性,并將共享過程記錄在區塊鏈中。
完整的電子證照信息上傳與訪問經過如下步驟:(1)數據用戶認證注冊。
(2)可信機構為電子證照持有方與證照發布方生成屬性密鑰。
(3)數據用戶基于文檔集合的索引,然后生成密文索引并將其外包給區塊鏈。
(4)證照使用方獲得持有方授權,使用持有方身份與關鍵字構造一個加密的令牌,通過安全信道將其發送給證照使用方。
(5)使用方向區塊鏈發送帶有加密令牌的訪問請求,區塊鏈上的“會計節點”接收到令牌后,調用智能合約接口執行搜索,獲得匹配的鍵值對與區塊鏈交易ID,使用返回的區塊鏈交易ID 獲得密文索引,將密文索引發送給使用方。
(6)使用方發送帶有密文索引的訪問請求,存儲系統驗證數據訪問者的屬性是否滿足訪問控制策略,若滿足則發送密文給使用方。
區塊鏈網絡架構如圖2 所示。區塊鏈一些節點保有一份完整的、最新的區塊鏈拷貝,這樣的節點被稱為“全節點”。另外還有一些節點只保留了區塊鏈的一部分,這樣的節點被稱為“輕量級節點”。每個節點都參與全網的路由功能,同時也可能包含其他功能。每個節點都參與驗證并傳播交易及區塊信息,發現并維持與對等節點的連接。根據所提供的功能不同,各節點可能具有不同的分工,一些節點可調用智能合約搜索接口,執行索引搜索功能,稱為會計節點。各工作節點組成P2P 網絡架構,以扁平flat 拓撲結構相互連通。

圖2 區塊鏈網絡架構
可信機構選擇階數為素數p 的乘法循環群G和GT,一個G 的生成元g,以及一個雙線性映射e^ :G×G →GT,定義哈希函數H1:{0,1}*→Zp,H2:{0,1}*→G,并定義加解密函數SE=(SE.Enc,SE.Dec)。之后,隨機選擇(α,β)∈Zp,計算g1=gα,h=gβ,Y=e^ (g,g)α。最終,可信機構發布公共系統參數PP=(G,GT,e,p,g,H1,H2),生成公鑰PK 與私有的系統主密鑰MK。
證照發布方的準入由區塊鏈網絡中的可信機構進行認證與管理。數據用戶的注冊與認證管理也可委托給證照發布方。數據用戶包括證照持有方和證照使用方,每個成功注冊的數據用戶都獲得系統分配的全局標識GID,用于建立用戶密鑰并標識用戶真實身份。
可信機構在區塊鏈上部署了一個用戶管理合約。合約輸入GID 以確定用戶的身份。如果用戶GID 為證照使用方,則根據其訪問的部門資質信息為其分配相應的屬性。如果用戶GID 是經過身份驗證的使用方,則會將其電子證照的屬性分配給他。
可信機構基于用戶GID 的屬性集A 為每個用戶生成私鑰SKu。隨機選擇x←Zp,計算K1=g(α+x)/β,K2=g1/β,K3=gx。對每一個屬性a ∈A,隨機選擇Sa∈Zp并計算Ka=H2(a)SaK3,。之后可信機構通過安全信道將發送給標識為GID 的用戶。
證照發布方為用戶生成電子證照數據,通過可信機構部署的合約將數據密文的hash 值、時間戳、交易發起者、發布方簽名等信息上傳到區塊鏈,并得到返回的交易Id。證照持有方可以瀏覽電子證照數據,區塊鏈記錄所有數據共享交易信息。
具體加密流程如下:證照持有方隨機選擇對稱密鑰k,加密電子證照數據EL 得SE.Enc(EL),上傳SE.Enc(EL)至存儲系統,并獲得相應的索引地址URL(SE.Enc(EL))。之后根據電子證照數據密文生成關鍵字索引與電子證照密文數據索引,將索引提交給證照發布方,并生成加密的關鍵字索引與密文索引。
證照使用方想要檢索電子證照數據時,首先獲取證照持有方的授權。可根據持有方關鍵字以及自身私鑰SK 生成一個搜索陷門。
證照使用方首先輸入自己的私鑰SK 與想要搜索的關鍵字k,并計算,Tu(k)=T*K1,證照使用方通過關鍵字k 生成搜索陷門Tk=(Tu(k),a,ta=Ka,。調用在區塊鏈上部署的智能合約,合約輸入用戶GID 和陷門Tq,并調用搜索算法進行搜索。
搜索算法根據訪問結構T 關聯的屬性返回數據密文索引CI。當且僅當用戶GID 的屬性集A 滿足訪問結構T,且查詢關鍵字k 等于索引關鍵字w,才能返回密文索引CI,所有相關的操作信息均會自動添加到區塊鏈中。之后證照使用方提交密文索引,可根據密文索引獲得存儲系統對應的電子證照數據密文SE.Enc(EL),使用對稱密鑰k 解密。
本文區塊鏈系統基于以太坊搭建,數據用戶和服務對等點的實驗環境所使用的操作系統為64 位Windows 系統,處理器為英特爾酷睿i5 3.5 GHz。利用JPBC 2.0.0 庫進行智能合約的部署。對方案進行了部分實現并對系統進行了測試,測試中統計了電子證照數據加密階段和解密階段的運行時間與索引生成時間。之后與文獻[7]、文獻[8]中的分布式存儲共享方案進行了分析對比。
圖3 模擬可信機構節點生成系統的主密鑰與為用戶生成私鑰的過程,通過隨機采樣生成32 B屬性密鑰。AES 對稱密鑰生成約耗時0.6 ms,非對稱密鑰對生成耗時約為0.5 ms。

圖3 密鑰生成
圖4 演示了數據加密與索引生成,加密并生成數據索引耗時約為8 ms。

圖4 索引生成
假設n 表示屬性的數量,雙線性映射操作時間為P,E 表示循環群中的指數運算,分析本方案與文獻[7]、文獻[8]的理論計算開銷,結果如表1 所示。

表1 計算開銷對比
最后,比較了本文方案與文獻[7]、文獻[8]建立索引時的性能,如圖5 所示。

圖5 索引建立時間開銷
對本系統在防篡改、隱私保護、可驗證性、安全密鑰管理等方面進行非形式化的安全性分析。與相關方案對比如表2 所示。

表2 計算開銷對比
防篡改:電子證照數據經過對稱加密并存儲在獨立于區塊鏈的存儲系統中,相應的索引和對稱密鑰被加密并存儲在區塊鏈中,因此電子證照數據和索引難以被篡改。
隱私保護:系統中的每一個用戶均使用一個隨機生成的GID 匿名地參與區塊鏈交易,且區塊鏈索引和鏈外存儲模式提供了隱私保護。
可驗證性:所有與電子證照數據共享和搜索相關的操作都記錄在防篡改的區塊鏈上,可以提供有效的驗證和匿名的跟蹤。
安全密鑰管理:每個隨機生成的對稱密鑰對電子證照數據進行加密,相應的索引同樣進行加密,并存儲在區塊鏈中。可信機構通過區塊鏈在各節點建立信任,確保密鑰管理的安全性。
綜上,本方案可以完成電子證照數據的密文存儲與索引上鏈工作,數據用戶可以有效地檢索電子證照密文數據。與現有一些方案相比本方案具有更好的安全性,只引入少量的計算開銷,能夠滿足電子證照管理的主體需求。
本文針對電子證照管理中的去中心化共享與隱私保護問題,使用區塊鏈與可搜索加密技術設計并實現了一個安全的電子證照管理系統。利用區塊鏈技術對現存運行方案不足之處進行優化,能有效簡化流程和提高運營效率,并能及時規避信息不透明和容易被篡改的問題。實驗表明,本文的電子證照管理系統有去中心化、分布式可信存儲、不可篡改等特性,該系統有助于電子證照跨地區管理,有利于構建良性的社會信用生態。