国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      一種帶有片上閃存微控制器的固件保護單元及保護方法與流程

      文檔序號:12125432閱讀:473來源:國知局

      本發(fā)明涉及通訊設(shè)備技術(shù),尤其涉及一種帶有片上閃存微控制器的固件保護單元及保護方法。



      背景技術(shù):

      當一款通訊設(shè)備成功研發(fā)上市、熱銷,此時往往存在一個隱患:不法商家直接抄襲硬件設(shè)計,并盜用已發(fā)布的固件,迅速推出盜版克隆仿造產(chǎn)品,從而導致研發(fā)此設(shè)備的公司的利益受到損害;尤其對于核心技術(shù)是軟件的產(chǎn)品,其硬件的仿造難度不高,盜版方只要獲取了固件的二進制文件,就可快速大范圍的仿造,因此,必須對固件進行管控,一般管控通過下述兩方向進行:第一,無法從公開渠道獲得固件的二進制文件,第二,無法從設(shè)備直接讀取還原固件的二進制文件;但是,在移動互聯(lián)網(wǎng)普及盛行的時代,軟件開發(fā)的迭代周期大大縮短、用戶互動參與反饋的習慣已經(jīng)養(yǎng)成,因而,用戶經(jīng)常會通過刷新固件,來獲取、體驗增值服務(wù),但上述的管控措施,無法對合法用戶開放固件獲取渠道,導致用戶體驗的下降。



      技術(shù)實現(xiàn)要素:

      為解決上述問題,本發(fā)明提出了一種帶有片上閃存微控制器的固件保護單元及保護方法,允許公開固件的二進制文件,與合法用戶保持互動,且軟件資源消耗小、盜版克隆難度高,可有效保護原創(chuàng)方的利益。

      本發(fā)明的微控制器的固件保護單元,包括公開發(fā)布的固件包和Bootloader;公開的固件包由加密指導區(qū)塊和加密后的固件組成;所述加密指導區(qū)塊包括固件的加密局部區(qū)域的信息,其包括偏移量和長度,用于解密時定位出密文區(qū)域;還包括一個16字節(jié)的隨機數(shù),用于產(chǎn)生實際的工作密鑰;所述工作密鑰加密算法采用AES128,工作密鑰的計算方法為:用主密鑰對16字節(jié)的隨機數(shù)進行AES128-ECB模式加密運算,密文結(jié)果為實際使用的工作密鑰。

      進一步地,所述加密局部區(qū)域為敏感的關(guān)鍵代碼區(qū)域。

      一種微控制器的固件保護方法,所述方法具體如下:

      首先通過對固件局部進行加密,每次加密使用不同的密鑰加密,而后啟動加載程序Bootloader,實行一機一識別碼啟動、升級解密固件、將固件存儲在安全存儲區(qū)域完成。

      進一步地,所述對固件局部進行加密具體如下:

      將固件加密主密鑰存儲在安全存儲區(qū)域內(nèi),對于帶有片上閃存的MCU,禁止掉調(diào)試口的訪問片上閃存的通道,使片上閃存成為安全存儲區(qū)域,然后將主密鑰存儲在片上閃存內(nèi);固件加密時,采用局部區(qū)域加密,可指定任意區(qū)域;固件加密時,采用工作密鑰加密,每次加密使用不同的密鑰加密,另外,即使固件不變,每次發(fā)布時,固件加密結(jié)果仍會不一致;而公開發(fā)布的固件包,不包括Bootloader,但需要包括一個加密指導區(qū)塊,用于告知加密的局部區(qū)域,以及輔助產(chǎn)生實際的工作密鑰。

      進一步地,所述啟動加載程序Bootloader具體如下:

      Bootloader存儲于安全存儲區(qū)域內(nèi),即片上閃存內(nèi),此時引入MCU的芯片唯一識別碼UID檢測機制,實現(xiàn)一機一識別碼啟動;工廠燒錄Bootloader時,Bootloader將會讀取實際MCU的UID,寫入Bootloader內(nèi)部指定的存儲地址,此時存儲后的UID成為Bootloader自身的一部分;開機啟動時,Bootloader從指定的存儲地址,讀取出UID,與實際MCU的UID進行比較,一致則繼續(xù)啟動,不一致則鎖死Bootloader;而當升級時,Bootloader根據(jù)加密指導區(qū)塊,即可產(chǎn)生實際的工作密鑰,正確解密局部區(qū)域,從而將固件完整還原,存儲在安全存儲區(qū)域內(nèi)。

      本發(fā)明與現(xiàn)有技術(shù)相比較,本發(fā)明的帶有片上閃存微控制器的固件保護單元及保護方法,可指定任意區(qū)域的局部加密,有效降低加解密的軟件資源開銷;一次一密的加密,可有效保護主密鑰,每次加密的密鑰均不一樣,提高破解的難度;固件和Bootloader本身存儲在安全存儲區(qū),具備一定的破解難度,而Bootloader的一機一碼啟動,又提高破解的難度,假如片上閃存被暴力破解,從而被讀取出完整的二進制文件,但此時該二進制文件內(nèi)的Bootloader,會因為UID檢測不通過,仍無法直接運行在仿造的設(shè)備上;相應(yīng)的,盜版方無法輕易獲取密鑰,無法解密固件,因此,固件允許被公開發(fā)布,可與用戶保持良好的互動。

      附圖說明

      圖1是本發(fā)明的整體結(jié)構(gòu)示意圖。

      具體實施方式

      如圖1所示,本發(fā)明的微控制器的固件保護單元,包括公開發(fā)布的固件包和Bootloader;公開的固件包由加密指導區(qū)塊和加密后的固件組成;所述加密指導區(qū)塊包括固件的加密局部區(qū)域的信息,其包括偏移量和長度,用于解密時定位出密文區(qū)域;還包括一個16字節(jié)的隨機數(shù),用于產(chǎn)生實際的工作密鑰。

      進一步地,所述固件其加密算法采用AES128,工作密鑰的計算方法為:用主密鑰對16字節(jié)的隨機數(shù)進行AES128-ECB模式加密運算,密文結(jié)果為實際使用的工作密鑰。

      進一步地,所述加密局部區(qū)域為敏感的關(guān)鍵代碼區(qū)域;使得如果沒有解密,程序就無法正確啟動、運行,對于RTOS系統(tǒng)而言,可選擇操作系統(tǒng)的時間基準處理函數(shù)入手,例如,對于新一代的ARM Cortex-M系列平臺產(chǎn)品而言,優(yōu)選地,只需將前面64字節(jié)加密掉,這部分包括ARM Cortex-M最核心、關(guān)鍵的部分,其中就有RTOS的時間基準處理函數(shù)SysTick_Handler的入口地址。

      一種微控制器的固件保護方法,所述方法具體如下:

      首先通過對固件局部進行加密,每次加密使用不同的密鑰加密,而后啟動加載程序Bootloader,實行一機一識別碼啟動、升級解密固件、將固件存儲在安全存儲區(qū)域完成。

      實施例1:

      首先,將固件加密主密鑰存儲在安全存儲區(qū)域內(nèi),對于帶有片上閃存的MCU,禁止掉調(diào)試口的訪問片上閃存的通道,使片上閃存成為安全存儲區(qū)域,然后將主密鑰存儲在片上閃存內(nèi);固件加密時,采用局部區(qū)域加密,可指定任意區(qū)域;固件加密時,采用工作密鑰加密,每次加密使用不同的密鑰加密,另外,即使固件不變,每次發(fā)布時,固件加密結(jié)果仍會不一致;而公開發(fā)布的固件包,不包括Bootloader,但需要包括一個加密指導區(qū)塊,用于告知加密的局部區(qū)域,以及輔助產(chǎn)生實際的工作密鑰。

      其次,Bootloader存儲于安全存儲區(qū)域內(nèi),即片上閃存內(nèi),此時引入MCU的芯片唯一識別碼UID檢測機制,實現(xiàn)一機一識別碼啟動;工廠燒錄Bootloader時,Bootloader將會讀取實際MCU的UID,寫入Bootloader內(nèi)部指定的存儲地址,此時存儲后的UID成為Bootloader自身的一部分;開機啟動時,Bootloader從指定的存儲地址,讀取出UID,與實際MCU的UID進行比較,一致則繼續(xù)啟動,不一致則鎖死Bootloader;而當升級時,Bootloader根據(jù)加密指導區(qū)塊,即可產(chǎn)生實際的工作密鑰,正確解密局部區(qū)域,從而將固件完整還原,存儲在安全存儲區(qū)域內(nèi)。

      當設(shè)備的一個軟件開發(fā)周期完成時,用工作密鑰,對加密局部區(qū)域執(zhí)行AES128的加密,實現(xiàn)一次一密、局部加密,而后打包固件、公開發(fā)布到外部環(huán)境;公開發(fā)布的固件包的安全環(huán)境完成搭建。

      將上述主密鑰和UID存儲在Bootloader內(nèi)部,在工廠生產(chǎn)階段,主密鑰隨Bootloader一塊被燒錄到MCU的片上閃存,UID則在MCU第一次上電時,自動讀取而后寫入;同時工廠燒錄Bootloader時,將MCU的硬件安全等級提高,禁止掉任何外部接口的訪問片上閃存的通道,例如調(diào)試口,使得無法從外部輕易讀取到片上閃存的數(shù)據(jù);后續(xù)開機啟動時,Bootloader都會執(zhí)行一機一碼的檢測,如果MCU的UID,與Bootloader所存儲的UID不一致的話,則鎖死MCU,不再繼續(xù)往下執(zhí)行;升級刷機(刷新固件)時,Bootloader首先獲取加密指導區(qū)塊,獲得加密的區(qū)域信息,以及隨機數(shù),并計算出實際的AES128工作密鑰;其次接收后續(xù)的固件程序,并實時根據(jù)加密區(qū)域信息做出響應(yīng),當固件程序落在這一區(qū)域內(nèi),則需要進行AES128-ECB模式的解密還原;最終將整個固件程序完整還原,存儲在片上閃存。

      本發(fā)明與現(xiàn)有技術(shù)相比較,本發(fā)明的微控制器的固件保護方法,可指定任意區(qū)域的局部加密,有效降低加解密的軟件資源開銷;一次一密的加密,可有效保護主密鑰,每次加密的密鑰均不一樣,提高破解的難度;固件和Bootloader本身存儲在安全存儲區(qū),具備一定的破解難度,而Bootloader的一機一碼啟動,又提高破解的難度,假如片上閃存被暴力破解,從而被讀取出完整的二進制文件,但此時該二進制文件內(nèi)的Bootloader,會因為UID檢測不通過,仍無法直接運行在仿造的設(shè)備上;相應(yīng)的,盜版方無法輕易獲取密鑰,無法解密固件,因此,固件允許被公開發(fā)布,可與用戶保持良好的互動。

      以上述依據(jù)本發(fā)明的理想實施例為啟示,通過上述的說明內(nèi)容,相關(guān)工作人員完全可以在不偏離本項發(fā)明技術(shù)思想的范圍內(nèi),進行多樣的變更以及修改。本項發(fā)明的技術(shù)性范圍并不局限于說明書上的內(nèi)容,必須要根據(jù)權(quán)利要求范圍來確定其技術(shù)性范圍。

      當前第1頁1 2 3 
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點贊!
      1