999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于分散加載的ARM軟件加密方案設(shè)計

2014-09-25 03:05:42關(guān)峰謝曉明
關(guān)鍵詞:程序

關(guān)峰,謝曉明

(北京化工大學(xué)信息科學(xué)與技術(shù)學(xué)院,北京100029)

引 言

ARM芯片作為嵌入式系統(tǒng)的主流芯片,已經(jīng)廣泛應(yīng)用于手機、路由器及其他工業(yè)和民用電子設(shè)備[1]。在ARM處理器得到越來越多的應(yīng)用的同時,如何防止黑客拷貝ARM內(nèi)部程序、竊取核心代碼,防止開發(fā)人員花費大量金錢和時間研發(fā)出的產(chǎn)品被非法人員一夜之間仿冒的事情發(fā)生,已成為亟待解決的問題。

保護(hù)嵌入式產(chǎn)品內(nèi)部程序不被竊取的方法,總體上有軟件加密和硬件加密兩大類。軟件加密主要有加密鎖定位、加密字節(jié)、偽指令等方法。事實上,由于存儲器中程序總體是反匯編可讀的,攻擊者借助專用設(shè)備,便可以而破解芯片內(nèi)程序,得到程序源代碼[2]。甚至不需要得到源碼,只需要得到存儲器上的二進(jìn)制文件,將其復(fù)制到同型號設(shè)備中,就可以得到同樣功能的設(shè)備。硬件加密方法,往往采用專用的加密卡或加密芯片的方式,通過相應(yīng)的傳輸協(xié)議及硬件電路完成加密[3]。但是,硬件加密方案會增加設(shè)備制造的復(fù)雜度和設(shè)備成本。

本文以ARM Cortex-M3芯片為例,設(shè)計并實現(xiàn)了一種基于分散加載的ARM芯片加密方案,此方案將經(jīng)過加密的程序燒寫到存儲器上,從而完全打亂程序在存儲器上的正常順序,使其反匯編完全不可讀。以ARM芯片內(nèi)全球唯一的序列號為密鑰,確保被整片復(fù)制的程序無法正確運行在其他設(shè)備上。此方案充分利用了ARM芯片的特點,為嵌入式產(chǎn)品開發(fā)工程師提供了一種保護(hù)知識成果的方案。

1 分散加載技術(shù)介紹

1.1 分散加載的基本原理

在嵌入式系統(tǒng)中,其存儲系統(tǒng)常常由FLASH、ROM、RAM等存儲器組成,它們被定位于不同的物理地址范圍。為了讓軟件更好地訪問和利用這些存儲器并讓系統(tǒng)高效的運行,ARM鏈接器提供了分散加載機制。在鏈接時可以根據(jù)分散加載文件中指定的存儲器分配方案,將可執(zhí)行鏡像文件分為指定的分區(qū)并定位于指定的存儲器物理地址。當(dāng)嵌入式系統(tǒng)在重新上電或復(fù)位時,首先對處理器內(nèi)部寄存器執(zhí)行初始化,然后執(zhí)行ROM存儲器的自舉代碼,根據(jù)鏈接時的存儲器分配方案,將相應(yīng)代碼和數(shù)據(jù)從加載地址復(fù)制到運行地址。這樣,定位于RAM存儲器中的代碼和數(shù)據(jù)就在RAM中執(zhí)行,而不再從ROM存儲器中執(zhí)行[4]。利用分散加載的特性,可以在加載域指定的ROM中存儲經(jīng)過加密的二進(jìn)制程序,而在對應(yīng)的運行域RAM中將其還原,RAM的掉電易失性使源程序不被暴露。

1.2 存儲器規(guī)劃

ARM Cortex-M3芯片有32KB本地靜態(tài)RAM和512KB片內(nèi)FLASH[5],其地址映射如圖1所示。

圖1 ARM Cortex-M3存儲器映射

由于ARM芯片程序中有大量的公共庫程序和簡單的流程控制程序,所以不需要加密全部程序,只要加密核心代碼即可。本文把ARM程序抽象成三大部分:預(yù)處理部分、核心程序部分、其他程序部分。預(yù)處理部分最先執(zhí)行,負(fù)責(zé)與上位機軟件交互、解密加載域并寫入對應(yīng)運行域中。核心程序是芯片代碼中需要加密部分,其加載域上存儲其密文。其他程序為芯片代碼中的公共庫程序或簡單流程程序,其加載域上直接存儲其明文。本文對存儲器的規(guī)劃如表1所列,值得注意的是核心程序的運行域在RAM上。根據(jù)分散加載文件的編寫規(guī)則和表1,編寫相應(yīng)分散加載文件后,使用集成開發(fā)環(huán)境編譯并下載程序,預(yù)處理程序、核心程序、其他程序?qū)粺龑懙较鄳?yīng)加載域,并且得到三個與之對應(yīng)的二進(jìn)制文件。

表1 CortexM3存儲器規(guī)劃

2 加密方案具體實現(xiàn)

軟件加密的目的就是要千方百計造成機器碼的錯誤反匯編或反匯編后的程序不可讀,所以可以考慮把程序加密后再燒寫到FLASH中,達(dá)到完全打亂FLASH程序順序的作用。這樣,不法分子從FLASH中提取的程序,反匯編的結(jié)果將是完全不可分析的。被加密的程序運行前,將其解密后到復(fù)制到分散加載文件指定的位于RAM的運行域,由于RAM的掉電丟失性,正確的二進(jìn)制程序?qū)⒈浑[藏。到此為止,已經(jīng)能夠阻止不法分子通過反匯編得到程序的源代碼。然而,仍然沒有防止仿制者通過非法手段整片復(fù)制芯片程序到同型號的其他芯片,從而快速生產(chǎn)出同類電子產(chǎn)品。通過對ARM芯片的分析發(fā)現(xiàn),在所有ARM芯片內(nèi)部寄存器中,都有一組128位全球唯一芯片序列號[5]。并且此序列號只能被讀取,不能被修改,可以以此序列號作為加密算法的密鑰,這樣,由于所有ARM設(shè)備的密鑰都不同,不法人員通過簡單拷貝芯片程序給其他同類型芯片,會因為密鑰不匹配,得不到正確的運行域程序,使整片復(fù)制芯片程序的竊取方法失敗。

本文的加密方案總體思想如圖2所示。首先以分散加載方式規(guī)劃存儲器,正常加載程序。然后將核心程序以ARM序列號為密鑰,加密后燒寫到分散加載文件指定的加載域上,以密文形式覆蓋原有明文。最后,在預(yù)處理程序中提取設(shè)備序列號,以此為密鑰進(jìn)行解密,將得到的結(jié)果復(fù)制到分散加載文件指定的運行域中。

圖2 加密方案

2.1 加密算法選擇

在數(shù)據(jù)加密認(rèn)證的過程中,選擇合適的加密算法是研發(fā)工程師首先要考慮的事情。選擇加密算法時要結(jié)合自身需求,從算法執(zhí)行速度、安全性、資源占用性等方面進(jìn)行綜合考慮。對稱加密算法是常用于嵌入式設(shè)備加密的主要方法,其中廣范應(yīng)用的對稱加密算法有AES算法和DES算法。DES算法有不能對抗差分和線性密碼分析、對系統(tǒng)資源要求高等缺點[6]。2000年,美國國家標(biāo)準(zhǔn)局正式宣布AES算法為新的高級加密標(biāo)準(zhǔn)。AES優(yōu)點如下:運算速度快,對內(nèi)存要求低,高安全性等。由于AES算法可以提供128位密鑰,所以128位ARM芯片全球唯一序列號不做任何處理便可作為AES算法密鑰,本文選用AES算法作為核心程序加密算法。

2.2 核心程序加密實現(xiàn)過程

根據(jù)表1的分散加載方案下載程序到存儲器芯片中后,包括核心程序在內(nèi)的所有程序在FLASH上都以明文存儲。要使核心程序不被竊取,必須對其加密處理,以密文覆蓋原有明文。在實現(xiàn)時,要設(shè)計一個簡單的上位機軟件,其與芯片中預(yù)處理程序配合完成芯片加密工作。上位機可以用MFC或C#開發(fā),筆者以MFC方式實現(xiàn)的上位機軟件界面,如圖3所示。

圖3 上位機軟件界面

上位機可以采用無線、串口、USB接口等任何方式與ARM微處理器進(jìn)行通信。上位機首先判斷是否與ARM設(shè)備連接,筆者采用的方法是上位機向微處理器發(fā)送CONNECT宏命令,如果從ARM設(shè)備收到同樣的CONNECT宏命令,則可以判斷ARM設(shè)備與上位機成功連接。之后,上位機自動發(fā)送GET_SERIAL_NUMBER宏命令讓微處理器調(diào)用內(nèi)置函數(shù)讀取芯片全球唯一序列號,并將此序列號發(fā)送給上位機。選擇核心程序?qū)?yīng)的二進(jìn)制文件進(jìn)行加密處理,上位機會調(diào)用AES算法,以芯片全球唯一序列號為密鑰產(chǎn)生經(jīng)過加密的核心程序文件。選擇產(chǎn)生的加密核心程序文件,將分散加載文件中核心程序的加載地址和運行地址分別填入上位機軟件相應(yīng)控件。最后,上位機會把經(jīng)過加密的核心程序文件發(fā)送至ARM設(shè)備中。芯片中預(yù)處理程序接收到加密核心程序后,以在應(yīng)用編程(IAP)方式將經(jīng)過加密的核心程序覆蓋未加密核心程序的加載域。除此之外,發(fā)送加密核心程序的同時,燒寫地址(ROM_CORE_ADDR)、執(zhí)行地址(RAM_RUN_ADDR)以及核心程序代碼大小(CORE_SIZE)三個參數(shù)被一起發(fā)送給ARM設(shè)備,預(yù)處理程序解密時要使用以上三個參數(shù)。核心程序加密流程如圖4所示,執(zhí)行每一步的結(jié)果都會在上位機上得到顯示。

2.3 運行時解密的實現(xiàn)過程

為使此加密方案通用性更強,將與上位機通信的程序和解密程序全部放到預(yù)處理程序部分,只要在ARM程序的起始部分添加預(yù)處理程序,所有ARM系列微處理器都可以應(yīng)用此加密方案。預(yù)處理程序執(zhí)行時,首先檢測ARM設(shè)備是否與上位機相連,如果相連,執(zhí)行與上位機交互相關(guān)程序,如上文提到的接收核心程序密文,以IAP方式覆蓋核心程序加載域明文、ARM序列號發(fā)送等。如果ARM設(shè)備沒有與上位機連接,進(jìn)行運行域解密工作,首先調(diào)用ARM芯片提供的API提取內(nèi)部全球唯一序列號(SERIAL_NUMBER),然后以此為密鑰,對核心程序加載域(ROM_CORE_ADDR)上的程序執(zhí)行AES解密,最后將結(jié)果復(fù)制到核心程序運行域(RAM_RUN_ADDR)。關(guān)鍵程序描述如下:

圖4 核心程序加密流程

采用迭代的方法,每次從核心代碼加載域提取128位,將其解密后復(fù)制到核心代碼運行域,迭代的次數(shù)由核心程序代碼大小決定。無論要解密的核心程序有多大,此方案只需32字節(jié)的額外存儲空間。另外,應(yīng)用ARM處理器特有的32位指令集,可以大幅加快AES解密算法的執(zhí)行速度。將解密后的核心程序復(fù)制到相應(yīng)運行域后,就可以跳轉(zhuǎn)出預(yù)處理程序,執(zhí)行正常的功能程序。運行時解密過程如圖5所示。

3 安全性分析

對嵌入式軟件而言,沒有辦法做到絕對的保密,只能采取合適的加密技術(shù)盡量提高解密成本,只要能使剽竊者望而卻步,就是成功的加密方法[7]。本文提出的基于分散加載的ARM芯片軟件加密方法大大增加了剽竊者破解系統(tǒng)的難度和成本,會使剽竊者感到得不償失而放棄解密,從而有效地保護(hù)開發(fā)者的勞動成果。

圖5 運行時解密過程

本文提出的加密方案較高安全性主要體現(xiàn)在:芯片內(nèi)部序列號的全球唯一性,以及以此序列號為密鑰,應(yīng)用高強度加密算法進(jìn)行加密后存儲器核心程序反匯編完全不可讀。首先,即使黑客通過非法手段將整個芯片程序復(fù)制到另一個同型號的芯片中,由于兩個芯片內(nèi)的全球唯一序列號不同,運行過程中解密得到的程序完全不可運行。其次,即使黑客通過專業(yè)手段,從芯片中得到了程序的二進(jìn)制文件,由于存儲器上核心代碼已經(jīng)經(jīng)過了AES加密,此文件經(jīng)過反匯編是完全不可讀的。

結(jié) 語

本文提出的基于分散加載的ARM芯片軟件加密方案安全易用,克服了其他軟件加密方法不能同時防止代碼拷貝和代碼竊取的不足,避免了外擴硬件加密芯片和加密電路給系統(tǒng)帶來的高成本和復(fù)雜性。筆者已經(jīng)將該方案應(yīng)用于自身開發(fā)的產(chǎn)品中,運行效果良好。本文提出加密方案,可以應(yīng)用于ARM系列所有芯片,在不影響芯片內(nèi)部程序整體功能的情況下,為從事嵌入式產(chǎn)品開發(fā)的技術(shù)人員提供了一種保護(hù)知識成果的有效途徑。

[1] 黃一平,農(nóng)麗萍,蘇檢德,等.ARM微控制器代碼非法復(fù)制技術(shù)研究與應(yīng)用[J] .計算機工程與科學(xué),2011,33(12):17-20.

[2] 李國華.單片機破解方法及加密策略[J] .科技創(chuàng)新導(dǎo)報,2005(5):83-84.

[3] 徐亮.嵌入式加密卡設(shè)計[D] .大連:大連海事大學(xué),2009.

[4] 夏爽.ARM處理器的分散加載及特殊應(yīng)用研究[J] .單片機與嵌入式系統(tǒng)應(yīng)用,2009(4):36-39.

[5] NXP Semiconductors.LPC17xx user manual Rev.2,2010.

[6] 師攀攀.基于多核的AES算法的并行化與實現(xiàn)[D] .鄭州:鄭州大學(xué),2012.

[7] 賈金玲.單片機應(yīng)用系統(tǒng)的加密技術(shù)研究[J] .四川理工學(xué)院學(xué)報,2005,18(3):8-11.

猜你喜歡
程序
給Windows添加程序快速切換欄
電腦愛好者(2020年6期)2020-05-26 09:27:33
試論我國未決羈押程序的立法完善
失能的信仰——走向衰亡的民事訴訟程序
“程序猿”的生活什么樣
英國與歐盟正式啟動“離婚”程序程序
基于VMM的程序行為異常檢測
偵查實驗批準(zhǔn)程序初探
我國刑事速裁程序的構(gòu)建
創(chuàng)衛(wèi)暗訪程序有待改進(jìn)
恐怖犯罪刑事訴訟程序的完善
主站蜘蛛池模板: 热99精品视频| 怡春院欧美一区二区三区免费| 成人永久免费A∨一级在线播放| 久久黄色视频影| 毛片在线看网站| 色婷婷在线播放| 99热这里只有精品免费| 欧美va亚洲va香蕉在线| 国产精品亚洲精品爽爽| 1级黄色毛片| 亚洲精品自拍区在线观看| 久草视频福利在线观看 | 先锋资源久久| 波多野结衣亚洲一区| 40岁成熟女人牲交片免费| 国产在线无码av完整版在线观看| AV老司机AV天堂| 无码人中文字幕| 97久久人人超碰国产精品| 黄色一及毛片| 亚洲日韩Av中文字幕无码| 色呦呦手机在线精品| 亚洲乱码视频| 99久久免费精品特色大片| 国产av一码二码三码无码 | 亚洲精品另类| 亚洲综合精品第一页| 色综合天天综合| 全部免费毛片免费播放| a级毛片网| 国产男人的天堂| 国产在线观看一区精品| 国产成人综合亚洲欧美在| 国产超薄肉色丝袜网站| 亚洲精品国产精品乱码不卞| 人妻夜夜爽天天爽| 一级爱做片免费观看久久 | 欧美一级在线| 久久久久免费精品国产| 看你懂的巨臀中文字幕一区二区 | www精品久久| 久久亚洲美女精品国产精品| 91精品国产自产在线观看| 国产区福利小视频在线观看尤物| 亚洲人妖在线| 国产又粗又爽视频| 一级毛片基地| 国产熟睡乱子伦视频网站| 在线观看欧美国产| 六月婷婷综合| 波多野结衣无码AV在线| 92午夜福利影院一区二区三区| 国产高清又黄又嫩的免费视频网站| 免费看美女毛片| 欧美三级自拍| 欧美一级大片在线观看| 在线欧美国产| a级毛片免费在线观看| 手机永久AV在线播放| 久久a级片| 日本午夜三级| 亚洲swag精品自拍一区| 欧美亚洲激情| 欧美一级高清视频在线播放| 国产午夜人做人免费视频中文| 国产精品护士| 影音先锋丝袜制服| 国产在线小视频| 亚洲综合香蕉| 久久亚洲美女精品国产精品| 美女毛片在线| 国产麻豆精品久久一二三| 国产在线视频福利资源站| 黄色在线不卡| 国产女人在线观看| 香蕉国产精品视频| 日韩欧美中文在线| 久久久国产精品无码专区| 国产成人无码播放| 中国一级特黄视频| 国产香蕉在线| 国产欧美日韩一区二区视频在线|