文獻標識碼: A
文章編號: 0258-7998(2014)07-0017-04
隨著嵌入式系統應用的日益廣泛,其安全性保障也日益迫切,尤其是存儲器中的數據和指令需要嚴格的安全保障。目前,對片外存儲器的安全防護有Execute-Only Memory(XOM)[1]、PE-ICE/TEC-tree[2]、AES-TAC[3]等技術,其原理都是通過加密存儲[4]的方式對數據實施安全防護。
由于特定型號的處理器所使用的初始化代碼有相對固定的格式,經編譯所得的指令序列也相對固定,因此攻擊者探知處理器型號后,就等于獲得了部分指令序列。攻擊者對指令序列的攻擊由唯密文攻擊轉變為已知明文攻擊,芯片的安全性將受到嚴峻的挑戰。
針對上述問題,本文在嵌入式系統存儲器加密技術的基礎上,提出了地址加擾安全防護措施。在CPU訪問的邏輯地址與存儲器物理地址之間增加一層復雜的映射關系,從而隱藏了系統代碼的規律性,極大地增強了嵌入式系統的安全性。
1 嵌入式系統地址總線攻擊分析
芯片和片外存儲器的接口引腳是嵌入式系統中最為薄弱的環節之一,攻擊者可以從這些引腳上采集數據用于分析,從中獲得有效信息。此外,片上總線[5]用于將所有IP鏈接起來,跨度較大,且布局十分規整,容易成為攻擊者施加探針的攻擊點。SoC芯片易受到攻擊威脅的點如圖1所示,標記①為存儲器引腳攻擊點,標記②為片上總線探針攻擊點。
可通過嵌入比特置換模塊混亂地址映射關系,從而加強防護能力。通過對存儲器引腳上傳輸的地址實施加擾,使存儲器內部的邏輯地址和物理地址不一致,讓攻擊者無法從存儲器入手攻擊關鍵信息。通過在地址總線兩端增加置換模塊,使地址總線不直接傳輸地址明文,防止攻擊者通過差分攻擊的手段獲得總線和引腳上兩個地址之間的映射關系,阻止攻擊者構建明密文對應關系。
2 地址加擾安全防護方案
2.1 總線地址加擾需求
存儲器的每個地址都對應一個存儲單元,地址與存儲單元之間必須符合一一映射的關系,加擾后的地址也必須符合這個映射規則。總線的解碼依據地址信息,Flash存儲器的讀寫也依賴于地址信息,因此地址的加擾必須控制在一定空間內,即加擾深度必須和總線配置相一致。數據和地址在總線中的傳輸必須滿足總線的傳輸協議,因此地址的加擾不能帶來額外的時鐘延時,即加擾必須能保證實時性。
因此,對地址數據進行加擾必須滿足以下3點要求:(1)地址加擾后仍滿足一一映射;(2)加擾深度可控;(3)加解擾無延時。
2.2 總線地址加擾方案
總線地址加擾方案如圖2所示。為了對地址加以保護,使地址信號不直接出現在信道中,即使攻擊者攻入信道,也無法獲得所有地址信息,必須在信道兩端增加地址重映射模塊。N1、N2是置換網絡,實現了片上主從設備與信道之間的地址重映射,也即地址的加擾和解擾。其控制模塊是受處理器控制的獨立硬件電路,負責所有置換網絡的參數配置及功能控制。加解擾運算如式(1)所示:
其中E為加擾運算,D為解擾運算,a為加擾前的地址,h為加擾后的地址。加擾和解擾使用相同的硬件模塊,但是配置的參數不同,k1為加擾參數,k2為解擾參數。
置換網絡N1、N2可用Benes[6]二進制可重排非阻塞網絡實現。令N表示重排數據位寬,m表示網絡級數,r表示開關單元數,則有N=2m。用2×2的基本開關單元構成一個N輸入到N輸出的互聯網絡,則能夠實現N!種輸入與輸出之間的置換,記為B(m)(m=logN)。通過遞歸構造Benes網絡,可以通過一級N/2個開關單元,繼以兩個同類型的子網絡B(m-1),最后再附加一級N/2個開關的單元組成,附加級內部開關單元數r=N/2=2m-1,如式(2)所示。所以共有2logN-1級,每級有N/2個開關單元,總共有NlogN-N/2個開關單元,需NlogN-N/2 bit配置參數。
其中,m=logN。
Benes置換網絡能夠實現N!種全置換,保證了任意置換深度的實現。非阻塞網絡保證了置換滿足一一映射關系。且該置換網絡為純組合電路,不增加干路延時。
2.3 存儲器地址加擾分析
地址加擾方案的最終防護目標是系統存儲器中的敏感數據。系統存儲器主要包含系統內存和非易失存儲器,根據使用需求對存儲設備進行分區,各分區的特性如表1所示。
系統內存通常使用RAM。RAM的最小讀寫單位為字節或字,主設備對RAM執行n拍觸發讀寫時,總線會持續給出n個連續的地址。加入地址加擾機制后,總線持續給出的n個地址將不再是連續的,但是RAM接到這些地址后仍然能正常尋址。所以地址加擾不會對RAM的使用造成影響。
非易失存儲器通常使用Flash。Flash的基本結構是頁(Page)、扇區(Sector)、塊(Block)和宏。頁的大小一般為256 B,也是連續尋址的最大空間。扇區由16個頁構成,一般是擦除操作的最小單位空間。增加地址加擾模塊后,即使將加擾的深度控制在頁內,處理器也無法實現觸發尋址,因為Flash只能按照實際物理地址連續讀寫。除非在系統將Flash中的整塊數據(指令)搬移至內存中時可以使用連續讀寫,或者為Flash的讀寫訪問設置緩存,否則增加地址加擾后的Flash只支持單拍讀寫功能。
3 地址加擾設計與實現
3.1 參數發生器設計
為了提高總線地址加擾的安全性,總線地址加擾系統配置了參數發生器及參數動態更新控制電路。參數發生器負責生成置換網絡動態配置所需的參數,使系統可以根據需求動態更換置換網絡的配置參數,從而達到更好的安全防護效果。本文以32 bit位寬地址總線為例,則N=2m=32,共有144個開關單元,每次配置需144 bit配置參數。
參數發生器包含3個線性反饋移位寄存器(LFSR)。每個線性反饋多項式都是本原多項式,分別為:LFSR-42(42,7,4,3,0)、LFSR-48(48,9,7,4,0)、LFSR-54(54,8,6,3,0),線性反饋移位寄存器的周期分別是242、248、254。LFSR-42、LFSR-48和LFSR-54的反饋多項式f1(x)、f2(x)和f3(x)如式(3)所示:
參數發生器的控制部分使用鐘控模型,下面介紹3個LFSR的鐘控方式。LFSR-42將當前時刻第21級寄存器的比特作為X1,LFSR-48將當前時刻第24級寄存器的比特作為X2,LFSR-54將當前時刻第27級寄存器的比特作為X3,X1、X2、X3這3個比特用于控制3個LFSR動作與否。控制的方式采取擇多原則,具體實現如式(4)所示:
通過鐘控的運行,3個LFSR中將不斷充滿隨機數,其最終周期為2144。因此只需要從寄存器中將隨機序列提取出來,按照參數配置規則填充到置換網絡中,就能滿足置換網絡的配置需求。
通過2.2節的分析可知,置換網絡對數據的置換實際是利用多組選通開關改變數據中每一比特的排列次序,使之最終成為與配置信息相關聯的重排列。若還原獲得原始地址,可以把重排后的地址逆向重排,使之返回初始狀態。輸入為32 bit位寬的Benes置換網絡由9列、16行組成,每一列分別對應配置信息R0~R8,每列配置信息Rn包含16 bit,加解擾的配置參數k1和k2相互倒置,如式(5)所示。
3.2 置換網絡應用
為了實現地址信息的加解擾與系統信息的混亂,同時保證加擾參數的動態更換與系統程序的安全保密,地址加擾系統應包含多種不同功能的置換網絡,分別實現加擾控制、存儲器加解擾、非存儲器加解擾等功能。
針對嵌入式系統特點,本文設計了4種置換網絡,分別是連接處理器的置換網絡N0、連接普通主設備的置換網絡N1、連接非存儲器從設備的置換網絡N2和連接存儲器的置換網絡N3。這4種置換網絡在系統中的分布如圖3所示。
N0網絡在實現加擾功能的基礎上還實現了控制信息的解析。N1和N2網絡分別實現了地址總線的加擾和解擾,保證地址數據在總線中的混亂性和在系統設備中的可用性。N3網絡是專門針對存儲器的置換網絡,其目的是確保存儲器中數據地址混亂。
主設備(包括處理器)發出的地址a經過N0、N1的置換后,加擾為新的地址h′,并輸入地址總線;總線將該地址信息傳送到網絡N2,將地址還原為a,從而實現了地址在總線中的安全傳輸。如果目標設備是存儲器,則需要進入置換網絡N3,將地址重新加擾成h″,進而實現了存儲器的混亂存儲。
圖4為配置加擾功能后系統的訪問控制流程圖。系統的讀寫訪問控制操作由CPU處理器發起,置換網絡判斷是否是網絡的控制指令。如果是控制指令,則根據指令對加擾系統進行控制;否則先對地址加擾,輸出時解擾還原。目標從設備如果是存儲器,則地址還要再次被加擾,進而訪問存儲器;否則直接送入從設備。
3.3 系統初始化流程
為了使系統指令始終保持混亂的存儲順序,保證攻擊者無法獲得系統指令的加密序列,必須對系統程序進行預處理。指令的預處理與初始化過程中的置換尋址相結合,進而保障系統程序的安全性。
系統存儲器包含系統內存和非易失存儲器兩部分。非易失存儲器不僅存儲了系統啟動代碼[7](BootLoader)、系統程序(SoftWare)和用戶關鍵數據(UserData),還存儲了存儲器專用置換網絡的配置參數(KeyData)。系統程序裝載流程如圖5所示。
系統程序裝載的操作步驟為:將高級語言編譯成匯編語言;將匯編語言編譯成處理器指令流;將指令流序列重拍成混亂序列;將混亂序列裝載到系統非易失存儲器中;系統啟動,上電初始化。
為了實現對系統程序的安全防護,使攻擊者無法從系統程序中獲得有效信息,必須修改系統初始化流程,對進入存儲器的地址進行加擾,使系統程序以混亂形式保存在非易失存儲器及系統內存中。
如圖6所示,修改后系統初始化的操作步驟為:系統上電,從非易失存儲器零地址開始執行;將SoftWare中的系統指令搬移至RAM零地址;將UserData中的用戶參數搬移至RAM;從KeyData中獲取置換參數,并注入置換網絡;復位系統,地址重映射,并從RAM的零地址執行代碼。
4 實驗結果
為了綜合評估該方案的資源消耗,本文使用Verilog硬件描述語言和C語言設計并實現了整體方案,利用綜合工具在0.18 nm工藝下對各硬件模塊進行了綜合,資源消耗如表2所示。地址加擾安全防護系統的資源消耗總和取決于地址加擾的防護對象數量,防護的目標越多,需要的置換網絡也越多。設N1和N2數量的總和為m,N3的個數為n。
測試環境的構建基于某嵌入式SoC芯片原型系統,芯片原型內共有15個主從設備和2個存儲器,m取值14,n取值2。地址加擾對芯片的資源消耗如表3所示,其中邏輯資源不包含存儲器等存儲資源,地址加擾模塊對整個芯片的資源僅占芯片總資源的1.09%。
從綜合分析測試結果可知,地址加擾能有效保護地址信息,其參數的復雜度為2144,且地址只以加擾狀態出現在攻擊薄弱點;地址加擾的資源消耗非常少,地址加擾效率極高,操作控制簡單,且在干路中不造成延時,保證了數據傳輸的實時性。
為了提高嵌入式系統安全防護能力,本文結合地址總線的傳輸特性,提出了基于Benes置換網絡的地址加擾方案。測試驗證結果證明,本文所提出的地址加擾方案能有效提高嵌入式系統的安全防護能力。目前地址總線的加擾應用還不夠廣泛,地址總線加擾還可能面臨其他潛在威脅,需要在應用過程中收集更多的數據來完善總線地址加擾的理論。
參考文獻
[1] LIE D,THEKKATH C,HOROWITZ M.Implementing an untrusted operating system on trusted hardware[C].In:SOSP′03:Proceedings of the Nineteenth ACM Symposium on Operating Systems Principles,2003:178-192.
[2] ELBAZ R,CHAMPAGNE D,LEE R B,et al.Tec-tree: A low cost and parallelizable tree for efficient defense against memory replay attacks[C].In:CHES′07: Workshop on Cryptographic Hardware and Embedded Systems,2007:289-302.
[3] VASLIN R.Hardware core for off-chip memory security management in embedded system[D].Leuven:Katholieke Universiteit Leuven,2008.
[4] DURAHIM A O,SAVAS E,SUNAR B,et al.Transparent code authentication at the processor level[J].Comput DigitalTech。,IET,2009,3(4):354-372.
[5] 陳馳,馮登國.信息安全產品安全保證量化評估研究[J].電子學報,2007,35(10):1886-1891.
[6] Zhong Jiling.Upper bound analysis and routing in optical benes networks[D].Atlanla,GA,Georgia State University,2005.
[7] 趙鵬,王大偉,李思昆.面向SoC任務分配的應用程序存儲需求量分析方法[J].電子學報,2010,38(3):541-545.