摘要:數(shù)字經(jīng)濟(jì)的蓬勃發(fā)展促進(jìn)了區(qū)塊鏈技術(shù)在各行各業(yè)的應(yīng)用探索,但其公開透明特性帶來的身份隱私泄露風(fēng)險,成為阻礙其廣泛應(yīng)用的一大瓶頸??尚艌?zhí)行環(huán)境 (Trusted Execution Environment,TEE) 為解決這一問題提供了極具前景的技術(shù)方案。該文提出一種基于TEE的區(qū)塊鏈身份管理方案,引入分布式證書簽發(fā)機(jī)構(gòu) (Distributed Certificate Author?ity,DCA) 的概念,設(shè)計了分布式公鑰證書簽發(fā)基礎(chǔ)設(shè)施,利用區(qū)塊鏈智能合約實現(xiàn)DCA中CA的功能,并通過TEE保證智能合約的隱私性,在智能合約執(zhí)行過程中保護(hù)私鑰的機(jī)密性。
關(guān)鍵詞:區(qū)塊鏈;可信執(zhí)行環(huán)境;智能合約;身份管理;隱私保護(hù)
中圖分類號:TP393 文獻(xiàn)標(biāo)識碼:A
文章編號:1009-3044(2025)01-0099-03 開放科學(xué)(資源服務(wù)) 標(biāo)識碼(OSID) :
0 引言
數(shù)字經(jīng)濟(jì)的蓬勃發(fā)展為區(qū)塊鏈技術(shù)[1]在金融、供應(yīng)鏈管理、醫(yī)療健康和物聯(lián)網(wǎng)等多個領(lǐng)域的廣泛應(yīng)用帶來了巨大前景。區(qū)塊鏈去中心化、不可篡改和透明的特性備受矚目。然而,其公開透明特性也導(dǎo)致身份隱私問題日益突出。例如,在區(qū)塊鏈上,任何人都可通過區(qū)塊鏈瀏覽器查看所有交易記錄。盡管交易雙方可能匿名,但通過分析交易模式和交易之間的關(guān)聯(lián)性,仍可能追蹤到真實身份。
TEE是一種運(yùn)行在隔離內(nèi)核上的防篡改處理環(huán)境,可確保代碼真實性、運(yùn)行時狀態(tài)完整性和持久存儲數(shù)據(jù)機(jī)密性。通過將敏感邏輯和數(shù)據(jù)在TEE中處理,區(qū)塊鏈僅需將執(zhí)行結(jié)果上鏈,而不暴露具體交易數(shù)據(jù)或合約邏輯。英特爾軟件防護(hù)擴(kuò)展(SoftwareGuard Extensions,SGX)技術(shù)是TEE的一種實現(xiàn)方式,而“飛地”是其中的一項重要設(shè)計[2],飛地是硬件中虛擬構(gòu)造出的一塊安全數(shù)據(jù)區(qū)域,確保了只有經(jīng)可信硬件驗證的實體才能訪問。
為解決區(qū)塊鏈身份隱私問題,本文提出了一種基于TEE的區(qū)塊鏈身份管理方案。該方案引入了分布式證書簽發(fā)機(jī)構(gòu)的概念,通過設(shè)計分布式公鑰證書簽發(fā)基礎(chǔ)設(shè)施,以區(qū)塊鏈智能合約完成分布式公鑰證書簽發(fā)基礎(chǔ)設(shè)施中CA的功能,實現(xiàn)了證書簽發(fā)、證書驗證和證書吊銷等身份數(shù)據(jù)相關(guān)的重要功能在TEE中的安全執(zhí)行。
1 分布式公鑰證書簽發(fā)基礎(chǔ)設(shè)施框架
1.1 概述
身份管理在區(qū)塊鏈[3]中起著至關(guān)重要的作用,它是確保系統(tǒng)安全、保護(hù)數(shù)據(jù)隱私和執(zhí)行智能合約的關(guān)鍵組成部分。PKI是一種利用公鑰密碼學(xué)技術(shù)來管理公鑰和證書的基礎(chǔ)設(shè)施[4]。在PKI中,CA充當(dāng)信任點來保證用戶、設(shè)備和服務(wù)等實體的身份,并且僅允許經(jīng)過身份驗證的實體連接到系統(tǒng)。CA 的運(yùn)行形式主要分為公有和私有兩種。公有 CA 由備受社會信任的公司運(yùn)營,服務(wù)對象覆蓋整個互聯(lián)網(wǎng)。相較于公有CA,私有 CA 的運(yùn)營要求相對寬松。盡管私有 CA 在簽發(fā)公鑰證書方面與公有 CA 功能相同,但它們僅在特定組織或域內(nèi)運(yùn)營。然而,在傳統(tǒng)的身份管理方式中,CA很難滿足靈活多變的身份管理需求,而私有CA在由單一管理實體控制的單域場景中可能增加證書簽發(fā)的監(jiān)管難度。因此,亟須設(shè)計一種適合多組織合作運(yùn)營的身份管理方法,保障區(qū)塊鏈及其各類應(yīng)用場景下的身份信息及使用過程安全。
聯(lián)盟型服務(wù)是在區(qū)塊鏈網(wǎng)絡(luò)中,由多個機(jī)構(gòu)或組織共同運(yùn)營和管理的服務(wù)類型。在聯(lián)盟型服務(wù)中,多個組織合作提供服務(wù),服務(wù)不應(yīng)受到任何特定組織的影響[5]。因此,聯(lián)盟內(nèi)的參與組織必須能夠合作運(yùn)營CA。如果CA的私鑰被聯(lián)盟中的任何組織泄露,則該組織可以使用泄露的私鑰簽發(fā)任意公鑰證書。為了確保CA私鑰的安全,私鑰的使用僅限于基礎(chǔ)設(shè)施中的智能合約,因為私鑰在某些情況下的可用性會導(dǎo)致濫發(fā)公鑰證書。智能合約具有所有組織都同意的業(yè)務(wù)邏輯。只要智能合約中使用了私鑰,就可以認(rèn)為其使用是經(jīng)過參與組織授權(quán)的。然而,智能合約并不能保護(hù)其使用的數(shù)據(jù)的機(jī)密性,私鑰在智能合約執(zhí)行過程中可能會被泄露。本章提出了一種分布式公鑰證書簽發(fā)基礎(chǔ)設(shè)施,通過引入可信執(zhí)行環(huán)境,允許多個組織合作運(yùn)營適合聯(lián)盟型服務(wù)的CA,使用SGX技術(shù)保證智能合約的隱私性,并在智能合約執(zhí)行期間保護(hù)私鑰的機(jī)密性。
分布式公鑰證書簽發(fā)基礎(chǔ)設(shè)施的結(jié)構(gòu)如圖1 所示。
組成分布式公鑰證書簽發(fā)基礎(chǔ)設(shè)施的實體如下:
1) 證書持有者(Certificate Holder,CH) :CH是向所提基礎(chǔ)設(shè)施請求證書發(fā)行的實體。
2) 證書驗證機(jī)構(gòu)(Certificate Verifier,CV) :CV是驗證證書的實體。
3) 證書簽發(fā)機(jī)構(gòu)(Certificate Issuer,CI) :CI是調(diào)用智能合約簽發(fā)證書的實體。
4) 基礎(chǔ)設(shè)施管理機(jī)構(gòu)(Infrastructure Manager,IM) :IM是設(shè)置所提基礎(chǔ)設(shè)施的實體。它負(fù)責(zé)設(shè)置區(qū)塊鏈隱私網(wǎng)絡(luò),部署智能合約,并創(chuàng)建和封裝用于創(chuàng)建公鑰證書的密鑰對。設(shè)置完成后,它充當(dāng)證書簽發(fā)機(jī)構(gòu)。
5) 智能合約:智能合約是在區(qū)塊鏈上讀寫數(shù)據(jù)的程序。在分布式公鑰證書簽發(fā)基礎(chǔ)設(shè)施中,它實現(xiàn)了CA的功能。
6) 數(shù)據(jù)存儲:數(shù)據(jù)存儲是存儲數(shù)據(jù)的賬本。在分布式公鑰證書簽發(fā)基礎(chǔ)設(shè)施中,賬本受到Intel SGX的保護(hù),并存儲用于簽發(fā)的私鑰和已簽發(fā)的公鑰證書。
1.2 基礎(chǔ)設(shè)施事務(wù)與流程
分布式公鑰證書簽發(fā)基礎(chǔ)設(shè)施包含4個事務(wù):初始化設(shè)置、證書簽發(fā)、證書驗證和證書吊銷。
初始化設(shè)置:CI先在SGX飛地內(nèi)設(shè)置證書簽發(fā)所需信息(如簽發(fā)機(jī)構(gòu)信息和最大有效期) ,確保配置信息的安全性與隱私性。SGX飛地加密和驗證所有配置數(shù)據(jù),防止數(shù)據(jù)泄露和篡改。然后,生成兩個密鑰對:skCA用于證書簽發(fā),skAudit用于證書驗證。密鑰對在SGX飛地內(nèi)封裝后,傳輸至區(qū)塊鏈網(wǎng)絡(luò)存儲,確保其完整性和保密性。最后,IM在SGX飛地內(nèi)刪除本地密鑰副本,增強(qiáng)系統(tǒng)安全性。
證書簽發(fā):CH生成自己的公私鑰對,創(chuàng)建證書簽名請求(CSR) ,并將其發(fā)送給CI。CH可利用SGX遠(yuǎn)程證明功能驗證CI的真實性和安全狀態(tài),必要時使用CI的公鑰加密CSR。CI的SGX飛地解密CSR,驗證其有效性后,使用CA私鑰對公鑰證書簽名,并將加密后的證書(使用CH的公鑰) 發(fā)送回CH。
證書驗證:CV獲取CH的公鑰證書(certCH) 和一個隨機(jī)數(shù)(r1) ,發(fā)送給CI進(jìn)行驗證。CI將數(shù)據(jù)傳遞給SGX飛地中的驗證函數(shù)checkCert。checkCert函數(shù)在SGX飛地內(nèi)查詢區(qū)塊鏈賬本,驗證certCH的有效性。若驗證成功,智能合約使用私鑰(skAudit) 對r1簽名,生成sigr1。CI將驗證結(jié)果、sigr1和用于驗證sigr1的證書certAudit發(fā)送回CV。CV使用CA證書驗證certAudit和sigr1的真實性,并最終使用CA證書certCA驗證certCH的有效性。
證書吊銷:CH將要吊銷的證書序列號發(fā)送給CI。CI生成隨機(jī)數(shù)r2,發(fā)送給CH并請求其私鑰簽名。CH 生成sigr2并發(fā)送回CI,CI的SGX飛地驗證sigr2的真實性。驗證通過后,SGX飛地更新賬本,將證書標(biāo)記為已吊銷。
2 基于TEE 的CA 智能合約設(shè)計與實現(xiàn)
2.1 初始化設(shè)置
初始化設(shè)置(setConfig) 算法用于在區(qū)塊鏈隱私網(wǎng)絡(luò)上設(shè)置分布式公鑰證書簽發(fā)基礎(chǔ)設(shè)施的配置信息,包括簽發(fā)機(jī)構(gòu)信息和最大有效期。該算法接收簽發(fā)機(jī)構(gòu)名稱(iss)和最大有效期(med)作為輸入,并返回操作結(jié)果。算法首先進(jìn)入SGX安全環(huán)境,確保后續(xù)操作的安全性。然后,驗證輸入?yún)?shù)iss和med是否有效,如果任一為空則退出SGX環(huán)境并返回錯誤。接著,使用SGX的密封功能對配置數(shù)據(jù)進(jìn)行加密,保證數(shù)據(jù)即使在飛地外部也不會被篡改或泄漏。如果密封失敗,則退出SGX環(huán)境并返回錯誤。然后,將密封后的數(shù)據(jù)安全地存儲在SGX飛地內(nèi)部。最后,退出SGX安全環(huán)境,并返回“OK”,表示配置數(shù)據(jù)已成功設(shè)置并安全存儲。
2.2 密鑰封裝
密鑰封裝(encloseKeys) 算法用于生成和封裝用于創(chuàng)建公鑰證書的密鑰對。該算法接收CA的公私鑰、用于證書驗證的私鑰、CA公鑰、用于簽名公鑰證書的私鑰和證書過期日期作為輸入,并返回操作結(jié)果。算法首先進(jìn)入SGX安全環(huán)境,確保后續(xù)操作的安全性。然后,使用SGX的創(chuàng)建飛地功能,加載并初始化名為CertGenEnclave.signed.so的飛地應(yīng)用程序。接著,通過ECALL調(diào)用飛地內(nèi)部函數(shù)在飛地安全環(huán)境中執(zhí)行證書生成和簽名操作。證書生成和簽名完成后,銷毀飛地實例,釋放資源。最后,將生成的CA證書(certCA) 和審計證書(certAudit)存儲到區(qū)塊鏈狀態(tài)數(shù)據(jù)庫中,并更新相關(guān)狀態(tài)信息。在SGX飛地內(nèi)部生成CA證書和審計證書,并將證書存儲到區(qū)塊鏈狀態(tài)數(shù)據(jù)庫中。
2.3 證書簽發(fā)
證書簽發(fā)(issueCert) 算法用于在區(qū)塊鏈隱私網(wǎng)絡(luò)上生成并簽發(fā)公鑰證書。該算法接收證書簽名請求(csr) 和證書有效期(ed) 作為輸入,并返回一個簽發(fā)后的證書對象(cert)。算法首先獲取當(dāng)前序列號、配置信息和有效密鑰信息,然后根據(jù)輸入的csr和配置信息設(shè)置證書的各項屬性,包括版本、頒發(fā)機(jī)構(gòu)、主體、序列號、公鑰和擴(kuò)展信息。之后,檢查提供的到期日期是否超出了配置中定義的最大到期日期,如果超出,則返回錯誤。最后,在SGX飛地內(nèi)部使用CA的私鑰對證書進(jìn)行簽名,并將簽名后的證書和更新后的序列號存儲到區(qū)塊鏈狀態(tài)數(shù)據(jù)庫中。
2.4 證書驗證
證書驗證(checkCert) 算法用于驗證區(qū)塊鏈隱私網(wǎng)絡(luò)中公鑰證書的有效性。該算法接收證書持有者的公鑰證書(certCH) 和一個隨機(jī)數(shù)(r1) 作為輸入,并返回簽名(sig)和用于驗證簽名的審計證書(certAudit)。算法首先獲取證書持有者的公鑰證書(certCH),檢查證書是否有效且未被吊銷。然后,在SGX飛地內(nèi)部使用審計私鑰對隨機(jī)數(shù)(r1) 進(jìn)行簽名,并從狀態(tài)數(shù)據(jù)庫中獲取審計證書(certAudit) 。最后,算法返回簽名(sig) 和審計證書(certAudit) 。
2.5 證書獲取
證書獲?。╣etCert) 算法用于獲取指定的公鑰證書。該算法接收證書序列號(sn) 作為輸入,并返回對應(yīng)的公鑰證書(cert) 。算法首先進(jìn)入SGX安全環(huán)境,確保操作的安全性。然后,使用輸入的序列號從狀態(tài)數(shù)據(jù)庫中檢索證書。如果檢索到的證書為空,則退出SGX環(huán)境并返回錯誤信息。接著,檢查證書是否已過期,如果已過期,則退出SGX環(huán)境并返回錯誤信息。最后,退出SGX環(huán)境并返回檢索到的有效證書。
2.6 證書吊銷
證書吊銷(revokeCert) 算法用于吊銷指定的公鑰證書。該算法接收證書序列號(sn) 、吊銷日期(rd) 和吊銷原因(rc) 作為輸入,并返回操作結(jié)果。算法首先進(jìn)入SGX安全環(huán)境,確保操作的安全性。然后,從狀態(tài)數(shù)據(jù)庫中獲取當(dāng)前證書吊銷列表(CRL)。接著,遍歷CRL以檢查輸入的序列號是否已存在。如果已存在,說明證書已被吊銷,此時退出SGX環(huán)境并返回錯誤信息。如果證書尚未被吊銷,創(chuàng)建一個新的吊銷條目并添加到CRL中。這一步驟在隔離的環(huán)境中執(zhí)行,以保護(hù)操作的安全性。然后,將更新后的CRL保存回狀態(tài)數(shù)據(jù)庫。這是在SGX環(huán)境中完成的,確保了數(shù)據(jù)寫入過程的安全性。所有敏感操作完成后,通過sgx_exit指令退出SGX環(huán)境。最后,返回“OK”表示吊銷操作已成功完成。
3 實驗結(jié)果
本節(jié)評估了所提基礎(chǔ)設(shè)施的性能,重點關(guān)注證書簽發(fā)、驗證和吊銷過程的時間開銷。
為了進(jìn)行實驗評估,本文實現(xiàn)了如圖2所示的系統(tǒng)。系統(tǒng)創(chuàng)建了兩個對等節(jié)點和一個排序節(jié)點,并用它們實現(xiàn)了一個區(qū)塊鏈隱私網(wǎng)絡(luò)。本文構(gòu)建的智能合約在區(qū)塊鏈隱私網(wǎng)絡(luò)上執(zhí)行,并測量了其處理時間。
實驗中,使用setConfig和encloseKeys設(shè)置基礎(chǔ)設(shè)施后,重復(fù)執(zhí)行issueCert、checkCert、getCert和revoke?Cert各100次,測量每個智能合約的執(zhí)行時間。圖3 顯示了實驗結(jié)果。
圖3中,issueCert的執(zhí)行時間相對較長(2.9~3.3 ms),主要因為其創(chuàng)建證書的過程。checkCert執(zhí)行時間相對穩(wěn)定(2.2~2.6 ms),驗證過程高效。getCert執(zhí)行時間也較為穩(wěn)定(0.43~0.48 ms),得益于證書按序列號存儲的設(shè)計,檢索速度快。revokeCert執(zhí)行時間隨CRL大小增長而增加(0.5~1.7 ms),但仍遠(yuǎn)小于checkCert。所有操作都在SGX飛地中執(zhí)行,確保了私鑰和敏感數(shù)據(jù)的安全。
實驗結(jié)果表明,該系統(tǒng)在執(zhí)行時間、效率、安全性和功能完整性方面表現(xiàn)出色,能夠有效實現(xiàn)區(qū)塊鏈身份管理和保護(hù)身份隱私。
4 結(jié)束語
為解決區(qū)塊鏈身份隱私問題,本文提出一種基于TEE的區(qū)塊鏈身份管理方案。該方案引入了分布式證書簽發(fā)機(jī)構(gòu)的概念,通過設(shè)計分布式公鑰證書簽發(fā)基礎(chǔ)設(shè)施,以區(qū)塊鏈智能合約完成分布式公鑰證書簽發(fā)基礎(chǔ)設(shè)施中CA的功能,達(dá)成了證書簽發(fā)、證書驗證和證書吊銷等功能在TEE中的安全執(zhí)行,實現(xiàn)了區(qū)塊鏈身份管理。實驗結(jié)果表明,所提方案能夠有效實現(xiàn)證書簽發(fā)和證書驗證,達(dá)到區(qū)塊鏈身份隱私保護(hù),具有較好的性能。
參考文獻(xiàn):
[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.
【通聯(lián)編輯:代影】