<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 基于A(yíng)RM平臺的嵌入式軟件保護方案

基于A(yíng)RM平臺的嵌入式軟件保護方案

作者: 時(shí)間:2009-12-31 來(lái)源:網(wǎng)絡(luò ) 收藏
近年來(lái),從軟件到軟硬件聯(lián)合攻擊給系統造成嚴峻的安全威脅。安全性已成為系統設計中必不可少的一部分,同時(shí)這又是一個(gè)折衷的過(guò)程,不能單靠軟件來(lái)保證,而全硬件的解決方式很昂貴且不具有彈性[1]。很多產(chǎn)品開(kāi)始從設計之初就從系統架構上考慮了安全性,如公司的Trust Zone技術(shù)開(kāi)辟了一片可信代碼區,通過(guò)一個(gè)S比特來(lái)區分系統的安全狀態(tài),IBM的PowerPC中使用了多核單元寬帶引擎(BE)進(jìn)行安全引導和物理隔離。
  需要注意的是目前使用的很多系統都是沒(méi)有特別設計安全機制的硬件。本文以原處理器為例,通過(guò)增加1塊安全協(xié)處理器,就可以實(shí)現低成本、有實(shí)效的安全保護,并且能夠抵御兩類(lèi)比較寬泛的攻擊:一類(lèi)是在系統的啟動(dòng)過(guò)程中的攻擊,如果系統啟動(dòng)過(guò)程中沒(méi)有安全保護措施,很可能被非法用戶(hù)使用非授權的軟件。另一類(lèi)是外部存儲器及總線(xiàn)攻擊,當程序代碼保存在外部非易失存儲器上時(shí),可以輕易被黑客拷貝。另外,片外存儲器與片上系統(SoC)之間的總線(xiàn)傳輸也容易受到攻擊。
1 硬件結構
  本的硬件結構如圖1所示。處理器采用三星公司的S3C2442,內核為920T,外置1塊2 MB的NorFlash用以存放密文數據,ARM通過(guò)總線(xiàn)方式對NorFlash進(jìn)行訪(fǎng)問(wèn),該硬件結構中最重要的部分是添加了1塊安全協(xié)處理器:福華公司的嵌入式系統芯片FS8826。該芯片可通過(guò)I2C或SPI總線(xiàn)與SOC連接,這里使用I2C方式。PC機能夠對硬件平臺中的每個(gè)芯片進(jìn)行編程控制:通過(guò)JTAG端口、串口及網(wǎng)口與ARM進(jìn)行通信,通過(guò)專(zhuān)門(mén)的燒錄器對FS8826的硬件密鑰和安全存儲區進(jìn)行寫(xiě)入。

本文引用地址:http://dyxdggzs.com/article/152163.htm

2 軟件實(shí)現
  軟件設計從兩個(gè)主要方面考慮,一是代碼加密,二是版權認證。前者主要通過(guò)AES(Advanced Encryptiong Standard)加解密算法實(shí)現,其算法密鑰的管理以及版權認證將依靠FS8826來(lái)實(shí)現,最終達到安全啟動(dòng)嵌入式操作系統以及保護運行時(shí)的版權目的。安全啟動(dòng)Bootloader+Image的加載機制,也是ARM處理器通用的引導機制。首先采用AES加解密算法在PC機端將編譯完成Image加密,利用FS8826安全存儲區存放AES算法密鑰,密文存儲在片外存儲器中,ARM啟動(dòng)時(shí)將密文加載入內存。然后在Bootloader啟動(dòng)過(guò)程時(shí)加入與FS8826的認證操作,認證通過(guò)則在該過(guò)程中使用AES解密算法解密Image,并用明文將原內存中的密文覆蓋,系統正常運行中加入與FS8826的實(shí)時(shí)通信監測,確保在授權目標機上運行程序。軟件實(shí)現流程如圖2所示,相應的實(shí)現框圖如圖3所示。


2.1 AES算法
  AES是美國國家標準和技術(shù)研究所(NIST)選定的高級加密標準,是目前對稱(chēng)加密領(lǐng)域內的主流算法。其數據分組固定為128 bit,密鑰分組可支持128 bit/192 bit/256 bit。核心過(guò)程為數據塊矩陣的Nr(10/12/14)次輪操作。每一次輪操作都由S盒代換(SubBytes)、行移位(ShiftRows)、列混淆(MixColumns)和輪密鑰加(AddRoundKey)4個(gè)函數組成,第Nr次輪操作不包含MixColumns 函數。密鑰擴展為每一輪變換提供輪密鑰[2]。本方案中加密在PC機端離線(xiàn)完成,沒(méi)有時(shí)間和運行效率的特別要求,但是解密在A(yíng)RM9處理器中完成,其運行時(shí)間將作為系統啟動(dòng)的一部分,所以下面針對解密部分的算法程序結合其實(shí)現平臺進(jìn)行優(yōu)化設計。
  直接的解密算法是將加密過(guò)程的每一步求逆并倒置次序得到,然而這樣并不利于優(yōu)化。算法的創(chuàng )始人提出了一種等價(jià)解密過(guò)程,在解密的輪變換中交換逆行移位和逆S盒代換,輪密鑰加和逆列混淆的順序,只需要調整密鑰的編排方案即可。在實(shí)現中等價(jià)解密過(guò)程可以將解密輪變換中的前3個(gè)步驟綜合生成1張4 KB的T表用于查詢(xún),即可快速準確地完成解密[2]。具體流程如圖4所示。

  加解密過(guò)程使用電碼本模式(ECB)運行,即將消息段逐個(gè)分別加解密。實(shí)現采用移植性較好的標準C編程。針對ARM處理器的特點(diǎn),C語(yǔ)言具有以下優(yōu)化的實(shí)現方式[3]:
  (1) 數據類(lèi)型設置:ARM處理器內部是32 bit寄存器,如果變量長(cháng)度與ARM內部寄存器長(cháng)度不一致,將會(huì )使得變量的存取都需要附加其他指令[3]。AES算法中密鑰及數據都是以字節為單位運算,優(yōu)化時(shí)調整為32 bit,僅在輸入輸出時(shí)進(jìn)行位數變換,可以帶來(lái)很大的速度改進(jìn)。
  (2) 循環(huán)展開(kāi):ARM處理器中每一次循環(huán)最少有4個(gè)周期的循環(huán)開(kāi)銷(xiāo)[3]。解密輪變換涉及4個(gè)子函數調用,循環(huán)執行Nr-1次。在等價(jià)解密算法融合了3個(gè)子函數形成T表查詢(xún),于是可以把輪變換展開(kāi),在不增加太多代碼量的基礎上,每一個(gè)數據分組解密減少4(Nr-1)個(gè)周期。當密鑰位長(cháng)、密文數據量大時(shí)節省的循環(huán)開(kāi)銷(xiāo)就比較可觀(guān)。

linux操作系統文章專(zhuān)題:linux操作系統詳解(linux不再難懂)

上一頁(yè) 1 2 下一頁(yè)

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>