文獻標識碼: A
DOI:10.16157/j.issn.0258-7998.175075
中文引用格式: 吳縉,徐金甫. 基于PUF的可信根及可信計算平臺架構(gòu)設計[J].電子技術應用,2018,44(9):34-38.
英文引用格式: Wu Jin,Xu Jinfu. Trusted root and trusted computing platform architecture design based on physical unclonable function[J]. Application of Electronic Technique,2018,44(9):34-38.
0 引言
為有效防御惡意用戶非法訪問SoC中的敏感數(shù)據(jù)或危害其他部件,文獻[1]提出了基于雙核的通用計算與安全管控隔離的SoC架構(gòu)(下面簡稱“雙核安全架構(gòu)”),實現(xiàn)了安全核對計算核的安全啟動、主動度量、實時監(jiān)控、訪問控制等安全服務。但這一架構(gòu)只能提供“隔離”而不是“可信”的執(zhí)行環(huán)境,因為它無法向用戶或外部驗證者證明運行在執(zhí)行環(huán)境中的軟件是不可篡改的。當前主流的驗證技術是利用認證密鑰對軟件度量值進行簽名和驗簽,而認證密鑰和軟件度量值都通過可信根來安全存儲[2]。因此,一個隔離的執(zhí)行環(huán)境只有配備了可信根才能真正構(gòu)成可信執(zhí)行環(huán)境(Trusted Execution Environment,TEE)。
國內(nèi)外針對可信根構(gòu)建技術進行了許多研究。ARM公司基于GlobalPlatform TEE API標準定義了TrustZone應用平臺架構(gòu),利用硬件密鑰、密碼加速器、安全芯片等硬件資源來構(gòu)建可信根[3-4]。文獻[5]提出使用PUF來保護TEE的方法,但只考慮了TrustZone應用平臺上的安全啟動過程,而忽視了認證、加密等安全防護功能,且沒有給出具體設計實現(xiàn)。文獻[6]提出了一種便攜式可信計算模塊TEEM,可為各種計算平臺提供可信計算功能,但沒有實現(xiàn)TEEM與Rich OS的隔離,TEEM運行于整個Linux操作系統(tǒng),使得可信計算基(Trusted Computing Base,TCB)非常龐大,且沒有考慮如何建立TEEM的信任鏈。
鑒于上述方法均無法構(gòu)建高效靈活安全的可信根,本文提出了利用PUF技術為雙核安全架構(gòu)提供可信根PRoT,設計了基于PRoT的信任鏈,以保證可信關系的逐級擴展。實驗結(jié)果表明,PUF為嵌入式系統(tǒng)提供的可信根具有安全性,并根據(jù)PRoT部署了密鑰更新協(xié)議,進一步增強了系統(tǒng)的靈活性和攻擊抗性。
1 基于PUF的可信根PRoT
具有輕量級屬性的PUF適用于資源受限的嵌入式設備[5],基于PUF構(gòu)建可信根PRoT可為操作系統(tǒng)(Operating System,OS)和安全服務提供可信計算功能,而無需額外的安全硬件資源,并允許用戶在設備被物理攻擊破壞后重新部署可信根。PRoT的核心模塊為可信構(gòu)建模塊(Trust Building Module,TBM)和Seal/Unseal服務。
1.1 可信構(gòu)建模塊TBM
本文利用模糊提取算法[7]從PUF響應值中提取唯一設備密鑰,模糊提取算法結(jié)構(gòu)如圖1所示。模糊提取算法的工作過程分為生成階段和重現(xiàn)階段。TBM實現(xiàn)于重現(xiàn)階段,由BCH糾錯碼、密鑰提取算法(Key Derivation Function,KDF)和密鑰生成算法(Key Generation Algorithm,KG)組成。
1.1.1 生成階段
生成階段由制造商在設備生產(chǎn)中執(zhí)行。首先,制造商選擇隨機數(shù)PS,用BCH糾錯碼對PS進行編碼以獲得代碼C(PS)=BCHEnc(PS)。PUF的響應R作為輸入,與C(PS)異或得到代碼S送入輔助數(shù)據(jù)H,在重現(xiàn)階段中H用于生成相同的初始種子PS。
然后,R與PS異或得到TRS,再注入KDF中生成對稱密鑰k,PS被傳遞到KG中生成唯一的公鑰/私鑰對(pk,sk)。對稱密鑰對安全OS的鏡像進行加密來保護其機密性。制造商通過簽名公鑰pk、TBM鏡像和安全OS鏡像的標準度量值來生成證書 Certpk。這兩個度量值將用于構(gòu)建雙核安全架構(gòu)安全啟動的信任鏈。
最后,制造商將輔助數(shù)據(jù)H、加密后的安全OS鏡像和證書Certpk存儲在設備的非易失性存儲器中。在生成階段,制造商將初始種子PS隱含地嵌入到設備中,即初始種子沒有物理存儲在設備上,但可以在運行時重新生成。
1.1.2 重現(xiàn)階段
重現(xiàn)階段將PUF在相同激勵下產(chǎn)生的響應值R′作為輸入。由于環(huán)境因素干擾,PUF的響應值R′和生成階段中PUF的響應值R之間存在噪聲偏差,故BCH糾錯碼用來消除噪聲。R′先與輔助數(shù)據(jù)中的S進行異或以產(chǎn)生噪聲BCH碼C(PS)′=R′⊕S,代碼C(PS)′傳遞給BCH解碼器,消除噪聲并產(chǎn)生在生成階段中隨機選擇的PS,最后從PS中提取唯一設備密鑰和對稱密鑰,對稱密鑰用于解密安全OS鏡像。
TBM產(chǎn)生的唯一設備密鑰為安全服務和通用操作系統(tǒng)提供可信根。首先是利用唯一設備密鑰為安全服務提供Seal/Unseal服務,確保只有指定的安全服務和平臺才能訪問用戶數(shù)據(jù),Seal/Unseal服務可視為安全服務的可信根。其次,TPM服務使用唯一設備密鑰作為認證密鑰,為通用計算核提供諸如安全存儲、認證、度量等豐富的可信計算功能,這些功能可用于啟動一個可信的通用OS并幫助該OS將信任鏈擴展到應用,即幫助非安全域運行在可信狀態(tài)。TPM服務可視為通用操作系統(tǒng)的可信根。
1.2 Seal/Unseal服務
Seal/Unseal服務利用唯一設備密鑰(pk,sk)進行加密算法和哈希操作,與平臺和特定安全服務綁定安全數(shù)據(jù)。用戶通過步驟1和2將數(shù)據(jù)data密封到安全服務S中,其中hash(S)表示二進制代碼S的哈希值,B代表存儲于安全服務中的雙重加密代碼。
由步驟Sealing和Unsealing可知,只有具有唯一設備密鑰和運行合法安全服務的設備才能獲取用戶數(shù)據(jù)data,而唯一設備密鑰只能被運行合法OS的平臺獲得,所以Seal/Unseal服務保證了只有處于安全狀態(tài)的平臺才可以訪問用戶數(shù)據(jù)。換句話說,Seal/Unseal服務向用戶隱含地證明了執(zhí)行環(huán)境處于可信狀態(tài)。安全服務還可以使用此機制來存儲關鍵數(shù)據(jù)。
2 基于PROT的可信計算平臺架構(gòu)
2.1 可信計算平臺架構(gòu)
安全啟動是保證SoC系統(tǒng)安全的一個重要前提。安全OS和安全服務的鏡像通常從非安全永久性存儲(如閃存或SD卡)加載,可能會受到惡意應用程序的篡改[8]。本文構(gòu)建了基于PRoT的可信計算平臺架構(gòu)(如圖2所示),并進一步尋求建立基于PRoT的信任鏈(如圖3所示),實現(xiàn)信任關系從可信根到整個計算平臺的擴展,保護運行代碼的安全性和完整性,完成雙核安全系統(tǒng)的安全啟動。
2.2 信任鏈
信任鏈是通過實現(xiàn)一個實體與預期值的充分匹配來了解信息平臺的可信程度[8]。基于PROT的信任鏈傳遞過程如圖3所示。
當設備通電時,處理器立即從BootROM執(zhí)行一級啟動代碼(First Stage Boot Loader,F(xiàn)SBL),該代碼通常在芯片制造過程中已被置信。在簡單的系統(tǒng)初始化后,F(xiàn)SBL首先對TBM鏡像進行完整性驗證,使用制造商的公鑰進行驗簽。若驗簽成功,則度量TBM的鏡像,并與標準度量值進行比較。如果完整性驗證通過,則讀取PUF的響應值R,并將R傳輸?shù)絋BM,運行TBM,否則停止啟動。
由于片內(nèi)存儲器的存儲空間對于傳統(tǒng)的引導進程不夠大,需要將Second Stage Bootloader代碼(即U-boot)的鏡像加密存儲在外部DDR存儲器上,因此,在驗證U-boot前,用TBM生成的密鑰K對U-boot和安全OS的鏡像進行解密。所以TBM不僅保證了安全OS的完整性,還增加了其安全性。再依次完成鏡像度量值驗證,并在驗證成功后,沿信任鏈度量方向傳遞控制權。在運行安全OS之前,要擦除片上存儲器中的所有信息。安全OS啟動時將初始化安全服務、TPM服務等,然后通過這些服務將信任鏈擴展到整個可信平臺。
2.3 密鑰更新機制
當前,設備密鑰的安全存儲機制通常依賴于Battery-backed RAM或eFuse技術[2]。與這些機制相比,基于PUF技術構(gòu)建的可信根能夠部署靈活的密鑰更新機制,具體協(xié)議流程如圖4所示。設備所有者可以通過定期更改設備密鑰來提高系統(tǒng)的安全等級。
令表示將集合S中隨機選擇的值分配給x,{0,1}n表示長度為n的二進制字符串集合。設備D具有唯一設備公鑰/私鑰對(pk,sk),且制造商M具有用于簽名的密鑰對(pkM,skM)。三元組(KG,SIG,VER)表示簽名方案,其中SIG是簽名算法,VER是驗簽算法。imB和imS分別表示TBM和OS的鏡像。
新的初始種子PS′的隨機選取與舊設備密鑰無關,舊設備密鑰的泄露不會對PS′造成危害。但是,敵手可以將先前的輔助數(shù)據(jù)和加密的操作系統(tǒng)鏡像復制回設備中,使得設備密鑰回溯為舊設備密鑰,即通過降級攻擊來破壞密鑰更新協(xié)議。圖4的密鑰更新協(xié)議中增加了計數(shù)器c,用于抵抗降級攻擊。c在協(xié)議重新執(zhí)行后計數(shù)加1,TBM就不能計算先前的對稱密鑰K,所以操作系統(tǒng)鏡像無法解密。只有新部署的軟件才能啟動系統(tǒng),從而防止降級攻擊。
3 實驗與評估
3.1 TBM及PRoT實現(xiàn)
基于Xilinx公司的Zynq-7000 AP SoC實現(xiàn)了上述設計,TBM中的PUF模塊使用基于環(huán)形振蕩器的PUF[9]實現(xiàn),采用C語言對TBM和PRoT進行了描述。模糊提取算法基于可以配置不同參數(shù)的開源BCH糾錯碼來實現(xiàn)[10]。本文將BCH參數(shù)[n,k,d]配置為[256,21,55],其中n表示編碼位寬,k表示數(shù)據(jù)位寬,且d≥2t+1,t表示可糾錯的位數(shù)。[256,21,55]-BCH糾錯碼可以解碼錯誤位少于=27比特的噪聲信息。初始種子的長度為131比特,在TBM中需要運行BCH糾錯碼=7次才能重新獲取初始種子。
使用RSAREF庫[11](其MD5散列函數(shù)用SM3替代)來實現(xiàn)KG。安全啟動的對稱密鑰的生成與TPM 2.0[12]中的對稱初始密鑰的生成相似。PRoT中的Seal/Unseal服務通過修改的RSAREF庫、KDF、SHA3和面向字節(jié)的AES來實現(xiàn)。在安全管控核中通過整合軟件模擬器來實現(xiàn)的TPM服務,具體細節(jié)可參考文獻[13]。
TBM及PRoT各模塊的編譯結(jié)果如表1所示。從中可以看出,TBM和Seal/Unseal服務的TCB都非常小,TBM的總體大小只有2 579條代碼,Seal/Unseal服務只用了1 873條,編譯后的二進制代碼量只增加了65.3 KB的ROM和381.5 KB的Flash。TPM服務的TCB較大是因為它提供豐富的可信計算功能。
3.2 Seal/Unseal服務
Seal/Unseal服務和TPM服務中的部分TPM命令的性能評估(100次運行的平均消耗時間)如表2所示。結(jié)果顯示,Seal/Unseal服務100次運行的平均消耗時間為10 ms,能夠快速地綁定敏感數(shù)據(jù)到安全服務中。部分TPM命令的消耗時間較長,仍屬于正常工作的可接受范圍。
3.3 攻擊抗性評估
下面主要以初始種子和唯一設備密鑰為攻擊對象進行安全性分析,評估本文設計的攻擊抗性。
在能夠控制SoC所有外部接口的情況下,敵手可能通過竊取PUF響應值、軟件攻擊、附加惡意外圍設備等攻擊手段危害初始種子,但仍無法被突破本文設計對初始種子的安全防護。
由于BootROM是通過敵手無法監(jiān)控的SoC內(nèi)部總線將響應值傳輸給TBM,因此敵手無法竊取PUF響應值,也就無法生成初始種子。而且初始種子只在TBM運行時存在,此時TBM是運行在設備上的唯一代碼。信任鏈保證了只有合法的TBM才能在OCM中運行,所以對手無法通過軟件攻擊來危害初始種子。OCM在器件引腳上沒有地址線或數(shù)據(jù)線,惡意外設無法從設備引腳讀取片上存儲的內(nèi)容。OCM是SoC的安全存儲,因此利用接口封裝等技術手段可以防止惡意外圍設備訪問OCM。
系統(tǒng)運行時,設備密鑰會短暫地存儲在安全OS中,但OS運行在片外主存儲器中,可能會受到惡意應用程序的攻擊。雙核安全架構(gòu)可以實現(xiàn)安全環(huán)境與正常環(huán)境的隔離,一般物理攻擊無法突破隔離技術的防御能力。如果設備密鑰受到物理攻擊的危害,可以通過執(zhí)行密鑰更新協(xié)議來部署新設備密鑰。
4 結(jié)束語
本文利用PUF能夠?qū)⒚荑€隱含地嵌入設備而不需要物理存儲的特性,構(gòu)建了雙核隔離SoC架構(gòu)的可信根PRoT,并以PRoT為信任錨點設計了信任鏈和密鑰更新協(xié)議。實驗結(jié)果表明,PRoT能夠以較小TCB運行于Zynq-7000 AP SoC中,通過對PRoT中部分TPM命令和Seal/Unseal服務的性能評估,以及對初始種子和唯一設備密鑰的安全性分析,證明了PUF能夠為嵌入式系統(tǒng)提供安全靈活的可信根。
參考文獻
[1] 孫春子.基于雙核的系統(tǒng)安全框架的研究與實現(xiàn)[D].南京:南京理工大學,2008.
[2] 利文浩.面向多域計算環(huán)境安全的系統(tǒng)軟件研究[D].上海:上海交通大學,2015.
[3] ALVES T.TrustZone:integrated hardware and software security[J].White Paper,2004.
[4] ARM.Securing the system with TrustZone ready program[EB/OL].[2013-12-19].http://www.arm.com/products/security-on-arm/trustzone-ready/index.php.
[5] ARENO M,PLUSQUELLIC J.Securing trusted execution environments with PUF generated secret keys[C].IEEE International Conference on Trust,Security and Privacy in Computing and Communications.IEEE Computer Society,2012:1188-1193.
[6] FENG W,F(xiàn)ENG D,WEI G,et al.TEEM:a user-oriented trusted mobile device for multi-platform security applications[M].Trust and Trustworthy Computing.Springer Berlin Heidelberg,2013:133-141.
[7] KANG H,HORI Y,KATASHITA T,et al.Cryptographie key generation from PUF data using efficient fuzzy extractors[C].International Conference on Advanced Communication Technology.IEEE,2014:23-26.
[8] 譚良,徐志偉.基于可信計算平臺的信任鏈傳遞研究進展[J].計算機科學,2008,35(10):15-18.
[9] KUMAR A,MISHRA R S,KASHWAN K R.Challenge-response generation using RO-PUF with reduced hardware[C].International Conference on Advances in Computing,Communications and Informatics.IEEE,2016.
[10] MORELOS Z R.Encoder/decoder for binary BCH codes in C(Version 3.1)[EB/OL].[2017-12-19].http://www.rajivchakravorty.com/source-code/uncertainty/multimedia-sim/html/bch_8c-source.html.
[11] RSA Data Security Inc.RSAREF[EB/OL].[2017-12-19].http://www.homeport.org/adam/crypto/rsaref.phtml.
[12] TCG.Trusted platform module library part 1: architecture,F(xiàn)amily 2.0,Level 00 Revision 01.07[Z].2014.
[13] 吳少剛,許華.可信嵌入式龍芯啟動加載程序tPMON的設計[J].計算機工程與設計,2008,29(1):5-8.
作者信息:
吳 縉,徐金甫
(解放軍信息工程大學,河南 鄭州450001)