石 偉,劉 威,龔 銳,王 蕾,張劍鋒
(國防科技大學計算機學院,湖南 長沙 410073)
隨著信息技術的快速發展,網絡與信息化在生活中的應用日益普及,電子商務、電子銀行和電子政務等新興技術也正逐漸走進人們的生活。上述技術的普及一方面提升了工作、生活的便利性,另一方面也帶來了潛在的風險,如信息泄露。因此,在信息技術快速發展的同時,信息安全受到越來越多的重視。信息安全是指對信息系統進行防護,保護計算機硬件、軟件和數據不因偶然的或者惡意的原因而遭到破壞、更改和泄露。
信息系統的安全是一個系統性的問題,需要從系統架構和軟硬件多角度進行定義。處理器等底層硬件是整個系統安全的基石,通常從安全與可信2個方面進行防護??尚攀前踩幕A,可信主要通過度量和驗證的技術手段確保整個系統的行為是沒有被修改的,是可控的。安全則是更高范疇的概念,涉及加解密、防篡改、數據保護、身份認證和物理攻擊防護等,需要在底層硬件上進行多種安全技術設計。
早期可信計算的研究主要以國際可信賴計算組織TCG(Trusted Computing Group)為主,該組織定義的TPM(Trusted Platform Module)規范[1]在可信計算領域得到廣泛的應用,基于TPM標準研制的TPM芯片已在服務器、桌面和嵌入式等領域得到全面推廣。國內開展可信計算研究的基本思想與TCG一致,國內對應的是TCM(Trusted Cryptography Module)芯片,遵循國家標準“可信計算密碼支撐平臺功能與接口規范”[2]。隨著可信計算的發展,可信的概念不再局限于TPM或TCM芯片,可信執行環境TEE(Trusted Execution Environment)成為一個熱門研究方向[3]。ARM的TrustZone 技術[4]、Intel的SGX(Software Guard eXtensions)[5]和AMD的安全處理器架構[6]是目前比較成功的可信執行環境技術。
隨著攻擊手段的豐富與攻擊技術的提升,信息系統面臨的各種安全風險和安全威脅更加嚴重,其脆弱性也更加明顯。可信能夠為應用提供相對安全的執行環境,保護敏感信息,但是不能完全解決信息系統的安全威脅問題。安全是從底層邏輯電路、物理實現、固件和應用安全等多個層次、多個角度提升系統的安全性。安全芯片通常采用多種安全防護技術,如密碼加速引擎、密鑰管理、安全啟動、可信執行環境、安全存儲、固件管理、量產注入、生命周期管理、抗物理攻擊和硬件漏洞免疫等[7]。
傳統安全處理器設計通常采用可信與安全相結合的思路,實現安全啟動、安全隔離和安全防護技術。安全計算機系統通常采用處理器加板載TCM/TPM芯片結合的方式來實現。這種方式實現的安全系統存在一定的不足。處理器與作為安全原點的TCM/TPM芯片處于松耦合狀態,性能與安全性均存在一定的問題。隨著技術的不斷發展,越來越多的處理器設計廠商直接在處理器內部實現TCM/TPM的功能。比如海思麒麟970處理器集成inSE(integrated Secure Element)安全子系統,ARM 提供了CryptoIsland安全IP(Intellectual Property)。
本文研究處理器內安全子系統的安全增強技術,首先研究安全子系統體系架構及其與功能處理器的關系;然后針對安全子系統,從多角度展開研究,提升子系統的安全性;最后設計實現一款安全子系統,并對性能、面積和安全性進行評測。
圖1所示為一種采用安全子系統進行安全增強的微處理器結構示意圖。該處理器包含一個功能處理器系統與一個安全子系統。功能處理器系統實現傳統處理器的功能,包括處理器核、互連網絡、存儲器控制器接口、PCIe與串口等高速及低速外設等。安全子系統則提供一個更高級別的安全執行環境,作為整個處理器的安全原點。
功能處理器中可以實現可信執行環境與密碼模塊,為應用程序提供相對獨立的安全執行環境。以ARM處理器為例,功能處理器中實現了TrustZone。處理器核具有安全執行態與非安全執行態;互連網絡需要同時支持安全事務及非安全事務的傳輸;存儲管理模塊將內存空間分割成多個不同的空間,并進行訪問權限控制。

Figure 1 Architecture of secure processor with security subsystem圖1 采用安全子系統的安全處理器體系結構
安全子系統從結構組成看,包括嵌入式微控制器核、互連網絡、存儲單元、密碼模塊、真隨機數模塊、一次可編程OPT(One Time Programming)模塊和QSPI(Quad Serial Peripheral Interface)等。由于嵌入式微控制器核對性能要求不高,互連網絡通??梢圆捎肁HB(Advanced High performance Bus)等低速網絡實現。密碼模塊不僅完成啟動程序驗簽工作,還為應用程序提供密碼運算加速,其性能要求相對較高。
功能處理器系統與安全子系統之間通過特殊的命令通道進行交互。功能處理器系統請求安全子系統為其提供安全服務,同時保證安全系統中的密鑰等敏感信息的安全性。
一個安全處理器系統必須提供安全啟動、密鑰管理和生命周期管理等功能,這些功能都需要在安全子系統中實現。安全子系統中存儲了密鑰及敏感數據等信息,因此安全子系統需要具備抗物理攻擊能力,防止敏感信息被竊取。本節對安全子系統各組成部件進行介紹,并闡述其相應的安全增強技術。

Figure 2 Architecture of RISC processor core with security enhancement technologies圖2 采用安全增強技術的RISC處理器核結構示意
鑒于面積、性能要求,安全子系統處理器核通常采用相對簡單的32位RISC指令集系統,比如ARM-M、RISC-V和MIPS等。圖2所示為采用安全增強技術的一種RISC處理器核結構示意。圖2中給出了3種安全增強技術,分別為隨機產生時鐘停頓、隨機清空指令緩存和隨機數據極性。
上述3種方法的基本思想是在保證功能相同的前提下,隨機改變程序的執行行為,進而提升抗物理攻擊的能力。即使針對相同的程序與相同的數據,每一次執行的行為都是不同的,其功耗等信息也不相同。隨機產生時鐘停頓與隨機清空指令緩存能夠在程序中隨機插入隨機延遲。隨機數據極性則是為流水線中的數據都生成一個極性標簽,極性標簽隨數據一起傳輸。極性標簽與傳輸數據進行簡單運算后能夠恢復出原始數據,在保證正確性的同時獲得隨機的運算功耗,提升抗功耗攻擊能力。
為抵抗物理攻擊,互連網絡同樣采用插入隨機延時與隨機極性的方法,其基本思想與處理器核的安全增強思想相似。圖3所示為采用安全增強技術的互連網絡結構,具體實現與網絡的具體協議相關。
以AHB協議為例,可以采用下面幾種方法增加數據傳輸的隨機性:
(2)增加一個專門進行無效訪問的主設備,隨機發送訪問請求;
(3)對于從設備,隨機增加讀寫操作的響應時間。
為支持極性傳輸,網絡報文需要擴寬1位,專門用于傳輸報文的極性,如圖3中虛線所示。對于主設備與從設備,如果本身支持極性的傳輸,則互連網絡的極性信號與設備的極性信號直接連接;如果設備不支持極性傳輸,則需要進行極性生成與極性恢復。數據進入互連網絡的時候,根據隨機數隨機生成極性,并根據生成的極性修改傳輸數據;數據從互連網絡進入外設時,根據極性與傳輸數據恢復成有效數據。隨機延遲與隨機極性可以采用線性移位反饋寄存器LFSR(Linear Feedback Shift Register)生成的偽隨機數來計算。

Figure 3 Security enhancement technologies of interconnection network圖3 互連網絡安全增強示意
安全子系統中的存儲模塊分為ROM、RAM、OTP、eFlash和外部存儲器等。ROM存儲最初的啟動程序,完成外部程序的第1級驗簽。OTP存儲密鑰等一次可編程信息,eFlash則存儲多次可編程的用戶敏感信息。片外存儲器存儲系統啟動程序等,由ROM程序驗簽后使用。
圖4給出了OTP結構示意。存儲體中存儲了密鑰、生命周期和芯片ID等信息。在處理器加電復位以后,硬件自動讀取存儲體中的信息,放入寄存器中使用。生命周期控制存儲體的燒錄權限及系統的調測試接口權限。在不同的生命周期狀態下,用戶只能對存儲體中部分空間進行讀寫。密鑰寄存器不能由程序直接讀取,但是可以被密碼模塊及密鑰派生模塊使用。OTP中還可以存儲程序版本號,用于防護回滾攻擊。

Figure 4 Architecture of OTP圖4 OTP結構示意
密鑰是安全芯片的重要敏感信息,涉及到安全芯片的使用流程及其它敏感信息的安全。密鑰大體可以分為3類:芯片廠商密鑰、設備廠商密鑰和用戶密鑰。不同的密鑰有各自的生成、存儲、訪問和使用等權限,且需要與芯片的生命周期相結合。芯片廠商密鑰由芯片廠商注入并由底層啟動程序使用,設備廠商密鑰由整機廠商注入并使用,用戶密鑰由用戶注入并使用。芯片廠商密鑰和設備廠商密鑰存儲在片內專用的非易失存儲區域內,且不得出片;用戶密鑰由用戶程序決定存儲位置。不同種類的密鑰在不同的生命周期狀態下,具有不同的訪問權限,只有該密鑰的授權方才能在對應的生命周期狀態下對該密鑰進行讀寫訪問。
密碼技術是保護信息安全的根基,已經成為信息系統必不可少的重要組成部分?,F行的密碼算法主要包括對稱密碼算法、非對稱密碼算法和雜湊算法等,提供鑒別、完整性和抗抵賴等服務。隨機數在密碼學中應用非常廣泛,在密碼體制中,對稱加密算法中的密鑰、非對稱加密算法中的素數及其密鑰的產生都需要隨機數。密碼算法可以通過軟件與硬件2種方式實現。圖5為基于硬件的密碼模塊實現示意圖。

Figure 5 Implementation of cipher module based on hardware圖5 基于硬件的密碼模塊實現示意
生命周期管理是指芯片從生產到交付整機廠商,進而由整機廠商將其作為整機的一部分交付最終客戶的全生命周期過程的管理。在不同的生命周期狀態下,需要控制芯片中的密鑰及調測試接口的訪問使用權限,以此保證芯片不同階段的所有者,具有相應的安全資源訪問權限。芯片的生命周期轉換是單向的,不能反向轉換,且只能逐級進入。圖6所示為一種生命周期管理示意。

Figure 6 Life-cycle management of security processor圖6 生命周期管理示意
芯片剛生產出來時,處于芯片廠商狀態。此時,所有的調測試端口都是使能的,芯片廠商能夠訪問芯片內的所有敏感信息。當芯片交給設備廠商后,芯片是設備廠商狀態。設備廠商狀態需要保留一定的調測試能力,但是全芯片內部的掃描功能需要關閉。當芯片到達用戶手中后,芯片進入用戶狀態。用戶可以使用芯片的各種安全功能,但是不能使用調測試功能,以保護各種密鑰的安全性。同時,啟動的時候必須采用安全啟動。在設備廠商返廠狀態,芯片的部分調測試功能都被打開。在芯片返廠狀態,所有的debug及測試功能都將打開。
2018年3月31日調查發現,小麥播后7 d 47% 異隆·丙·氯吡可濕性粉劑 3 000 g/hm2處理,小麥的株高、莖蘗數均顯著高于空白對照,而與人工除草相比無顯著差異(表5);在小麥3葉1心時,47%異隆·丙·氯吡可濕性粉劑與3%甲基二磺隆油懸浮劑或15%炔草酯可濕性粉劑混用,小麥的株高、莖蘗數均顯著高于空白對照,與人工除草相比無顯著差異(表5)。
現在幾乎所有的安全芯片都要支持安全啟動,安全啟動是其它安全機制的基礎,如果系統軟件在系統啟動之前就已經被篡改,且系統軟件擁有很高的權限,那么運行在該系統上的敏感數據將不再安全,相關的安全防護措施形同虛設,起不到安全防護作用。
安全啟動原理是把可信根存放在片內ROM,從片內的可信根開始逐級認證驗簽,保證啟動中的每一個階段的內容是安全的,即采取可信鏈的形式,一級驗簽一級,一級信任一級,將信任逐漸傳遞,最終形成一個可信鏈。
圖7所示為處理器安全啟動流程示意。首先安全子系統的ROM程序驗簽外部的基礎固件;然后基礎固件再驗簽第三方固件?;A固件的執行、第三方固件驗簽與執行在功能處理器中完成。第三方固件按照逐級驗簽的模式,依次加載、驗簽和執行后續模塊,進而引導操作系統。

Figure 7 Flow chart of secure boot 圖7 安全啟動流程
物理攻擊是指攻擊者針對芯片實體所做的破壞或者非破壞性攻擊,包括錯誤注入攻擊、側信道攻擊與侵入式攻擊等。錯誤注入攻擊是指通過抖動電源與抖動時鐘等手段,使電路產生錯誤操作,影響個別指令或某個電路的執行。側信道攻擊是指通過測量分析芯片的功耗、電磁等信息,獲取芯片內部的敏感信息。侵入式攻擊是指通過打開芯片的封裝,使用探針檢測并修改電路或獲取內部存儲器信息進行攻擊。
處理器核與互連網絡的增強技術能夠影響程序執行的行為,提升抗物理攻擊的能力。通過加密存儲、頂層金屬覆蓋防護技術,提升侵入式攻擊的難度。最后,在安全子系統中實現傳感器模塊,檢測電壓及時鐘異常,如果發現異常則立即對系統進行復位。
本文設計實現了一個安全子系統,該安全子系統集成了處理器核、互連網絡、ROM、SRAM、DMA控制器、指令Cache、OTP、密碼模塊、傳感器模塊、UART和SPI等外設接口,能夠很好地實現安全啟動、抗物理攻擊、密鑰管理和生命周期管理等安全功能。其中密碼模塊需要為功能處理器提供密碼服務,因此對性能要求較高,包括商用密碼算法和真隨機數生成器。
安全子系統的整體工作頻率為100 MHz,而密碼模塊的頻率為600 MHz。安全子系統的整體面積為0.513 mm2,其中密碼模塊的面積為0.185 mm2。
對安全子系統及密碼模塊的性能進行測試的結果,如表1所示。

Table 1 Performance test results on security subsystem 表1 安全子系統性能測試結果
安全子系統Dhrystone的測試性能為1.56 DMIPS/MHz,Coremark測試性能為2.375 iterations/s/MHz,能夠滿足系統需要。本文對隨機產生時鐘停頓、隨機清空指令緩存和隨機數據極性進行了測試,其中隨機產生時鐘停頓與隨機清空指令緩存概率越高,性能越低,與停頓及清空概率成反比關系。隨機數據極性基本不影響程序性能,但是能夠獲得更隨機的功耗。
最后,對安全子系統的安全特性進行了測試,測試內容包括安全啟動、密鑰測試、DFT(Design for Test)測試、Debug測試、生命周期測試、頂層金屬覆蓋防護測試、傳感器測試、密碼模塊測試和真隨機數測試等。安全啟動、密鑰測試、DFT測試和Debug測試需要與生命周期測試組合進行,因為在不同生命周期狀態下,啟動流程、調測試權限和密鑰使用權限有所不同。對安全啟動測試需要進行正向測試與反向測試,正向測試是指在條件滿足的情況下測試啟動流程是否正常進行,而反向測試是指在各種不滿足條件的情況下測試啟動流程是否按期望進行報錯。調測試同樣需要正向測試與反向測試。真隨機數測試在后仿環境下進行,并對產生的隨機數的隨機性進行驗證。頂層金屬覆蓋防護測試與傳感器測試需要在仿真過程中注入錯誤,檢測電路是否報錯。在芯片流片以后,請第三方測試機構在實際芯片上進行了多種安全測試,部分測試結果如表2所示,驗證了本文設計的有效性。
本文針對計算機系統的安全原點向處理器中轉移的需求,對微處理器內安全子系統的體系結構進行研究,提出了一套系統安全解決方案,從系統結構和微架構不同層次對處理器安全進行增強,并且對安全子系統進行了設計、 實現與評估。采用了本文提出的安全增強技術的桌面處理器目前在安全領域得到了很好的應用,證明了本文所述安全技術的有效性。

Table 2 Functional test results on security subsystem表2 安全子系統功能測試結果