



摘要:數字經濟的蓬勃發展促進了區塊鏈技術在各行各業的應用探索,但其公開透明特性帶來的身份隱私泄露風險,成為阻礙其廣泛應用的一大瓶頸。可信執行環境 (Trusted Execution Environment,TEE) 為解決這一問題提供了極具前景的技術方案。該文提出一種基于TEE的區塊鏈身份管理方案,引入分布式證書簽發機構 (Distributed Certificate Author?ity,DCA) 的概念,設計了分布式公鑰證書簽發基礎設施,利用區塊鏈智能合約實現DCA中CA的功能,并通過TEE保證智能合約的隱私性,在智能合約執行過程中保護私鑰的機密性。
關鍵詞:區塊鏈;可信執行環境;智能合約;身份管理;隱私保護
中圖分類號:TP393 文獻標識碼:A
文章編號:1009-3044(2025)01-0099-03 開放科學(資源服務) 標識碼(OSID) :
0 引言
數字經濟的蓬勃發展為區塊鏈技術[1]在金融、供應鏈管理、醫療健康和物聯網等多個領域的廣泛應用帶來了巨大前景。區塊鏈去中心化、不可篡改和透明的特性備受矚目。然而,其公開透明特性也導致身份隱私問題日益突出。例如,在區塊鏈上,任何人都可通過區塊鏈瀏覽器查看所有交易記錄。盡管交易雙方可能匿名,但通過分析交易模式和交易之間的關聯性,仍可能追蹤到真實身份。
TEE是一種運行在隔離內核上的防篡改處理環境,可確保代碼真實性、運行時狀態完整性和持久存儲數據機密性。通過將敏感邏輯和數據在TEE中處理,區塊鏈僅需將執行結果上鏈,而不暴露具體交易數據或合約邏輯。英特爾軟件防護擴展(SoftwareGuard Extensions,SGX)技術是TEE的一種實現方式,而“飛地”是其中的一項重要設計[2],飛地是硬件中虛擬構造出的一塊安全數據區域,確保了只有經可信硬件驗證的實體才能訪問。
為解決區塊鏈身份隱私問題,本文提出了一種基于TEE的區塊鏈身份管理方案。該方案引入了分布式證書簽發機構的概念,通過設計分布式公鑰證書簽發基礎設施,以區塊鏈智能合約完成分布式公鑰證書簽發基礎設施中CA的功能,實現了證書簽發、證書驗證和證書吊銷等身份數據相關的重要功能在TEE中的安全執行。
1 分布式公鑰證書簽發基礎設施框架
1.1 概述
身份管理在區塊鏈[3]中起著至關重要的作用,它是確保系統安全、保護數據隱私和執行智能合約的關鍵組成部分。PKI是一種利用公鑰密碼學技術來管理公鑰和證書的基礎設施[4]。在PKI中,CA充當信任點來保證用戶、設備和服務等實體的身份,并且僅允許經過身份驗證的實體連接到系統。CA 的運行形式主要分為公有和私有兩種。公有 CA 由備受社會信任的公司運營,服務對象覆蓋整個互聯網。相較于公有CA,私有 CA 的運營要求相對寬松。盡管私有 CA 在簽發公鑰證書方面與公有 CA 功能相同,但它們僅在特定組織或域內運營。然而,在傳統的身份管理方式中,CA很難滿足靈活多變的身份管理需求,而私有CA在由單一管理實體控制的單域場景中可能增加證書簽發的監管難度。因此,亟須設計一種適合多組織合作運營的身份管理方法,保障區塊鏈及其各類應用場景下的身份信息及使用過程安全。
聯盟型服務是在區塊鏈網絡中,由多個機構或組織共同運營和管理的服務類型。在聯盟型服務中,多個組織合作提供服務,服務不應受到任何特定組織的影響[5]。因此,聯盟內的參與組織必須能夠合作運營CA。如果CA的私鑰被聯盟中的任何組織泄露,則該組織可以使用泄露的私鑰簽發任意公鑰證書。為了確保CA私鑰的安全,私鑰的使用僅限于基礎設施中的智能合約,因為私鑰在某些情況下的可用性會導致濫發公鑰證書。智能合約具有所有組織都同意的業務邏輯。只要智能合約中使用了私鑰,就可以認為其使用是經過參與組織授權的。然而,智能合約并不能保護其使用的數據的機密性,私鑰在智能合約執行過程中可能會被泄露。本章提出了一種分布式公鑰證書簽發基礎設施,通過引入可信執行環境,允許多個組織合作運營適合聯盟型服務的CA,使用SGX技術保證智能合約的隱私性,并在智能合約執行期間保護私鑰的機密性。
分布式公鑰證書簽發基礎設施的結構如圖1 所示。
組成分布式公鑰證書簽發基礎設施的實體如下:
1) 證書持有者(Certificate Holder,CH) :CH是向所提基礎設施請求證書發行的實體。
2) 證書驗證機構(Certificate Verifier,CV) :CV是驗證證書的實體。
3) 證書簽發機構(Certificate Issuer,CI) :CI是調用智能合約簽發證書的實體。
4) 基礎設施管理機構(Infrastructure Manager,IM) :IM是設置所提基礎設施的實體。它負責設置區塊鏈隱私網絡,部署智能合約,并創建和封裝用于創建公鑰證書的密鑰對。設置完成后,它充當證書簽發機構。
5) 智能合約:智能合約是在區塊鏈上讀寫數據的程序。在分布式公鑰證書簽發基礎設施中,它實現了CA的功能。
6) 數據存儲:數據存儲是存儲數據的賬本。在分布式公鑰證書簽發基礎設施中,賬本受到Intel SGX的保護,并存儲用于簽發的私鑰和已簽發的公鑰證書。
1.2 基礎設施事務與流程
分布式公鑰證書簽發基礎設施包含4個事務:初始化設置、證書簽發、證書驗證和證書吊銷。
初始化設置:CI先在SGX飛地內設置證書簽發所需信息(如簽發機構信息和最大有效期) ,確保配置信息的安全性與隱私性。SGX飛地加密和驗證所有配置數據,防止數據泄露和篡改。然后,生成兩個密鑰對:skCA用于證書簽發,skAudit用于證書驗證。密鑰對在SGX飛地內封裝后,傳輸至區塊鏈網絡存儲,確保其完整性和保密性。最后,IM在SGX飛地內刪除本地密鑰副本,增強系統安全性。
證書簽發:CH生成自己的公私鑰對,創建證書簽名請求(CSR) ,并將其發送給CI。CH可利用SGX遠程證明功能驗證CI的真實性和安全狀態,必要時使用CI的公鑰加密CSR。CI的SGX飛地解密CSR,驗證其有效性后,使用CA私鑰對公鑰證書簽名,并將加密后的證書(使用CH的公鑰) 發送回CH。
證書驗證:CV獲取CH的公鑰證書(certCH) 和一個隨機數(r1) ,發送給CI進行驗證。CI將數據傳遞給SGX飛地中的驗證函數checkCert。checkCert函數在SGX飛地內查詢區塊鏈賬本,驗證certCH的有效性。若驗證成功,智能合約使用私鑰(skAudit) 對r1簽名,生成sigr1。CI將驗證結果、sigr1和用于驗證sigr1的證書certAudit發送回CV。CV使用CA證書驗證certAudit和sigr1的真實性,并最終使用CA證書certCA驗證certCH的有效性。
證書吊銷:CH將要吊銷的證書序列號發送給CI。CI生成隨機數r2,發送給CH并請求其私鑰簽名。CH 生成sigr2并發送回CI,CI的SGX飛地驗證sigr2的真實性。驗證通過后,SGX飛地更新賬本,將證書標記為已吊銷。
2 基于TEE 的CA 智能合約設計與實現
2.1 初始化設置
初始化設置(setConfig) 算法用于在區塊鏈隱私網絡上設置分布式公鑰證書簽發基礎設施的配置信息,包括簽發機構信息和最大有效期。該算法接收簽發機構名稱(iss)和最大有效期(med)作為輸入,并返回操作結果。算法首先進入SGX安全環境,確保后續操作的安全性。然后,驗證輸入參數iss和med是否有效,如果任一為空則退出SGX環境并返回錯誤。接著,使用SGX的密封功能對配置數據進行加密,保證數據即使在飛地外部也不會被篡改或泄漏。如果密封失敗,則退出SGX環境并返回錯誤。然后,將密封后的數據安全地存儲在SGX飛地內部。最后,退出SGX安全環境,并返回“OK”,表示配置數據已成功設置并安全存儲。
2.2 密鑰封裝
密鑰封裝(encloseKeys) 算法用于生成和封裝用于創建公鑰證書的密鑰對。該算法接收CA的公私鑰、用于證書驗證的私鑰、CA公鑰、用于簽名公鑰證書的私鑰和證書過期日期作為輸入,并返回操作結果。算法首先進入SGX安全環境,確保后續操作的安全性。然后,使用SGX的創建飛地功能,加載并初始化名為CertGenEnclave.signed.so的飛地應用程序。接著,通過ECALL調用飛地內部函數在飛地安全環境中執行證書生成和簽名操作。證書生成和簽名完成后,銷毀飛地實例,釋放資源。最后,將生成的CA證書(certCA) 和審計證書(certAudit)存儲到區塊鏈狀態數據庫中,并更新相關狀態信息。在SGX飛地內部生成CA證書和審計證書,并將證書存儲到區塊鏈狀態數據庫中。
2.3 證書簽發
證書簽發(issueCert) 算法用于在區塊鏈隱私網絡上生成并簽發公鑰證書。該算法接收證書簽名請求(csr) 和證書有效期(ed) 作為輸入,并返回一個簽發后的證書對象(cert)。算法首先獲取當前序列號、配置信息和有效密鑰信息,然后根據輸入的csr和配置信息設置證書的各項屬性,包括版本、頒發機構、主體、序列號、公鑰和擴展信息。之后,檢查提供的到期日期是否超出了配置中定義的最大到期日期,如果超出,則返回錯誤。最后,在SGX飛地內部使用CA的私鑰對證書進行簽名,并將簽名后的證書和更新后的序列號存儲到區塊鏈狀態數據庫中。
2.4 證書驗證
證書驗證(checkCert) 算法用于驗證區塊鏈隱私網絡中公鑰證書的有效性。該算法接收證書持有者的公鑰證書(certCH) 和一個隨機數(r1) 作為輸入,并返回簽名(sig)和用于驗證簽名的審計證書(certAudit)。算法首先獲取證書持有者的公鑰證書(certCH),檢查證書是否有效且未被吊銷。然后,在SGX飛地內部使用審計私鑰對隨機數(r1) 進行簽名,并從狀態數據庫中獲取審計證書(certAudit) 。最后,算法返回簽名(sig) 和審計證書(certAudit) 。
2.5 證書獲取
證書獲取(getCert) 算法用于獲取指定的公鑰證書。該算法接收證書序列號(sn) 作為輸入,并返回對應的公鑰證書(cert) 。算法首先進入SGX安全環境,確保操作的安全性。然后,使用輸入的序列號從狀態數據庫中檢索證書。如果檢索到的證書為空,則退出SGX環境并返回錯誤信息。接著,檢查證書是否已過期,如果已過期,則退出SGX環境并返回錯誤信息。最后,退出SGX環境并返回檢索到的有效證書。
2.6 證書吊銷
證書吊銷(revokeCert) 算法用于吊銷指定的公鑰證書。該算法接收證書序列號(sn) 、吊銷日期(rd) 和吊銷原因(rc) 作為輸入,并返回操作結果。算法首先進入SGX安全環境,確保操作的安全性。然后,從狀態數據庫中獲取當前證書吊銷列表(CRL)。接著,遍歷CRL以檢查輸入的序列號是否已存在。如果已存在,說明證書已被吊銷,此時退出SGX環境并返回錯誤信息。如果證書尚未被吊銷,創建一個新的吊銷條目并添加到CRL中。這一步驟在隔離的環境中執行,以保護操作的安全性。然后,將更新后的CRL保存回狀態數據庫。這是在SGX環境中完成的,確保了數據寫入過程的安全性。所有敏感操作完成后,通過sgx_exit指令退出SGX環境。最后,返回“OK”表示吊銷操作已成功完成。
3 實驗結果
本節評估了所提基礎設施的性能,重點關注證書簽發、驗證和吊銷過程的時間開銷。
為了進行實驗評估,本文實現了如圖2所示的系統。系統創建了兩個對等節點和一個排序節點,并用它們實現了一個區塊鏈隱私網絡。本文構建的智能合約在區塊鏈隱私網絡上執行,并測量了其處理時間。
實驗中,使用setConfig和encloseKeys設置基礎設施后,重復執行issueCert、checkCert、getCert和revoke?Cert各100次,測量每個智能合約的執行時間。圖3 顯示了實驗結果。
圖3中,issueCert的執行時間相對較長(2.9~3.3 ms),主要因為其創建證書的過程。checkCert執行時間相對穩定(2.2~2.6 ms),驗證過程高效。getCert執行時間也較為穩定(0.43~0.48 ms),得益于證書按序列號存儲的設計,檢索速度快。revokeCert執行時間隨CRL大小增長而增加(0.5~1.7 ms),但仍遠小于checkCert。所有操作都在SGX飛地中執行,確保了私鑰和敏感數據的安全。
實驗結果表明,該系統在執行時間、效率、安全性和功能完整性方面表現出色,能夠有效實現區塊鏈身份管理和保護身份隱私。
4 結束語
為解決區塊鏈身份隱私問題,本文提出一種基于TEE的區塊鏈身份管理方案。該方案引入了分布式證書簽發機構的概念,通過設計分布式公鑰證書簽發基礎設施,以區塊鏈智能合約完成分布式公鑰證書簽發基礎設施中CA的功能,達成了證書簽發、證書驗證和證書吊銷等功能在TEE中的安全執行,實現了區塊鏈身份管理。實驗結果表明,所提方案能夠有效實現證書簽發和證書驗證,達到區塊鏈身份隱私保護,具有較好的性能。
參考文獻:
[1] SQUAREPANTS S.Bitcoin:a peer-to-peer electronic cash sys?tem[J].SSRN Electronic Journal,2008.
[2] Intel. Intel? 64 and IA-32 Architectures Software Developer'sManual [EB/OL].[2024-10-20].https://www.intel.com/content/www/us/en/developer/articles/technical/intel-sdm.html.
[3] AL-SHAIBANI H,LASLA N,ABDALLAH M.Consortiumblockchain-based decentralized stock exchange platform[J].IEEE Access,2020,8:123711-123725.
[4] PERLMAN R.An overview of PKI trust models[J].IEEE Net?work,1999,13(6):38-43.
[5] ZHANG J R.A multi-transaction mode consortium blockchain[J]. International Journal of Performability Engineering, 2018,14(4):765.
【通聯編輯:代影】