文獻標識碼: A
DOI:10.16157/j.issn.0258-7998.171962
中文引用格式: 劉志強,徐金甫,戴強,等. 基于AXI總線的安全防火墻研究與設計[J].電子技術應用,2017,43(11):27-30.
英文引用格式: Liu Zhiqiang,Xu Jinfu,Dai Qiang,et al. Research and design of security firewall based on AXI bus[J].Application of Electronic Technique,2017,43(11):27-30.
0 引言
隨著SoC(System-on-Chip)的發展與廣泛應用,SoC面臨的安全威脅與攻擊手段[1-2]也更為復雜,嵌入式系統安全已成為不容忽視的重要問題。由于傳統的嵌入式軟件防護能力較弱,具有較大的延遲,易對系統造成性能損失,因此單純依靠軟件層面的安全機制已很難有效應對層出不窮的攻擊手段。
目前,已有眾多學者在不修改處理器結構的基礎上,提出了基于總線的硬件安全增強機制。Fiorin提出一種基于NoC(Network-on-Chip)總線的安全探針和安全管理單元的保護機制[3],通過安全探針監控總線數據進出信息,安全管理單元收集探針信息來檢測沖突與錯誤。Coburn J基于AHB總線提出了SECA的安全總線結構[4],在各個IP模塊總線接口配置了安全增強接口(Security-Enhanced Interface,SEI),同時設計了安全增強模塊(Security-Enhanced Module,SEM)作為中央管控模塊協調各SEI模塊工作。Cotret P、Crenne J等人在Coburn研究的基礎上,引入基于總線的分布式防護結構[5],在各IP總線接口設置局部防火墻,實現地址的訪問控制,并在片外存儲器接口設計了局部密碼防火墻,保護重要數據的機密性和完整性。但是該方案只是對地址進行監控,在多任務處理下,單獨的地址訪問操作可能屬于不同的任務行為,因此不能實現任務的隔離。
本文借鑒了網絡防火墻的安全隔離思想與Cotret P的分布式架構,提出了基于AXI總線的分布式安全總線防火墻架構,制定了多級可動態更新的安全策略,設計了具有較低延時的高速總線防火墻接口,實現了面向多任務處理的任務隔離機制。
1 總線防火墻架構設計
1.1 防火墻總體架構
總線防火墻部署于SoC通信鏈路上,介于總線與IP之間,是嵌入式系統的硬件底層安全防線。為減輕總線防火墻負載,并利用AXI總線的點對點突發傳輸特性,本文采用分布式的總線防火墻架構,即在每個IP接口與總線之間增加防火墻模塊,如圖1所示。
安全總線防火墻的架構由軟件層和SoC硬件架構組成。軟件層運行多任務處理的嵌入式操作系統,包括安全任務與非安全任務,各個任務之間有不同的資源訪問權限。
硬件層由CPU、DMA、Memory、各個IP模塊組成,模塊之間通過AXI總線互連。安全防火墻位于總線與IP模塊之間,由防火墻接口與片上 BRAM(Block RAM)組成。防火墻接口根據BRAM的安全策略實施訪問控制,其基本特征就是阻止非法地址訪問,目的是實現安全任務與非安全任務的隔離。防火墻的安全性由安全策略保證,安全策略只可由安全更新模塊配置與更新。
1.2 防火墻安全策略設計
安全策略存儲在片上BRAM,一條策略占用一個字空間,由一個地址標識。每條策略為每個給定的物理地址空間(帶下邊界與上邊界)設定訪問權限。
安全策略根據任務分組,同一任務的策略稱之為一個策略組,由任務ID尋址標識。安全策略組在上電時由安全更新模塊配置,運行過程中只可由安全更新模塊更新,是一個可信區域。
面對復雜的SoC系統,安全策略數量眾多,策略存儲會占用大量的存儲空間。為減少策略存儲空間,本文提出策略組間白名單、組內黑名單的混合存儲策略。策略組存儲采取白名單策略,只有在白名單之列的任務可以訪問該模塊,否則直接拒絕訪問,具有更高的安全性。安全策略組內采用黑名單存儲策略,不在黑名單中的訪問行為默認可讀可寫,直接允許。
為了增加安全策略的安全性與靈活性,本文設計了多級可動態更新的安全策略。安全策略設定3個安全等級:正常級別、警告級別、錯誤級別。正常級別為系統初始化后的各模塊的安全級別,表示系統任務處于正常狀態。警告級別表示系統出現了非法訪問行為,并禁止該危險任務對該模塊的所有訪問權限。錯誤級別表示出現了較為嚴重的安全威脅,系統所有任務的訪問都將禁止,只有關機重啟有效。安全級別的更新是發生訪問違規后作出的反應行為。當非關鍵任務出現訪問違規時,則將其安全級別由正常級別提升為警告級別;當關鍵任務出現訪問違規時,則將正常級別直接跳躍提升為錯誤級別,強制終止系統運行。
安全策略的參數包括策略組參數與策略參數,如圖2所示。策略組參數由任務ID、策略數量組成;策略參數由讀寫權限、安全級別、策略域值組成。讀寫權限采用黑名單存儲策略,包括禁讀、禁寫、禁讀寫。策略域值表示策略監控的地址空間,包括基地址偏移量和長度。
1.3 防火墻接口設計
AXI總線采用突發傳輸,因此防火墻只需在握手過程中分析其首地址、握手信號、突發傳輸SIZE等總線信號來實現訪問控制。根據安全策略規則,其設計原理如圖3所示。
行為分析模塊是判斷當前訪問的讀或寫行為。時鐘同步模塊,用于延遲握手信號,滿足AXI總線的傳輸時序。讀模塊讀取安全策略內容,需要消耗一個時鐘周期。校驗模塊則根據讀取到的安全策略與訪問的地址進行比對。校驗成功,決策模塊則允許訪問行為,否則終止行為并將數據端置0。
快速查找單元則是一個類似于TCAM(Ternary Content Addressable Memory)容器的列表,自身存儲每個任務安全策略監控的地址空間和長度,如圖4所示,在防火墻監控狀態下,根據TaskID選擇安全策略組,通過訪問地址addr、突發SIZE長度,可快速定位到其安全策略的地址。根據黑白名單存儲策略規則,若noID=1,直接拒絕;若noSP=1則直接允許。
防火墻有3種工作狀態,包括空閑狀態、監控狀態、更新狀態,其狀態轉換圖如圖5所示。
1.4 策略安全更新設計
當系統檢測到攻擊時,BRAM中的安全策略必須被更新,并應用于新的安全策略。為保證更新環境的安全,防火墻增加了安全更新模塊。
安全更新模塊如圖6所示,所有部件都通過一個AXI-Lite總線連接(也稱為安全總線)和一個可信的安全SMCU構成安全子系統。flash存儲著固件程序與防火墻安全策略,可實現各個防火墻的策略初始化配置和整個SoC的安全啟動。Monitor模塊監控每個防火墻接口的狀態信號,防火墻的BRAM的另一端連接存儲控制器,動態策略更新。系統上電時,SMCU從flash讀取安全策略,并將安全策略寫入到各個IP模塊的BRAM中。
防火墻監控模塊監控每個IP防火墻接口的狀態機狀態,包括noID信號、check_out等信號。當check_out為0或者noID為1,則表示有攻擊事件發生,并將監控結果保存在相應任務的IP監控寄存器當中。防火墻監控模塊一旦檢測到攻擊,產生中斷通知SMCU,SMCU執行中斷服務程序,啟動策略更新。
策略更新過程必須保證兩個安全策略之間切換時數據可用性。因此在切換過程中,首先使能update_en后決策模塊阻塞當前地址訪問,待策略更新完畢后關閉阻塞,將update_down置1表示更新完成。阻塞機制通過延時ready信號實現。更新1條安全策略消耗1個時鐘周期,更新n條策略則至少需要n個時鐘周期,這些時間損耗雖會降低性能,但從安全角度考慮,非法的訪問行為得到阻止,安全效益提高。
2 基于總線防火墻的任務隔離機制
任務作為系統運行的一個行為事務實體,結合防火墻的功能,通過在總線上增加任務標識,可實現任務隔離機制。
2.1 面向任務標識的總線傳輸
總線上的主從訪問行為通過主設備DeviceID或系統TaskID、總線地址、總線控制信號等,構成了防火墻的訪問主體和被訪問客體。總線防火墻根據安全策略監視所有總線傳輸,裁決發起傳輸的任務能否訪問目標資源。
為了標明發起總線傳輸的進程,需要對總線傳輸任務進行標識,將ID嵌入傳輸事務中,該ID信號稱為總線邊帶信號。如圖7所示,各主設備維護一個ID 寄存器,寄存器輸出驅動ID邊帶信號,與總線傳輸保持同步。CPU執行任務時發起傳輸前首先將TaskID注入CPU的任務ID 寄存器;其他主設備如DMA、密碼協處理器等執行時則將固定的DeviceID注入設備專用ID寄存器內,在各主設備內部增加PID專用寄存器,TaskID注冊作為進程調度的一部分。
2.2 任務隔離機制實現
實現任務隔離機制需要軟硬件協同配合。
系統內核執行可信進程,在創建、執行各個任務,統一管理和分配TaskID,任何發起引起總線傳輸的任務,首先對調用的總線主設備的TaskID寄存器進行注冊。任務發起的整個總線傳輸期間保持TaskID信號不變,進程切換時TaskID寄存器同步進行更新,時間上TaskID寄存器更新先于被調度進程的執行,即確保被調度執行的新進程在發起總線傳輸之前完成相應TaskID寄存器的更新。
在總線防火墻監控過程中,同一任務的TaskID邊帶信號保持不變,邊帶信號驅動各個從接口的防火墻模塊,根據ID號完成面向任務的策略組尋址,配置快速查找單元的地址和長度參數。該過程可在2個時鐘周期完成,可隱藏于任務切換的過程時間。
任務切換完成后,發起總線傳輸,防火墻接口則可快速讀取該任務下的地址的安全策略,迅速完成地址策略校驗。當系統受到攻擊時,任務訪問了其不允許的空間,則防火墻拒絕訪問行為,實現了任務之間的隔離。在策略更新過程中,安全更新模塊完成安全級別的更新,限制了該危險任務的訪問權限,實現被攻擊任務的隔離。
3 實驗與驗證
3.1 實驗平臺搭建
實驗的硬件平臺為ZYNQ 7c020開發板,集成了ARMA9處理器等硬核部分和FPGA邏輯部分。實驗通過Xilinx公司vivado軟件搭建如圖1所示的SoC硬件電路。SoC以ARMA9為主處理器,分別以RAM、UART作為存儲單元與外設接口。安全區采用MciroBalze軟核處理器作為安全SMCU,采用RAM代替Flash單元。
實驗的軟件平臺為FreeRToS實時操作系統,支持多任務處理。系統共運行3個任務Task1、Task2、Task3,分別完成數據的接收、加密、發送過程,其中Task2為安全任務,任務切換通過定時器中斷實現。FreeRTos的任務切換程序是vTaskSwitchContext(),它作為系統一個可信進程,將任務標識寫入TaskID寄存器。
3.2 實驗結果
防火墻接口占用的FPGA資源如表1所示,由于ARM為硬核,綜合結果暫用Mciroblaze軟核計入資源總量。增加防火墻接口所增加的資源比例較小,寄存器與LUT增加比例分別為9.0%和5.2%。安全更新模塊增加的主要單元為軟核處理器與BRAM控制器,占用資源較大。單個防火墻接口的資源占用與P Cotret[5]比較如表2所示,本文的防火墻的寄存器資源占用偏多,但占有更少的LUT資源。
根據防火墻接口的電路設計,快速查找單元需要2個時鐘周期,決策模塊與同步模塊各需要一個時鐘周期,共需要4個時鐘周期。當傳輸突發長度較大時,性能損耗比例較小,如表3所示。
在安全策略配置完成后,在debug調試下,模擬攻擊者,將task3任務訪問的明文地址修改為task2的密鑰地址區,結果顯示讀取到的數據為0。當再次執行該任務,程序進入異常,這表明任務隔離有效。
4 結論
本文提出了基于AXI總線的分布式安全總線防火墻架構,制定了面向任務的多級安全策略,可通過安全更新模塊實現策略動態更新,提出了黑白名單混合的策略存儲規則,設計了具有較低延時的高速總線防火墻接口。在防火墻功能基礎上,增加了面向任務標識的總線傳輸功能,實現了任務隔離機制。由于安全更新子系統功能較為單一,下一步將充分利用其安全的隔離環境增加安全服務相關功能,并進一步優化防火墻安全策略。
參考文獻
[1] 鄭顯義,李文,孟丹.TrustZone技術的分析與研究[J].計算機學報,2016(9):1912-1928.
[2] ELMILIGI H,GEBALI F,EL-KHARASHI M W.Multi-dimensional analysis of embedded systems security[J].Microprocessors & Microsystems,2016,41(C):29-36.
[3] FIORIN L,LUKOVIC S,PALERMO G.Implementation of a reconfigurable data protection module for NoC-based MPSoCs[C].IEEE International Symposium on Parallel and Distributed Processing.IEEE,2008:1-8.
[4] Joel Coburn,Srivaths Ravi,Anand Raghunathan,et al.SECA:security-enhanced communication architecture[C].Proceedings of the 2005 International Conference on Compilers,Architectures and Synthesis for Embedded Systems.New York:ACM,2005:78-89.
[5] COTRET P,CRENNE J,GOGNIAT G,et al.Light weight reconfiguration security services for axi-based MPSoCs[C].International Parallel & Distributed Processing Symposium,Shanghai:IEEE,2012:326-329.
作者信息:
劉志強,徐金甫,戴 強,李軍偉
(解放軍信息工程大學,河南 鄭州450001)