引言
為了滿足智能卡和可信計算應用需求,設計實現了一款專用SoC芯片。該芯片由微處理器、程序和數據存儲器及管理模塊、安全邏輯模塊、密碼服務模塊、輔助功能模塊、I/0接口組成,能為各種安全應用提供機密性、完整性和身份認證等多種密碼服務,以及數據存儲、訪問控制、安全計算等應用。
專用SoC芯片的安全控制架構設計,首先應對芯片的應用環境進行分析,得到芯片的威脅模型與部署模型,即芯片的潛在攻擊者和可能的攻擊方式,以及芯片的生產、運輸、研發和使用等環節存在的風險問題;其次是根據芯片安全要求與功能規范,通過軟硬件協同設計方式,設置相關硬件邏輯、狀態寄存器和參數存儲區,并實現相關安全策略的軟件控制流程;最后對所設計的系統進行安全性分析、仿真驗證與FPGA測試。
1 芯片系統安全體系結構設計
基于芯片系統的生產與應用實際,根據受保護資產對芯片安全性影響重要程度和信息技術安全性*估準則,芯片的受保護資產可設計為如下3種安全級別。
0級資產:O層代碼的完整性與可信性,0層數據(LEVEL0)的機密性、完整性和可信性,以及芯片各模塊功能正確性。0級資產是芯片系統的安全基礎,對任一項的保護失敗均將導致整個芯片系統拒絕提供任何服務。
1級資產:1層代碼的完整性與可信性,1層數據(LEVEL1)的機密性、完整性和可信性。1級資產是系統運行的核心控制態和2級資產的安全基礎,對1級資產的保護失敗將禁止本層代碼及2層代碼的執行。
2級資產:2層代碼完整性與可信性,2層數據(LEVEL2)的機密性、完整性和可信性。2級資產是芯片系統最上層的受保護資產,對本級資產的保護失敗會導致本層代碼被禁止運行。2級資產在芯片系統中可以同時存在多個,但每一時刻只有1個投入運行。
1.1 芯片系統安全狀態設計
芯片加電運行后,通過執行一系列的命令,獲得不同的安全權限,從而也處于某一特定的安全狀態。
ST1:出廠初始狀態。在信任制造商前提下,芯片在出廠初始狀態是可以信賴的。初始狀態是芯片的可信基。
ST2:芯片使能狀態。首次加電時,上電自檢及傳輸安全認證通過后,芯片所處的狀態。芯片在驗證各功能模塊正確,且。層代碼、數據完整性校驗通過后,接收傳輸過程安全認證命令,并利用開發商與制造商的共享秘密,在允許的認證次數范圍內對芯片進行真實性認證。
ST3:芯片激活狀態。處于使能狀態下的芯片,允許開發商通過用戶創建命令完成用戶創建。在這一過程中,芯片對開發商身份的合法性認證依賴于傳輸安全認證時的共享秘密。用戶創建完成后,置位芯片激活狀態標識與所有權獲得標識。再次啟動時,對開發商的身份合法性認證依賴于輸入的共享秘密,以及開發商創建的用戶密鑰。
ST4:1層代碼下載允許狀態。為滿足芯片使用靈活性的要求,芯片的1層代碼可由開發商進行配置。代碼下載需對下載命令的發起者進行身份認證,在允許認證次數范圍內,若身份認證正確,則置位1層代碼下載允許標識,芯片進入1層代碼(芯片操作系統)下載允許狀態。
ST5:1層代碼下載完成狀態。在下載控制程序的控制下,完成1層代碼下載。下載完成后,下載控制程序調用SHA1模塊,對1層代碼進行完整性度量與存儲,并與輸入的下載代碼完整性信息進行比較。若完整性驗證正確,則置位1層代碼使能標識位。
ST6:1層代碼運行狀態。芯片系統可以由ST3和ST5轉入1層代碼運行狀態。在進入此狀態前,需判斷1層代碼使能標識是否有效,并在驗證1層代碼及數據完整性正確后進入代碼運行狀態,執行相應程序完成預定功能。
ST7:2層代碼(用戶應用程序)下載允許狀態。2層代碼的下載與調用均在1層代碼監控下完成。在1層代碼運行狀態下,若用戶輸入2層代碼下載命令,1層代碼首先認證代碼下載命令發起者身份。在允許的認證次數范圍內,若身份認證正確,則置位本層敏感信息存儲器中的2層代碼下載允許標識位,芯片進入2層代碼下載允許狀態。
ST8:2層代碼下載完成狀態。與1層代碼的下載過程相同,通過調用下載控制程序,完成2層代碼的下載。下載完成后,1層代碼對2層代碼進行完整性度量與存儲,對比驗證輸入的完整性信息。若完整性驗證正確,置位LEVEL1中的2層代碼使能標識位。
ST9:2層代碼運行狀態。當2層代碼和數據完整性驗證正確后,芯片系統可以由ST6和ST8轉入2層代碼運行狀態。當2層代碼使能標識有效時,芯片系統可以在ST6或ST8下,通過層次跳轉指令,進入2層代碼運行狀態。在ST6狀態下,芯片系統還可通過調用2層代碼來完成其相應運算與控制功能。與層次跳轉進入ST9不同的是,通過調用2層代碼來完成其相應功能時,在2層代碼執行完畢后,芯片系統可以返回到ST6。而通過層次跳轉命令進入 ST9時,完成規定的功能后,芯片系統保持在ST9,或者通過系統復位返回ST3,不允許其返回ST6。
1.2 狀態位與控制參數設置
為實現上述各狀態之間的正常跳轉,芯片系統需要設置相應的狀態位與控制參數,以寄存芯片運行時的控制信息和工作狀態。狀態位與控制參數設置是芯片安全體系結構建立的基礎,基于芯片的權限狀態劃分,參照TPM與ATMELSC系列安全芯片對狀態位與控制參數的配置,將LEVEL0作為專用SoC芯片狀態位與控制參數的存儲區,其具體設置如表1所列。
表1 LEVEL0狀態位與控制參數配置表
在表1中,OTP(One Time Programmer)區是一次性編程區,用于芯片一次性設置的權限標識與狀態留證。STATE為系統狀態標識,用于標識芯片當前的權限狀態信息。OTP 與STATE中各位的作用與位的對應關系如表2所示,其中各位均為高電平有效。
表2 OTP與STATE中狀態位功能表
M_AUTH為制造商與開發商的共享秘密,M_PUBKEY為制造商公鑰,SN為產品序列號,它們共同用于芯片的傳輸過程安全認證。 EK(Endors- ement Key)為芯片系統的身份認證密鑰對,在實際應用過程中,芯片通過調用EK私鑰對數據進行簽名,以表明自身的合法身份。AIK(Attes-tation Identity Key)為開發商身份認證密鑰對,在用戶身份創建過程中由片內隨機數與RSA算法IP核生成,用于用戶的身份認證。PCR(Pla-tform. Configuration Register)是平臺配置完整性寄存區。為滿足專用SoC芯片在進行FPGA測試時對芯片系統的硬件規模限制,暫時為芯片系統配置了8個PCR,每個 PCR寄存器為20個字節。除PCR6和PCR7外,其余各PCR寄存器存儲信息的表達式如下所示。
PCR0 = SHA1(DOWNLOAD)
PCR1 = SHA1(LEVEL0)
PCR2 = SHA1(COS)
PCR3 = SHA1(APPLI)
PCR4 = SHA1(LEVEL1)
PCR5 = SHA1(LEVEL2)
DIR(Data Integrity Register)是芯片系統的數據完整性寄存器,寄存芯片內部數據與代碼的完整性信息,具體設計時,為芯片系統配置了3個DIR,分別存儲三個層次的數據與代碼的完整性,各DIR寄存器存儲信息的表達式如下。
DIR0 = SHA1(PCR0||PCR1)
DIR1 = SHA1(DIR1||PCR2||PCR4)
DIR2 = SHA1(DIR1||DIR2||PCR3||PCR5)
USER_AUTH為用戶與芯片系統的共享認證秘密,在用戶創建時通過相應命令輸入,完成用戶的身份合法性驗證。ERROR_SIG為認證錯誤次數寄存器,用于芯片系統對字典攻擊的防護。ATTACK_EVI是攻擊留證寄存器,對芯片系統所遭受的物理攻擊次數與方式進行寄存。
2 芯片工作流程分析
專用SoC芯片在其整個生命周期中,總處于某種特定的安全狀態。基于芯片運行時的安全策略,結合狀態位與控制參數設置,專用SoC芯片的狀態轉移流程如圖1所示。
圖1 芯片狀態轉移流程圖
在上圖中,S.n表示STATE的第n位,S’.n表示STATE’的第n位(位于LEVEL1中),0.n表示0TP的第n位。高電平表示對應條件成立,低電平表示對應條件不成立。
2.1 狀態轉移約束條件
專用SoC芯片按照其工作流程共有16種不同的狀態轉移路徑,限于篇幅在此只介紹其中的一種狀態轉移路徑。為簡化書寫記A=TDESENC(KEY_TDES,DATA_T),B=RSAENC(PUB EK,DATA R)。
當專用SoC芯片從ST3狀態通過ST6狀態轉移到ST9狀態時,應滿足如下約束條件:
在正常啟動時,芯片系統由ST3經過上電白檢,完成對1層代碼與數據、2層代碼與數據的完整性驗證。置位STATE.6,通過層次跳轉命令,進入ST6,進而在ST6下,通過判斷STATE’.6是否有效,決定可否進入ST9。在ST6下,也可通過功能調用命令進入ST9,執行部分2層代碼的功能,并在執行完成后,正確返回到ST6。
2.2 專用SoC芯片的工作流程
①在開發商初次獲得芯片后,系統處于初始狀態ST1。加電后,系統首先對自身O層代碼和數據區進行完整性檢驗,調用各功能模塊IP核進行自檢,若白檢正確,則芯片可繼續完成傳輸過程安全認證命令的接收與執行,否則置位OTP.4,芯片系統進入鎖死狀態,不提供任何功能服務。
②當OTP.1=0時,芯片系統僅允許傳輸過程安全認證命令的輸入與執行。開發商通過傳輸安全認證命令,在允許的認證次數范圍內,對芯片的真實性進行認證。若認證正確,芯片由初始狀態ST1轉移至使能狀態ST2,并置位芯片使能標識OTP.1,等待用戶創建命令的輸入。若芯片真實性認證錯誤,芯片系統保持在初始狀態。當認證次數超出允許次數時,OTP.6被置位,芯片被鎖死。
③當OTP.1=1時,芯片系統僅允許用戶創建命令的輸入與執行。初次啟動時,開發商通過用戶創建命令,完成AIK與USER_AUTH的創建。用戶創建完成后,置位OTP.O與STATE.2,進入芯片激活狀態ST3。在允許的認證次數范圍內,若用戶創建失敗,芯片保持在ST2。當 STAT-E.1=1 時,開發商可以通過用戶創建命令,更新AIK和USER_AUTH,完成用戶身份的重建。當認證次數超出允許范圍時,0TP.5被置位,芯片被鎖死。
④當OTP.O=1時,開發商可以獲得低層代碼和系統資源所提供的服務功能,如SHA1雜湊值計算、對稱數據加解密、RSA數據簽名與認證、以及隨機數生成等一系列密碼服務功能等。當需要對芯片系統進行1層代碼下載時,用戶輸入代碼下載命令,芯片系統首先驗證下載命令發起者身份,若身份驗證正確,置位 STATE.7,進入ST4。
⑤當STATE.7=1時,芯片在下載控制程序控制下,將1層代碼下載到對應存儲器COS區。系統調用SHA1模塊度量下載代碼的完整性,存儲于 LELVE0存儲器的PCR2中,并與輸入的完整性信息進行對比驗證。若完整性驗證通過,置位STATE.6,并復位STATE.7,進入ST5,否則返回ST3。此外,因突發因素導致下載過程中斷,也會使芯片系統返回ST3。在系統返回ST3時,復位STATE.7。
⑥當STATE.6=1時,通過層次跳轉命令,芯片系統進入ST6,用戶可以獲得1層代碼的相應功能。由ST6返回到ST3只有斷電或者系統復位兩種方式。
⑦在1層代碼運行狀態下,若需要進行2層代碼下載,則用戶輸入符合1層代碼編碼格式的代碼下載命令。1層代碼驗證下載命令發起者身份,驗證通過后,置位STATE’.7,進入ST7。若不需要代碼下載,則在ST6運行。
⑧完成2層代碼下載過程同⑤,對2層代碼進行完整性度量與驗證,若驗證通過,置位STATE’.6,進入ST8,否則返回ST6。
⑨通過層次跳轉命令或功能調用命令,芯片系統可進入ST9,獲得2層代碼相應功能。當采用層次跳轉命令進入ST9時,芯片系統保持在ST9狀態,僅能夠通過系統復位,返回ST3。當采用功能調用命令進入ST9時,只能執行2層代碼中部分功能且執行完畢后,將返回到ST6狀態。
3 專用SoC芯片安全性分析
3.1 攻擊防護分析
在芯片的硬件安全結構設計中,篡改響應機制能夠對既定攻擊模型中的物理攻擊進行安全防護;結合安全邏輯模塊中的越界檢測部件,信息交互機制能夠防止攻擊者對芯片的緩沖區溢出攻擊;此外,信息交互機制還能夠對語義攻擊、字典攻擊以及重放攻擊進行防護;芯片系統的單向分級啟動模式、以及代碼下載時的身份認證,各安全級別之間的“防火墻”設計,使得芯片系統能夠抵抗惡意代碼的攻擊。
3.2 工作過程安全性分析
①代碼的可信性:首先,由于制造商被無條件信任,芯片在出廠初始狀態真實可信,因而內嵌代碼是可信的。在經過傳輸過程被開發商獲得后,芯片的使用需要通過對芯片的傳輸過程進行驗證,在驗證正確后,芯片的來源被確認,此時,內嵌代碼保持了其可信性。以內嵌代碼為可信基,在對1層代碼與2層代碼進行下載時,均需要認證下載命令發起者的身份。因而,下載的1層代碼與2層代碼均能夠保證其來源真實性。
②代碼的完整性:在信賴制造商前提下,內嵌代碼可作為整個芯片系統的可信基。基于這一信任基礎,通過啟動過程中對內嵌代碼、芯片操作系統、用戶應用程序的完整性驗證,使得芯片系統僅在代碼完整性正確情況下,才能夠正常運行,從而保證了代碼的完整性。
③數據可信性:由于LEVEL0的數據僅能夠由制造商與Q層代碼操作,傳輸安全機制保證了芯片的可信性,從而可知LEVEL0的數據是可信的。1層與2層敏感數據與運行臨時數據的可信性由本層的代碼可信性保證。當本層代碼可信時,數據的來源被認為是可信的。
④數據完整性:由完整性認證機制可知,其被認證數據對象在每次合法改變時,均將及時修改相應的數據完整性檢驗信息,且每次啟動時,均需進行完整性認證,因而數據完整性可得到保證。
⑤功能部件的正確性:功能部件的正確性通過芯片系統每次啟動時的功能自檢,以及根據應用需要每次調用功能部件執行相應檢測功能來保證。
結語
提供密碼服務和數據存儲功能的專用SoC芯片設計的關鍵是,在芯片功能正確的前提下,確保芯片內部敏感信息的機密性與完整性,以及運行狀態的可信性。本文為專用SoC的安全設計提供了一個可供參考的模型,也為進一步研究動態數據完整性度量和可信應用服務提供了一個基礎平臺。
評論
查看更多