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