文獻標識碼: A
文章編號: 0258-7998(2014)07-0017-04
隨著嵌入式系統(tǒng)應(yīng)用的日益廣泛,其安全性保障也日益迫切,尤其是存儲器中的數(shù)據(jù)和指令需要嚴格的安全保障。目前,對片外存儲器的安全防護有Execute-Only Memory(XOM)[1]、PE-ICE/TEC-tree[2]、AES-TAC[3]等技術(shù),其原理都是通過加密存儲[4]的方式對數(shù)據(jù)實施安全防護。
由于特定型號的處理器所使用的初始化代碼有相對固定的格式,經(jīng)編譯所得的指令序列也相對固定,因此攻擊者探知處理器型號后,就等于獲得了部分指令序列。攻擊者對指令序列的攻擊由唯密文攻擊轉(zhuǎn)變?yōu)橐阎魑墓?,芯片的安全性將受到嚴峻的挑?zhàn)。
針對上述問題,本文在嵌入式系統(tǒng)存儲器加密技術(shù)的基礎(chǔ)上,提出了地址加擾安全防護措施。在CPU訪問的邏輯地址與存儲器物理地址之間增加一層復(fù)雜的映射關(guān)系,從而隱藏了系統(tǒng)代碼的規(guī)律性,極大地增強了嵌入式系統(tǒng)的安全性。
1 嵌入式系統(tǒng)地址總線攻擊分析
芯片和片外存儲器的接口引腳是嵌入式系統(tǒng)中最為薄弱的環(huán)節(jié)之一,攻擊者可以從這些引腳上采集數(shù)據(jù)用于分析,從中獲得有效信息。此外,片上總線[5]用于將所有IP鏈接起來,跨度較大,且布局十分規(guī)整,容易成為攻擊者施加探針的攻擊點。SoC芯片易受到攻擊威脅的點如圖1所示,標記①為存儲器引腳攻擊點,標記②為片上總線探針攻擊點。
可通過嵌入比特置換模塊混亂地址映射關(guān)系,從而加強防護能力。通過對存儲器引腳上傳輸?shù)牡刂穼嵤┘訑_,使存儲器內(nèi)部的邏輯地址和物理地址不一致,讓攻擊者無法從存儲器入手攻擊關(guān)鍵信息。通過在地址總線兩端增加置換模塊,使地址總線不直接傳輸?shù)刂访魑?,防止攻擊者通過差分攻擊的手段獲得總線和引腳上兩個地址之間的映射關(guān)系,阻止攻擊者構(gòu)建明密文對應(yīng)關(guān)系。
2 地址加擾安全防護方案
2.1 總線地址加擾需求
存儲器的每個地址都對應(yīng)一個存儲單元,地址與存儲單元之間必須符合一一映射的關(guān)系,加擾后的地址也必須符合這個映射規(guī)則??偩€的解碼依據(jù)地址信息,F(xiàn)lash存儲器的讀寫也依賴于地址信息,因此地址的加擾必須控制在一定空間內(nèi),即加擾深度必須和總線配置相一致。數(shù)據(jù)和地址在總線中的傳輸必須滿足總線的傳輸協(xié)議,因此地址的加擾不能帶來額外的時鐘延時,即加擾必須能保證實時性。
因此,對地址數(shù)據(jù)進行加擾必須滿足以下3點要求:(1)地址加擾后仍滿足一一映射;(2)加擾深度可控;(3)加解擾無延時。
2.2 總線地址加擾方案
總線地址加擾方案如圖2所示。為了對地址加以保護,使地址信號不直接出現(xiàn)在信道中,即使攻擊者攻入信道,也無法獲得所有地址信息,必須在信道兩端增加地址重映射模塊。N1、N2是置換網(wǎng)絡(luò),實現(xiàn)了片上主從設(shè)備與信道之間的地址重映射,也即地址的加擾和解擾。其控制模塊是受處理器控制的獨立硬件電路,負責所有置換網(wǎng)絡(luò)的參數(shù)配置及功能控制。加解擾運算如式(1)所示:
其中E為加擾運算,D為解擾運算,a為加擾前的地址,h為加擾后的地址。加擾和解擾使用相同的硬件模塊,但是配置的參數(shù)不同,k1為加擾參數(shù),k2為解擾參數(shù)。
置換網(wǎng)絡(luò)N1、N2可用Benes[6]二進制可重排非阻塞網(wǎng)絡(luò)實現(xiàn)。令N表示重排數(shù)據(jù)位寬,m表示網(wǎng)絡(luò)級數(shù),r表示開關(guān)單元數(shù),則有N=2m。用2×2的基本開關(guān)單元構(gòu)成一個N輸入到N輸出的互聯(lián)網(wǎng)絡(luò),則能夠?qū)崿F(xiàn)N!種輸入與輸出之間的置換,記為B(m)(m=logN)。通過遞歸構(gòu)造Benes網(wǎng)絡(luò),可以通過一級N/2個開關(guān)單元,繼以兩個同類型的子網(wǎng)絡(luò)B(m-1),最后再附加一級N/2個開關(guān)的單元組成,附加級內(nèi)部開關(guān)單元數(shù)r=N/2=2m-1,如式(2)所示。所以共有2logN-1級,每級有N/2個開關(guān)單元,總共有NlogN-N/2個開關(guān)單元,需NlogN-N/2 bit配置參數(shù)。
其中,m=logN。
Benes置換網(wǎng)絡(luò)能夠?qū)崿F(xiàn)N!種全置換,保證了任意置換深度的實現(xiàn)。非阻塞網(wǎng)絡(luò)保證了置換滿足一一映射關(guān)系。且該置換網(wǎng)絡(luò)為純組合電路,不增加干路延時。
2.3 存儲器地址加擾分析
地址加擾方案的最終防護目標是系統(tǒng)存儲器中的敏感數(shù)據(jù)。系統(tǒng)存儲器主要包含系統(tǒng)內(nèi)存和非易失存儲器,根據(jù)使用需求對存儲設(shè)備進行分區(qū),各分區(qū)的特性如表1所示。
系統(tǒng)內(nèi)存通常使用RAM。RAM的最小讀寫單位為字節(jié)或字,主設(shè)備對RAM執(zhí)行n拍觸發(fā)讀寫時,總線會持續(xù)給出n個連續(xù)的地址。加入地址加擾機制后,總線持續(xù)給出的n個地址將不再是連續(xù)的,但是RAM接到這些地址后仍然能正常尋址。所以地址加擾不會對RAM的使用造成影響。
非易失存儲器通常使用Flash。Flash的基本結(jié)構(gòu)是頁(Page)、扇區(qū)(Sector)、塊(Block)和宏。頁的大小一般為256 B,也是連續(xù)尋址的最大空間。扇區(qū)由16個頁構(gòu)成,一般是擦除操作的最小單位空間。增加地址加擾模塊后,即使將加擾的深度控制在頁內(nèi),處理器也無法實現(xiàn)觸發(fā)尋址,因為Flash只能按照實際物理地址連續(xù)讀寫。除非在系統(tǒng)將Flash中的整塊數(shù)據(jù)(指令)搬移至內(nèi)存中時可以使用連續(xù)讀寫,或者為Flash的讀寫訪問設(shè)置緩存,否則增加地址加擾后的Flash只支持單拍讀寫功能。
3 地址加擾設(shè)計與實現(xiàn)
3.1 參數(shù)發(fā)生器設(shè)計
為了提高總線地址加擾的安全性,總線地址加擾系統(tǒng)配置了參數(shù)發(fā)生器及參數(shù)動態(tài)更新控制電路。參數(shù)發(fā)生器負責生成置換網(wǎng)絡(luò)動態(tài)配置所需的參數(shù),使系統(tǒng)可以根據(jù)需求動態(tài)更換置換網(wǎng)絡(luò)的配置參數(shù),從而達到更好的安全防護效果。本文以32 bit位寬地址總線為例,則N=2m=32,共有144個開關(guān)單元,每次配置需144 bit配置參數(shù)。
參數(shù)發(fā)生器包含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)所示:
參數(shù)發(fā)生器的控制部分使用鐘控模型,下面介紹3個LFSR的鐘控方式。LFSR-42將當前時刻第21級寄存器的比特作為X1,LFSR-48將當前時刻第24級寄存器的比特作為X2,LFSR-54將當前時刻第27級寄存器的比特作為X3,X1、X2、X3這3個比特用于控制3個LFSR動作與否。控制的方式采取擇多原則,具體實現(xiàn)如式(4)所示:
通過鐘控的運行,3個LFSR中將不斷充滿隨機數(shù),其最終周期為2144。因此只需要從寄存器中將隨機序列提取出來,按照參數(shù)配置規(guī)則填充到置換網(wǎng)絡(luò)中,就能滿足置換網(wǎng)絡(luò)的配置需求。
通過2.2節(jié)的分析可知,置換網(wǎng)絡(luò)對數(shù)據(jù)的置換實際是利用多組選通開關(guān)改變數(shù)據(jù)中每一比特的排列次序,使之最終成為與配置信息相關(guān)聯(lián)的重排列。若還原獲得原始地址,可以把重排后的地址逆向重排,使之返回初始狀態(tài)。輸入為32 bit位寬的Benes置換網(wǎng)絡(luò)由9列、16行組成,每一列分別對應(yīng)配置信息R0~R8,每列配置信息Rn包含16 bit,加解擾的配置參數(shù)k1和k2相互倒置,如式(5)所示。
3.2 置換網(wǎng)絡(luò)應(yīng)用
為了實現(xiàn)地址信息的加解擾與系統(tǒng)信息的混亂,同時保證加擾參數(shù)的動態(tài)更換與系統(tǒng)程序的安全保密,地址加擾系統(tǒng)應(yīng)包含多種不同功能的置換網(wǎng)絡(luò),分別實現(xiàn)加擾控制、存儲器加解擾、非存儲器加解擾等功能。
針對嵌入式系統(tǒng)特點,本文設(shè)計了4種置換網(wǎng)絡(luò),分別是連接處理器的置換網(wǎng)絡(luò)N0、連接普通主設(shè)備的置換網(wǎng)絡(luò)N1、連接非存儲器從設(shè)備的置換網(wǎng)絡(luò)N2和連接存儲器的置換網(wǎng)絡(luò)N3。這4種置換網(wǎng)絡(luò)在系統(tǒng)中的分布如圖3所示。
N0網(wǎng)絡(luò)在實現(xiàn)加擾功能的基礎(chǔ)上還實現(xiàn)了控制信息的解析。N1和N2網(wǎng)絡(luò)分別實現(xiàn)了地址總線的加擾和解擾,保證地址數(shù)據(jù)在總線中的混亂性和在系統(tǒng)設(shè)備中的可用性。N3網(wǎng)絡(luò)是專門針對存儲器的置換網(wǎng)絡(luò),其目的是確保存儲器中數(shù)據(jù)地址混亂。
主設(shè)備(包括處理器)發(fā)出的地址a經(jīng)過N0、N1的置換后,加擾為新的地址h′,并輸入地址總線;總線將該地址信息傳送到網(wǎng)絡(luò)N2,將地址還原為a,從而實現(xiàn)了地址在總線中的安全傳輸。如果目標設(shè)備是存儲器,則需要進入置換網(wǎng)絡(luò)N3,將地址重新加擾成h″,進而實現(xiàn)了存儲器的混亂存儲。
圖4為配置加擾功能后系統(tǒng)的訪問控制流程圖。系統(tǒng)的讀寫訪問控制操作由CPU處理器發(fā)起,置換網(wǎng)絡(luò)判斷是否是網(wǎng)絡(luò)的控制指令。如果是控制指令,則根據(jù)指令對加擾系統(tǒng)進行控制;否則先對地址加擾,輸出時解擾還原。目標從設(shè)備如果是存儲器,則地址還要再次被加擾,進而訪問存儲器;否則直接送入從設(shè)備。
3.3 系統(tǒng)初始化流程
為了使系統(tǒng)指令始終保持混亂的存儲順序,保證攻擊者無法獲得系統(tǒng)指令的加密序列,必須對系統(tǒng)程序進行預(yù)處理。指令的預(yù)處理與初始化過程中的置換尋址相結(jié)合,進而保障系統(tǒng)程序的安全性。
系統(tǒng)存儲器包含系統(tǒng)內(nèi)存和非易失存儲器兩部分。非易失存儲器不僅存儲了系統(tǒng)啟動代碼[7](BootLoader)、系統(tǒng)程序(SoftWare)和用戶關(guān)鍵數(shù)據(jù)(UserData),還存儲了存儲器專用置換網(wǎng)絡(luò)的配置參數(shù)(KeyData)。系統(tǒng)程序裝載流程如圖5所示。
系統(tǒng)程序裝載的操作步驟為:將高級語言編譯成匯編語言;將匯編語言編譯成處理器指令流;將指令流序列重拍成混亂序列;將混亂序列裝載到系統(tǒng)非易失存儲器中;系統(tǒng)啟動,上電初始化。
為了實現(xiàn)對系統(tǒng)程序的安全防護,使攻擊者無法從系統(tǒng)程序中獲得有效信息,必須修改系統(tǒng)初始化流程,對進入存儲器的地址進行加擾,使系統(tǒng)程序以混亂形式保存在非易失存儲器及系統(tǒng)內(nèi)存中。
如圖6所示,修改后系統(tǒng)初始化的操作步驟為:系統(tǒng)上電,從非易失存儲器零地址開始執(zhí)行;將SoftWare中的系統(tǒng)指令搬移至RAM零地址;將UserData中的用戶參數(shù)搬移至RAM;從KeyData中獲取置換參數(shù),并注入置換網(wǎng)絡(luò);復(fù)位系統(tǒng),地址重映射,并從RAM的零地址執(zhí)行代碼。
4 實驗結(jié)果
為了綜合評估該方案的資源消耗,本文使用Verilog硬件描述語言和C語言設(shè)計并實現(xiàn)了整體方案,利用綜合工具在0.18 nm工藝下對各硬件模塊進行了綜合,資源消耗如表2所示。地址加擾安全防護系統(tǒng)的資源消耗總和取決于地址加擾的防護對象數(shù)量,防護的目標越多,需要的置換網(wǎng)絡(luò)也越多。設(shè)N1和N2數(shù)量的總和為m,N3的個數(shù)為n。
測試環(huán)境的構(gòu)建基于某嵌入式SoC芯片原型系統(tǒng),芯片原型內(nèi)共有15個主從設(shè)備和2個存儲器,m取值14,n取值2。地址加擾對芯片的資源消耗如表3所示,其中邏輯資源不包含存儲器等存儲資源,地址加擾模塊對整個芯片的資源僅占芯片總資源的1.09%。
從綜合分析測試結(jié)果可知,地址加擾能有效保護地址信息,其參數(shù)的復(fù)雜度為2144,且地址只以加擾狀態(tài)出現(xiàn)在攻擊薄弱點;地址加擾的資源消耗非常少,地址加擾效率極高,操作控制簡單,且在干路中不造成延時,保證了數(shù)據(jù)傳輸?shù)膶崟r性。
為了提高嵌入式系統(tǒng)安全防護能力,本文結(jié)合地址總線的傳輸特性,提出了基于Benes置換網(wǎng)絡(luò)的地址加擾方案。測試驗證結(jié)果證明,本文所提出的地址加擾方案能有效提高嵌入式系統(tǒng)的安全防護能力。目前地址總線的加擾應(yīng)用還不夠廣泛,地址總線加擾還可能面臨其他潛在威脅,需要在應(yīng)用過程中收集更多的數(shù)據(jù)來完善總線地址加擾的理論。
參考文獻
[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] 陳馳,馮登國.信息安全產(chǎn)品安全保證量化評估研究[J].電子學(xué)報,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任務(wù)分配的應(yīng)用程序存儲需求量分析方法[J].電子學(xué)報,2010,38(3):541-545.