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