新四季網

一種嵌入式軟體程序加解密方法

2023-05-02 15:59:26 1

專利名稱:一種嵌入式軟體程序加解密方法
技術領域:
本發明涉及加解密技術,具體涉及一種嵌入式軟體程序加解密方法。
背景技術:
嵌入式產品已經日益普及,尤其是隨著可可攜式電子裝置逐漸盛行,使得其成為 日常生活中不可缺少的一部分。嵌入式軟體程序通常存儲在嵌入式設備的存儲器中(如快閃記憶體FLASH或只讀存儲器 ROM),而非法複製存儲器中的軟體程序也已相當容易。另一方面,很多嵌入式產品都採用相同 或者類似的解決方案,從而造成,部分人應用別人的硬體平臺來燒錄自己的軟體程序進行惡意 刷新,或者從他人嵌入式產品的存儲器中讀取軟體程序來用於自己的硬體平臺進行仿製。在現有技術中,已有的嵌入式軟體程序加密及解密的方法,主要有
1.嵌入式設備在啟動或者運行過程中,通過與一微控制器設備進行數據交互,實現基 於一定加/解密算法的認證過程。此種方法雖然能有效防止惡意刷新和仿製,但是嵌入式 設備與微控制器設備屬於捆綁式關係,從應用角度考慮具有較大的局限性;
2.新增加密裝置,如微狗、軟體狗、密盤、加解密晶片等,依賴新增的加密裝置來實現加 解密過程。此種加解密方法能有效防止惡意刷新和仿製,但嵌入式設備與加密裝置屬於捆 綁式關係,這就意味著一旦加密裝置損壞,那麼嵌入式設備將難以使用,無形中限制了嵌入 式設備的壽命、維護費用和應用推廣,另外新增加密裝置也提高了嵌入式設備成本。況且隨 著仿製技術的推陳出新,對加密裝置提出了更高的要求,更進一步限制了此種加解密方式 的應用推廣;
3.通過將硬體系列號與軟體程序相互綁定的加解密方法。加密時,對嵌入式設備的 硬體系列號進行加密處理,然後移植到軟體程序內;解密時,從軟體程序內解密出嵌入式設 備硬體系列號,並獲取當前嵌入式設備硬體系列號,將兩個系列號兩相比較,相同則解密成 功,否則解密失敗。採用此種方式能極為有效地防止軟體程序被仿製,但是並不是所有的嵌 入式設備都能提取到硬體系列號,故而此種加解密方式存在一定的局限性。同時採用此種 方式,決定了軟體程序與嵌入式設備之間是一對一的關係,故而很難將其應用於防止惡意 刷新上;
4.通過嵌入式設備存儲器壞塊信息實現加解密的方法。加密時,統計嵌入式設備軟體 程序存儲器中的壞塊,生成壞塊信息,並將生成的壞塊信息保存到指定位置;解密時,從指 定位置獲取壞塊信息,並驗證當前嵌入式設備軟體程序存儲器中的實際壞塊是否匹配所述 壞塊信息,匹配則解密成功,反之則解密失敗。此種加解密方式,能有效防止仿製,但難以防 止惡意刷新,且一旦嵌入式設備使用過程中軟體程序存儲器自身產生新的壞塊,那麼就將 直接導致解密失敗,無形中人為地為嵌入式設備的正常運行設置了屏障。

發明內容
本發明需要解決的技術問題是,如何提供一種嵌入式軟體程序加解密方法,能低
3成本、高效靈活地實現防止對軟體程序進行非法惡意刷新或讀取存儲器內的軟體程序進行 仿製。本發明的第一個技術問題這樣解決構建一種嵌入式軟體程序加密方法,包括以 下步驟
從原始軟體程序中隨機抽取數據塊形成抽樣數據szSampVal ; 將所述抽取數據塊的偏移量和大小、值szEncryptHashVal以及有效設備識別 碼範圍VALID_UID,插入原始軟體程序形成加密程序;其中czEncryptHashVal = E(HASH(szSampVal+VALID_UID)), E是加密函數,HASH是哈希函數,+表示綁定。按照本發明提供的加密方法,所述插入是在原始軟體程序頭部、尾部或中間,優選 尾部,這樣無須增加偏移量的插入修正計算。按照本發明提供的加密方法,所述有效設備識別碼範圍包括但不限制於是嵌入式 設備IMEI號段、嵌入式設備入網許可號段、嵌入式設備處理器晶片ID號段、嵌入式設備軟 件程序存儲器ID號段或嵌入式設備隨機存儲器ID號段。按照本發明提供的加密方法,所述綁定包括但不限制於以下三種方式 ㈠ VALID_UID 和 szSampVal 級聯;
㈡將VALID_UID作為szSampVal散列函數HASHO的變換因子; ㈢將VALID_UID和szSampVal等分成相同的份數,再進行內插。按照本發明提供的加密方法,所述插入還包括將擴展標記插入原始軟體程序。本發明的另一個技術問題這樣解決構建一種嵌入式軟體程序解密方法,包括以 下步驟
讀取嵌入式設備識別碼UID ;
若 UID 屬於 VALID_UID 且 D (szEncryptHashVal) = HASH (szSampVal+VALID_UID),解 密成功,否則失敗;其中VALID_UID是從加密程序指定位置讀取的被插入的有效設備識別 碼範圍,DO是解密函數,szEncryptHashVal是從加密程序指定位置讀取的被插入的值, HASHO是哈希函數,szSampVal是根據從加密程序指定位置讀取的被插入的抽取數據塊的 偏移量和大小從加密程序中獲取的數據塊,+表示綁定。按照本發明提供的解密方法,若UID不屬於VALID_UID,解密失敗直接終止。按照本發明提供的解密方法,所述有效設備識別碼範圍包括但不限制於是嵌入式 設備IMEI號段、嵌入式設備入網許可號段、嵌入式設備處理器晶片ID號段、嵌入式設備軟 件程序存儲器ID號段或嵌入式設備隨機存儲器ID號段。按照本發明提供的解密方法,所述指定位置是在加密程序頭部、尾部或中間。按照本發明提供的解密方法,所述綁定包括但不限制於以下三種方式 ㈠ VALID_UID 和 szSampVal 級聯;
㈡將VALID_UID作為szSampVal散列函數HASHO的變換因子; ㈢將VALID_UID和szSampVal等分成相同的份數,再進行內插。按照本發明提供的解密方法,還包括從加密程序指定位置讀取被插入的擴展標 記。本發明提供的嵌入式軟體程序加解密方法,將軟體自身代碼與我方有效設備識別 碼範圍綁定後加密使用,為防仿製和刷新提供基礎,具體來說一方面軟體自身僅解密成功
4才能使用、從而防止被仿製;另一方面我方嵌入式設備弓I導程序(可以是硬體或軟體弓I導程 序)設定僅解密成功才能讀或寫軟體、從而防止被刷新。與現有技術相比,具有以下優勢
1)能有效防止對軟體程序進行非法惡意刷新或讀取存儲器內的軟體程序進行仿製;
2)無需綁定任何外圍設備或添加任何加密裝置,因而無附加成本、靈活性強;
3)所採用加密技術相當成熟、種類繁多;
4)加密軟體程序的hash值而非直接加密軟體程序本身,保證安全性的同時又能有效 校驗數據的完整性;
5)採用隨機抽樣法從軟體程序內隨機抽取數據塊,然後計算所抽取數據塊的hash 值,而非計算整個軟體程序的hash值,保證安全性的同時又不至於過多地影響執行時間。


下面結合附圖和具體實施例進一步對本發明進行詳細說明 圖1是本發明嵌入式軟體程序加密流程示意圖2是本發明嵌入式軟體程序解密流程示意圖。
具體實施例方式首先,說明本發明思路 ㈠防仿製
向嵌入式設備的存儲介質下載嵌入式軟體程序時,執行本發明所述加密流程,將加密 程序下載到嵌入式設備存儲介質內;
嵌入式設備啟動過程中加載存儲介質內的加密程序時,執行本發明所述解密流程,如 果解密成功(即嵌入式設備是我方被授權設備),則繼續啟動,如果解密失敗,則退出啟動 流程。㈡防刷新
我方嵌入式設備將程序下載到我方嵌入式設備存儲介質時,執行本發明所述解密流 程,如果解密成功(即被下載程序是我方被授權加密程序),則將程序下載到存儲介質內, 否則退出下載流程。第二、結合具體實施例進一步說明本發明基礎和核心 (-)加密方法
如圖1所示,包括以下步驟
101)採用隨機抽樣法RandSampMethod從軟體程序software^ode內隨機抽取數據塊 形成抽樣數據 szSampVal,艮口 :szSampVal = RandSampMethod(software_code);
102)綁定嵌入式設備有效識別碼VALID_UID和szSampVal,經過散列函數HASH變換得 hash 值 szHashVal,即szHashVal = HASH(szSampVal, VALID_UID);
103)力口密szHashVal 形成力口密 hash 值 szEncryptHashVal,艮口 :szEncryptHashVal = E(szHashVal);
104)將所抽取數據塊在software_code內的偏移量和大小信息、szEncryptHashVal、 VALID_UID作為加密信息寫到s0ftware_C0de尾部形成加密數據包。㈡解密方法
5如圖2所示,包括以下步驟
201)讀取位於加密程序尾部的加密數據包;
202)讀取當前嵌入式設備識別碼UID,並提取加密數據包內的 嵌入式設備有效識別碼VALID_UID ;
203)判斷UID是否在VALID_UID內?是進入下一步,否則進入步驟209);
204)根據加密數據包內對應偏移量和大小信息,從SOftware_COde內加載數據塊形成 加載數據szSampVal,;
205)綁定VALID_UID和szSampVal,,經過散列函數HASH變換得hash值,艮P szHashVal, = HASH(szSampVal, , VALID_UID);
206)解密加密數據包內加密hash值szEncryptHashVal,即 szHashVal,,= D(szEncryptHashVal);
207)判斷szHashVal,和szHashVal,,是否相等,是進入下一步,否則進入步驟209);
208)解密成功,跳過步驟209);
209)解密失敗,終止程序。第三,結合具體實際應用進一步詳細說明,其中㈠、㈡和㈢可根據不同需求而自行 選定
㈠嵌入式設備有效識別碼範圍VALID_UID
可選用嵌入式設備IMEI號段作為嵌入式設備有效識別碼範圍VALID_ UID,假設MEI號段為01234567890000099999,即嵌入式設備有效IMEI號為 012345678900000 012345678999999,而UID就是當前嵌入式設備IMEI號。此時依據嵌入 式設備IMEI號是否在有效IMEI號段內判定嵌入式設備是否有效。㈡加密信息方式
可創建如下結構體用以保存加密信息, 結構體的結構可為 typedef struct{ int nOffset; int nLength; }TDataPos; typedef struct{
TDataPosarrSignData[D_RAND0M_PART];
BYTEszEncryptHashVal[D_SIGN_SIZE];
BYTEszValidUid[D_VALID_UID_SIZE];
BYTEszReserver[D_RESERVER_SIZE];
}TBlEncryptInfo,氺PTBlEncryptInfo; 結構體內,arrSignData []用以保存步驟101)所得每一數據塊在軟體程序內 的偏移量和大小信息;szEncryptHashVal □用以保存步驟103)所得加密hash值 szEncryptHashVal ;szValidUid[]用以保存嵌入式設備有效識別碼VALID_UID ; szReserver []用以保存擴展標記,擴展標記可被修改,並可預設為不同的功能,若擴展標記 未被預設為特定功能,則擴展標記值可全為0。
6
㈢具體函數
1)選用等距抽樣法作為RandSampMethod,將軟體程序η等分,從每一等分首部提取m byte大小數據塊,η和m可由隨機數產生器產生;
2)選用HMAC_SHA1作為散列函數,同時選擇VALID_UID作為sζ Samp Val散列函數HASH 變換因子。此時綁定VALID_UID和szSampVal,經過散列函數HASH變換得hash值szHashVal 可由下式實現,
HMAC_SHA1(szSampVal, nSampValLen, VALID_UID, nValidUidLen, szHashVal) 其中,nSampValLen表示抽樣數據長度、nValidUidLen表示嵌入式設備有效識別碼長 度、szHashVal用以保存計算所得hash值。㈣防仿製過程
將本發明所述加解密流程應用於嵌入式設備啟動過程,實現防止讀取存儲器內的軟體 程序進行仿製,具體通過如下步驟實現
1)向嵌入式設備的存儲介質下載嵌入式軟體程序時,執行本發明所述加密流程,將加 密後的軟體程序下載到嵌入式設備存儲介質內;
2)嵌入式設備啟動過程加載存儲介質內加密後的軟體程序時,執行本發明所述解密 流程,如果解密成功,則從存儲介質內加載軟體程序繼續啟動,如果解密失敗,則退出啟動 流程。㈤防刷新過程
本實施例將本發明所述加解密流程應用於嵌入式軟體程序下載過程,實現防止對軟體 程序進行非法惡意刷新,具體通過如下步驟實現
1)通過一微處理器MPU設備,比如計算機PC,根據本發明所述加密流程加密嵌入式軟 件程序;
2)將加密後的軟體程序發送到嵌入式設備;
3)嵌入式設備將加密後的軟體程序下載到嵌入式設備存儲介質時,執行本發明所述 解密流程,如果解密成功,則將軟體程序下載到存儲介質內,如果解密失敗,則退出下載流程。以上所述僅為本發明的較佳實施例,凡依本發明權利要求範圍所做的均等變化與 修飾,皆應屬本發明權利要求的涵蓋範圍。
權利要求
一種嵌入式軟體程序加密方法,其特徵在於,包括以下步驟從原始軟體程序中隨機抽取數據塊形成抽樣數據szSampVal;將所述抽取數據塊的偏移量和大小、值szEncryptHashVal以及有效設備識別碼範圍VALID_UID,插入原始軟體程序形成加密程序;其中szEncryptHashVal = E(HASH(szSampVal+VALID_UID)),E是加密函數,HASH是哈希函數,+表示綁定。
2.根據權利要求1所述加密方法,其特徵在於,所述插入是在原始軟體程序頭部、尾部 或中間。
3.根據權利要求1所述加密方法,其特徵在於,所述有效設備識別碼範圍是嵌入式設 備IMEI號段、嵌入式設備入網許可號段、嵌入式設備處理器晶片ID號段、嵌入式設備軟體 程序存儲器ID號段或嵌入式設備隨機存儲器ID號段。
4.根據權利要求1所述加密方法,其特徵在於,所述綁定是VALID_UID和szSampVal級聯。
5.根據權利要求1所述加密方法,其特徵在於,所述綁定是將VALID_UID作為 szSampVal散列函數HASHO的變換因子。
6.根據權利要求1所述加密方法,其特徵在於,所述綁定是將VALID_UID和szSampVal 等分成相同的份數,再進行內插。
7.根據權利要求1所述加密方法,其特徵在於,所述插入還包括將擴展標記插入原始 軟體程序。
8.一種嵌入式軟體程序解密方法,其特徵在於,包括以下步驟讀取嵌入式設備識別碼UID ;若 UID 屬於 VALID_UID 且 D (szEncryptHashVal) = HASH (szSampVal+VALID_UID),解 密成功,否則失敗;其中VALID_UID是從加密程序指定位置讀取的被插入的有效設備識別 碼範圍,DO是解密函數,szEncryptHashVal是從加密程序指定位置讀取的被插入的值, HASHO是哈希函數,szSampVal是根據從加密程序指定位置讀取的被插入的抽取數據塊的 偏移量和大小從加密程序中獲取的數據塊,+表示綁定。
9.根據權利要求8所述解密方法,其特徵在於,若UID不屬於VALID_UID,解密失敗直 接終止。
10.根據權利要求8所述解密方法,其特徵在於,所述有效設備識別碼範圍是嵌入式設 備IMEI號段、嵌入式設備入網許可號段、嵌入式設備處理器晶片ID號段、嵌入式設備軟體 程序存儲器ID號段或嵌入式設備隨機存儲器ID號段。
全文摘要
本發明涉及一種嵌入式軟體程序加解密方法,其中加密方法包括從原始軟體程序中隨機抽取數據塊形成抽樣數據szSampVal;將所述抽取數據塊的偏移量和大小、szEncryptHashVal以及有效設備識別碼範圍VALID_UID,插入原始軟體程序形成加密程序;解密方法包括讀取嵌入式設備識別碼UID;若UID屬於VALID_UID且D(szEncryptHashVal)=HASH(szSampVal+VALID_UID),解密成功,否則失敗。這種嵌入式軟體程序加解密方法,將代碼與有效設備識別碼範圍綁定後加密使用,為防仿製和刷新提供基礎。
文檔編號G06F21/22GK101950344SQ201010289028
公開日2011年1月19日 申請日期2010年9月21日 優先權日2010年9月21日
發明者林進全 申請人:廣東歐珀移動通信有限公司

同类文章

一種新型多功能組合攝影箱的製作方法

一種新型多功能組合攝影箱的製作方法【專利摘要】本實用新型公開了一種新型多功能組合攝影箱,包括敞開式箱體和前攝影蓋,在箱體頂部設有移動式光源盒,在箱體底部設有LED脫影板,LED脫影板放置在底板上;移動式光源盒包括上蓋,上蓋內設有光源,上蓋部設有磨沙透光片,磨沙透光片將光源封閉在上蓋內;所述LED脫影

壓縮模式圖樣重疊檢測方法與裝置與流程

本發明涉及通信領域,特別涉及一種壓縮模式圖樣重疊檢測方法與裝置。背景技術:在寬帶碼分多址(WCDMA,WidebandCodeDivisionMultipleAccess)系統頻分復用(FDD,FrequencyDivisionDuplex)模式下,為了進行異頻硬切換、FDD到時分復用(TDD,Ti

個性化檯曆的製作方法

專利名稱::個性化檯曆的製作方法技術領域::本實用新型涉及一種檯曆,尤其涉及一種既顯示月曆、又能插入照片的個性化檯曆,屬於生活文化藝術用品領域。背景技術::公知的立式檯曆每頁皆由月曆和畫面兩部分構成,這兩部分都是事先印刷好,固定而不能更換的。畫面或為風景,或為模特、明星。功能單一局限性較大。特別是畫

一種實現縮放的視頻解碼方法

專利名稱:一種實現縮放的視頻解碼方法技術領域:本發明涉及視頻信號處理領域,特別是一種實現縮放的視頻解碼方法。背景技術: Mpeg標準是由運動圖像專家組(Moving Picture Expert Group,MPEG)開發的用於視頻和音頻壓縮的一系列演進的標準。按照Mpeg標準,視頻圖像壓縮編碼後包

基於加熱模壓的纖維增強PBT複合材料成型工藝的製作方法

本發明涉及一種基於加熱模壓的纖維增強pbt複合材料成型工藝。背景技術:熱塑性複合材料與傳統熱固性複合材料相比其具有較好的韌性和抗衝擊性能,此外其還具有可回收利用等優點。熱塑性塑料在液態時流動能力差,使得其與纖維結合浸潤困難。環狀對苯二甲酸丁二醇酯(cbt)是一種環狀預聚物,該材料力學性能差不適合做纖

一種pe滾塑儲槽的製作方法

專利名稱:一種pe滾塑儲槽的製作方法技術領域:一種PE滾塑儲槽一、 技術領域 本實用新型涉及一種PE滾塑儲槽,主要用於化工、染料、醫藥、農藥、冶金、稀土、機械、電子、電力、環保、紡織、釀造、釀造、食品、給水、排水等行業儲存液體使用。二、 背景技術 目前,化工液體耐腐蝕貯運設備,普遍使用傳統的玻璃鋼容

釘的製作方法

專利名稱:釘的製作方法技術領域:本實用新型涉及一種釘,尤其涉及一種可提供方便拔除的鐵(鋼)釘。背景技術:考慮到廢木材回收後再加工利用作業的方便性與安全性,根據環保規定,廢木材的回收是必須將釘於廢木材上的鐵(鋼)釘拔除。如圖1、圖2所示,目前用以釘入木材的鐵(鋼)釘10主要是在一釘體11的一端形成一尖

直流氧噴裝置的製作方法

專利名稱:直流氧噴裝置的製作方法技術領域:本實用新型涉及ー種醫療器械,具體地說是ー種直流氧噴裝置。背景技術:臨床上的放療過程極易造成患者的局部皮膚損傷和炎症,被稱為「放射性皮炎」。目前對於放射性皮炎的主要治療措施是塗抹藥膏,而放射性皮炎患者多伴有局部疼痛,對於止痛,多是通過ロ服或靜脈注射進行止痛治療

新型熱網閥門操作手輪的製作方法

專利名稱:新型熱網閥門操作手輪的製作方法技術領域:新型熱網閥門操作手輪技術領域:本實用新型涉及一種新型熱網閥門操作手輪,屬於機械領域。背景技術::閥門作為流體控制裝置應用廣泛,手輪傳動的閥門使用比例佔90%以上。國家標準中提及手輪所起作用為傳動功能,不作為閥門的運輸、起吊裝置,不承受軸向力。現有閥門

用來自動讀取管狀容器所載識別碼的裝置的製作方法

專利名稱:用來自動讀取管狀容器所載識別碼的裝置的製作方法背景技術:1-本發明所屬領域本發明涉及一種用來自動讀取管狀容器所載識別碼的裝置,其中的管狀容器被放在循環於配送鏈上的文檔匣或託架裝置中。本發明特別適用於,然而並非僅僅專用於,對引入自動分析系統的血液樣本試管之類的自動識別。本發明還涉及專為實現讀