專利名稱:二次開發(fā)嵌入式應用程序的加密和認證保護的方法及系統(tǒng)的制作方法
技術領域:
本發(fā)明涉及軟件加密技術領域,尤其涉及一種二次開發(fā)嵌入式應用程序的加密和認證保護的方法及系統(tǒng)。
背景技術:
隨著電子信息技術的發(fā)展,嵌入式設備已廣泛應用到工業(yè)、農(nóng)業(yè)、教育、國防、科研以及日常生活等各個領域。嵌入式系統(tǒng)是軟件和硬件的綜合體,是一種以應用為中心、以計算機技術為基礎,軟、硬件都具有可裁剪性的專用“計算機”系統(tǒng)。廠商在進行嵌入式設備開發(fā)時,考慮到功能需求、系統(tǒng)成本、硬件尺寸大小等方面的因素,嵌入式系統(tǒng)的硬件配置方面都會受到一定的限制。嵌入式設備雖然在各個行業(yè)的電子信息化中發(fā)揮了巨大的作用,但是行業(yè)內部以及跨行業(yè)的應用中,行業(yè)應用的功能需求各不相同,導致嵌入式設備供應商會根據(jù)行業(yè)要求進行功能定制,因此基于嵌入式設備的二次開發(fā)方式也越來越流行。嵌 入式的二次開發(fā)是在已有的軟硬件基礎上,利用系統(tǒng)程序提供的系統(tǒng)接口進行再開發(fā)程序的方法。由于嵌入式軟件的開發(fā)成本高、研發(fā)周期長,設計者都會關心其關鍵代碼或重要數(shù)據(jù)的保密性。保護嵌入式系統(tǒng)的科研成果除了采用法律手段保護知識產(chǎn)權外,另一個更加簡單有效的方法就是采用加密存儲軟件的保護方式。常用的加密手段可分為兩大類硬加密和軟加密。所謂硬加密就是通過硬件和軟件結合的方式來實現(xiàn)軟件的加密,加密后的軟件執(zhí)行時需要訪問相應的硬件,如硬件裝置額外增加加密芯片或者增加擴展接口接入加密卡、軟件鎖等。硬加密方法加密強度高,但有一定局限性,主要是成本高,另外需要增加硬件電路,使得系統(tǒng)維護性相對較差。軟加密則是用純軟件的方法來實現(xiàn)加密。目前常用的方法通過加密算法對軟件進行加密存儲。此種方法具有成本低、升級快、易推廣的優(yōu)勢。在硬件資源受限的嵌入式系統(tǒng)中,尤其是基于二次開發(fā)嵌入式軟件的設備中,想要實現(xiàn)對軟件進行加密處理,需要設計一種優(yōu)秀的加密處理方案。現(xiàn)有的各種加密方案中,對于資源受限的嵌入式系統(tǒng)來說都存在明顯的限制,例如需要額外增加加密芯片。盡管一些芯片的Flash ROM有讀寫保護的功能,可以防止外部工具非法訪問,但是在嵌入式設備出廠后,由于軟件升級或者處理軟件缺陷等原因,需要對軟件進行升級維護。對于需要及時解決嵌入式設備升級軟件問題的情況,廠商一般需要將軟件交付給用戶進行升級,因此會帶來軟件的安全性問題。目前對于這類硬件資源受限、支持二次開發(fā)的嵌入式設備還沒有較好的加密方案解決二次開發(fā)嵌入式軟件升級的安全性問題。
發(fā)明內容
本發(fā)明要解決的技術問題在于針對現(xiàn)有技術中針對硬件資源受限、支持二次開發(fā)的嵌入式設備還沒有較好的加密方案解決嵌入式設備中二次開發(fā)嵌入式軟件的安全性問題的缺陷,提供一種可以有效解決嵌入式設備中二次開發(fā)嵌入式軟件的安全性問題的二次開發(fā)嵌入式軟件的加密和認證保護方法及系統(tǒng)。
本發(fā)明解決其技術問題所采用的技術方案是提供一種二次開發(fā)的嵌入式應用程序的加密和認證保護的方法,其特征在于,包括以下步驟主設備向嵌入式設備發(fā)送請求下載數(shù)據(jù)的請求信息;嵌入式設備接收請求信息并向主設備反饋應答信息;主設備向嵌入式設備下載數(shù)據(jù),數(shù)據(jù)包括認證碼、密鑰及加密的應用程序;嵌入式設備接收和存儲請求數(shù)據(jù)至存儲模塊中,并用接收的密鑰進行解密以固化應用程序;
嵌入式設備啟動應用程序,并接收用戶輸入的待校驗的認證碼;嵌入式設備獲取存儲模塊中存儲的認證碼,并驗證待校驗的認證碼,若驗證通過,則運行應用程序,否則終止運行應用程序。本發(fā)明所述的方法中,還包括步驟當嵌入式設備的存儲模塊被外部工具非法訪問時,則清除存儲模塊中的全部數(shù)據(jù)。本發(fā)明所述的方法中,步驟嵌入式設備存儲請求數(shù)據(jù)至存儲模塊中具體包括將密鑰散列地存儲在存儲模塊的空余空間上;本發(fā)明所述的方法中,步驟嵌入式設備存儲請求數(shù)據(jù)至存儲模塊中具體包括將認證碼散列地存儲在存儲模塊的空余空間上。本發(fā)明所述的方法中,主設備通過數(shù)據(jù)加密標準DES、國際數(shù)據(jù)加密算法IDEA、MD5算法或者高級加密標準AES對應用程序進行加密。本發(fā)明所述的方法中,嵌入式設備在運行應用程序時,至少進行一次認證碼校驗。本發(fā)明所述的方法中,若用戶輸入錯誤的驗證碼次數(shù)超過預設次數(shù),則在預先設定的時間內禁止再次運行應用程序。本發(fā)明解決其技術問題所采用的另一技術方案是提供一種二次開發(fā)的嵌入式應用程序的加密和認證保護的系統(tǒng),其特征在于,包括嵌入式設備和主設備,嵌入式設備與主設備通信連接,其中,主設備包括請求模塊,用于向嵌入式設備發(fā)送請求信息;加密模塊,用于對嵌入式的應用程序進行加密;下載模塊,用于下載數(shù)據(jù)至嵌入式設備中,數(shù)據(jù)包括認證碼、密鑰及加密的應用程序;嵌入式設備包括接收應答模塊,用于接收主設備發(fā)送請求信息并反饋應答信息;解密模塊,用于根據(jù)接收的數(shù)據(jù)中的密鑰進行解密;存儲模塊,用于存儲認證碼、密鑰以及固化應用程序;認證碼校驗模塊,用于在啟動應用程序時,接收用戶輸入的待校驗的認證碼,并獲取存儲模塊中存儲的認證碼,驗證待校驗的認證碼,若驗證通過,則運行應用程序,否則終止運行應用程序。本發(fā)明所述的系統(tǒng)中,嵌入式設備還包括
控制模塊,用于當嵌入式設備的存儲模塊被外部工具非法訪問時,則清除存儲模塊中的全部數(shù)據(jù)。本發(fā)明所述的系統(tǒng)中,存儲模塊還用于將密鑰和認證碼和散列地存儲在存儲模塊的空余空間上。本發(fā)明產(chǎn)生的有益效果是本發(fā)明中嵌入式設備通過請求接收主設備發(fā)送的包括認證碼、密鑰及加密的應用程序的請求數(shù)據(jù),并利用密鑰對應用程序進行解密并固化應用程序,在嵌入式設備啟動應用程序后接收用戶輸入的待校驗的認證碼;嵌入式設備利用存儲模塊中存儲的認證碼對待校驗的認證碼進行驗證,若驗證通過,則運行應用程序,否則終止運行應用程序。本發(fā)明適用于在硬件資源受限的嵌入式系統(tǒng)中,不用增加額外的硬件,就提高了嵌入式設備二次開發(fā)軟件的安全性。進一步地,本發(fā)明在嵌入式設備的存儲模塊被外部工具非法訪問時,則清除存儲模塊中的全部數(shù)據(jù),實現(xiàn)了對存儲模塊的安全訪問。
下面將結合附圖及實施例對本發(fā)明作進一步說明,附圖中圖I為本發(fā)明實施例二次開發(fā)的嵌入式應用程序的加密和認證保護的方法;圖2為本發(fā)明另一實施例基于嵌入式系統(tǒng)的二次開發(fā)軟件結構示意圖;圖3為本發(fā)明另一實施例微處理器的Flash ROM存儲結構示意圖;圖4為本發(fā)明另一實施例主設備的加密流程示意圖;圖5為本發(fā)明另一實施例嵌入式設備的解密流程示意圖;圖6為二次開發(fā)程序認證碼校驗流程圖;圖7為本發(fā)明另一實施例主設備與嵌入式設備之間的升級握手協(xié)議流程圖;圖8為本發(fā)明實施例二次開發(fā)的嵌入式應用程序的加密和認證保護的系統(tǒng)。
具體實施例方式為了使本發(fā)明的目的、技術方案及優(yōu)點更加清楚明白,以下結合附圖及實施例,對本發(fā)明進行進一步詳細說明。應當理解,此處所描述的具體實施例僅用以解釋本發(fā)明,并不用于限定本發(fā)明。本發(fā)明實施例嵌入式系統(tǒng)中二次開發(fā)的嵌入式應用程序的加密和認證保護的方法,如圖I所示,包括以下步驟S101、主設備向嵌入式設備發(fā)送請求下載數(shù)據(jù)的信息;S102、嵌入式設備接收請求信息并向主設備反饋應答信息;S103、主設備向嵌入式設備下載數(shù)據(jù),數(shù)據(jù)包括認證碼、密鑰及加密的應用程序;S104、嵌入式設備接收認證碼和密鑰并保存到存儲模塊中,并用接收的密鑰進行解密以固化應用程序;在本發(fā)明的一個實施例中,步驟S104中嵌入式設備存儲請求數(shù)據(jù)至存儲模塊中具體包括將密鑰散列地存儲在存儲模塊的空余空間上;也可以將認證碼散列地存儲在存儲模塊的空余空間上。S105、嵌入式設備啟動應用程序,并接收用戶輸入的待校驗的認證碼;
S106、嵌入式設備獲取存儲模塊中存儲的認證碼;若認證碼被散列地存儲在存儲模塊的空余空間上,則此時嵌入式設備需要將散列的認證碼進行整合。S107、嵌入式設備驗證待校驗的認證碼;即用獲取的存儲模塊中的認證碼來驗證用戶輸入的待校驗的認證碼。S108、若驗證通過,則運行應用程序;S109、若驗證未通過,則終止運行應用程序。本發(fā)明的方法不用增加額外的硬件成本,就可以提高二次開發(fā)嵌入式程序的保密性,尤其適用于在硬件資源受限的嵌入式系統(tǒng)中。本發(fā)明的一個實施例中,為了防止外部工具非法訪問嵌入式設備的存儲模塊的數(shù)據(jù),上述方法還包括步驟當嵌入式設備的存儲模塊被外部工具非法訪問時,則清除存儲模塊中的全部數(shù) 據(jù)。嵌入式系統(tǒng)選用可置讀寫保護的微處理器,存儲模塊為微處理器中的Flash ROM,當外部工具企圖清除讀寫保護功能時,微處理器將擦除Flash ROM的全部數(shù)據(jù),實現(xiàn)了Flash ROM的安全訪問。在本發(fā)明的一個實施例中,主設備可優(yōu)先選用公共算法,包括數(shù)據(jù)加密標準DES、國際數(shù)據(jù)加密算法IDEA、MD5算法或者高級加密標準AES等對應用程序進行加密。進一步地,在本發(fā)明的一個實施例中,嵌入式設備在運行應用程序時,至少進行一次認證碼校驗。進一步地,在上述實施例的基礎上,若用戶輸入錯誤的驗證碼次數(shù)超過預設次數(shù),則在預先設定的時間內禁止再次運行應用程序。如對待校驗的認證碼校驗次數(shù)限制為3次或者5次,如果超過設定的次數(shù),則24小時(或者其他設定時間)之內禁止用戶再次運行應用程序,以防止惡意地進行無限次試探,盜取應用程序的認證碼。本發(fā)明的另一實施例中,嵌入式系統(tǒng)選用可置讀寫保護Flash ROM的微處理器。如圖2所示,基于嵌入式系統(tǒng)的二次開發(fā)軟件結構包含Bootloader、系統(tǒng)程序和應用程序,并固化存儲到Flash Rom中。Bootloader固化在Flash ROM存儲器中的地址前端部分,是嵌入式設備上電啟動的程序,當系統(tǒng)上電時會首先運行,起到初始化基本硬件(包括完成微處理器的讀寫保護的置位的操作)和引導系統(tǒng)程序的雙重作用。Bootloader、系統(tǒng)程序與應用程序是相互分離的,Bootloader和系統(tǒng)程序由專業(yè)的開發(fā)工具開發(fā),并預先下載在嵌入式設備上。系統(tǒng)程序根據(jù)外部指令進入下載狀態(tài),接收密鑰Key、認證碼Code和密文文件(SP加密的應用程序)解密和存儲。應用程序為基于已有的系統(tǒng)程序提供的二次開發(fā)系統(tǒng)接口開發(fā)的程序,在本實施例中,可為軟件升級程序。如圖3所示,微處理器的Flash ROM存儲結構包含Bootloader、系統(tǒng)程序,應用程序以及密鑰Key和認證碼Code。進一步的,微處理器選用可置讀寫保護Flash ROM的,F(xiàn)lash ROM的內容只能通過內部程序進行訪問。當惡意清除讀寫保護功能時,微處理器將擦除Flash ROM的全部內容;進一步的,密鑰Key和認證碼Code散列存儲在Flash ROM的空余空間上;系統(tǒng)程序通過散列規(guī)則獲取散列存放的密鑰和認證碼,并組合成整體。如圖4所示,該實施例中,主設備的加密流程是
I、在主設備上運行二次開發(fā)平臺進行代碼的編寫,最后編譯生成可執(zhí)行程序。2、在主設備上運行加密工具軟件,輸入密鑰Key,對可執(zhí)行程序進行加密,生成密文文件;在本發(fā)明實施例中,可執(zhí)行程序為可給嵌入式設備升級的可執(zhí)行程序。加密工具可選用DES算法,密鑰Key長度最長為8Bytes。3、主設備上輸出密文文件。如圖5所示,該實施例中,嵌入式設備的解密流程是嵌入式設備通過接口模塊建立與主設備的連接,嵌入式設備執(zhí)行系統(tǒng)程序,進入下載狀態(tài);主設備運行下載工具,嵌入式設備預先下載認證碼Code,密鑰Key ;主設備運行下載工具,發(fā)送密文文件到嵌入式設備,嵌入式設備接收數(shù)據(jù)解密并 存儲,完成嵌入式設備應用程序的升級。該實施例中,主設備與嵌入式設備之間通信的握手協(xié)議如圖6所示步驟601 :嵌入式設備等待接收詢問信號ASK ;步驟602 :主設備發(fā)送詢問信號ASK ;步驟603 :主設備進入等待嵌入式設備的應答信號ACKl ;步驟604 :嵌入式設備接收到詢問信號ASK,立即回復應答信號ACKl ;步驟605 :嵌入式設備進入等待接收數(shù)據(jù)類型TYPE ;步驟606 :主設備接收到應答信號ACK1,立即發(fā)送數(shù)據(jù)類型TYPE ;步驟607 :主設備進入等待嵌入式設備的應答信號ACK2 ;步驟608 :嵌入式設備接收到數(shù)據(jù)類型TYPE,立即回復應答信號ACK2 ;其中,數(shù)據(jù)類型TYPE=OxOI,發(fā)送的數(shù)據(jù)類型是認證碼Code。步驟609 :主設備接收到應答信號ACK2,立即發(fā)送認證碼Code ;步驟610 :嵌入式設備接收認證碼Code ;步驟611 :嵌入式設備散列認證碼Code'、認證碼Code''并存儲;其中,數(shù)據(jù)類型TYPE=0x02,發(fā)送的數(shù)據(jù)類型是密鑰Key。步驟612 :主設備接收到應答信號ACK2,立即發(fā)送密鑰Key ;步驟613 :嵌入式設備接收密鑰Key ;步驟614 :嵌入式設備散列密鑰Key'、密鑰Key''和密鑰Key'''并存儲;其中,數(shù)據(jù)類型TYPE=0x03,發(fā)送的數(shù)據(jù)類型是密文文件。步驟615 :嵌入式設備獲取散列存儲的密鑰Key'、密鑰Key''和密鑰Key''組合成整體密鑰Key ;步驟616 :主設備發(fā)送密文數(shù)據(jù)包;步驟617 :主設備判斷是否完成密文數(shù)據(jù)包的發(fā)送,未完成則跳轉到步驟616,完成則發(fā)送結束符;步驟619 :嵌入式設備接收密文數(shù)據(jù)包;步驟620 :嵌入式設備判斷是否接收到結束符,不是結束符則跳轉到步驟621,是結束符則跳轉到步驟622 ;步驟621 :解密密文數(shù)據(jù)包并存儲到Flash ROM,跳轉到步驟619 ;步驟622 :嵌入式設備完成接收數(shù)據(jù);
步驟623 :主設備完成發(fā)送數(shù)據(jù),退出下載工具。如圖7所示,該實施例中,應用程序認證碼Code校驗示意圖是步驟701 :應用程序開始執(zhí)行;步驟702 :如果調用系統(tǒng)認證碼校驗接口進行認證碼的校驗,則跳轉到步驟703,沒有進行調用系統(tǒng)認證碼校驗接口,則繼續(xù)運行程序,跳轉到步驟704 ;
進一步的系統(tǒng)認證碼校驗接口完成調用系統(tǒng)認證碼校驗函數(shù),系統(tǒng)認證碼校驗函數(shù)將獲取散列的認證碼Code'和認證碼Code''組合成整體,與待校驗的認證碼進行比較,返回比較結果(正確或錯誤)。同時,本發(fā)明實施例中,系統(tǒng)認證碼校驗函數(shù)對待校驗的認證碼校驗次數(shù)限制為5次,以防止惡意地進行無限次試探,盜取應用程序的認證碼。步驟703 :根據(jù)返回校驗結果決定是否繼續(xù)運行程序,輸入的認證碼校驗正確則跳轉到步驟704,輸入的認證碼校驗錯誤則跳轉到步驟705 ;步驟704 :繼續(xù)運行應用程序;步驟705 :中止運行應用程序;進一步的,在本發(fā)明的實施例中應用程序可多處進行認證碼的校驗。本發(fā)明實施例嵌入式設備中二次開發(fā)的嵌入式應用程序的加密和認證保護的系統(tǒng)用于實現(xiàn)上述方法,如圖8所示,包括嵌入式設備200和主設備100,嵌入式設備200與主設備100通信連接,如可通過接口處理模塊連接,其中,主設備100包括請求模塊110,用于向嵌入式設備發(fā)送請求信息;加密模塊120,用于對嵌入式的應用程序進行加密;下載模塊130,用于下載數(shù)據(jù)至嵌入式設備中,數(shù)據(jù)包括認證碼、密鑰及加密的應用程序;嵌入式設備200包括接收應答模塊210,用于接收主設備發(fā)送請求信息并反饋應答信息;解密模塊220,用于根據(jù)接收的數(shù)據(jù)中的密鑰進行解密;存儲模塊230,用于存儲認證碼、密鑰以及固化應用程序;認證碼校驗模塊240,用于在啟動應用程序時,接收用戶輸入的待校驗的認證碼,并獲取存儲模塊中存儲的認證碼,驗證待校驗的認證碼,若驗證通過,則運行應用程序,否則終止運行應用程序。進一步地,本發(fā)明實施例嵌入式設備還包括控制模塊250,用于當嵌入式設備的存儲模塊230被外部工具非法訪問時,則清除存儲模塊230中的全部數(shù)據(jù)。進一步地,本發(fā)明實施例中,存儲模塊230還用于將密鑰和認證碼和散列地存儲在存儲模塊的空余空間上。應當理解的是,對本領域普通技術人員來說,可以根據(jù)上述說明加以改進或變換,而所有這些改進和變換都應屬于本發(fā)明所附權利要求的保護范圍。
權利要求
1.一種二次開發(fā)的嵌入式應用程序的加密和認證保護的方法,其特征在于,包括以下步驟 主設備向嵌入式設備發(fā)送請求下載數(shù)據(jù)的信息; 嵌入式設備接收請求信息并根據(jù)請求信息向主設備反饋應答信息; 主設備向嵌入式設備下載數(shù)據(jù),數(shù)據(jù)包括認證碼、密鑰及加密的應用程序; 嵌入式設備接收和存儲請求數(shù)據(jù)至存儲模塊中,并用接收的密鑰進行解密以固化應用程序; 嵌入式設備啟動應用程序,并接收用戶輸入的待校驗的認證碼; 嵌入式設備獲取存儲模塊中存儲的認證碼,并驗證待校驗的認證碼,若驗證通過,則運行應用程序,否則終止運行應用程序。
2.根據(jù)權利要求I所述的方法,其特征在于,還包括步驟 當嵌入式設備的存儲模塊被外部工具非法訪問時,則清除存儲模塊中的全部數(shù)據(jù)。
3.根據(jù)權利要求2所述的方法,其特征在于,步驟嵌入式設備存儲請求數(shù)據(jù)至存儲模塊中具體包括將密鑰散列地存儲在存儲模塊的空余空間上。
4.根據(jù)權利要求2所述的方法,其特征在于,步驟嵌入式設備存儲請求數(shù)據(jù)至存儲模塊中具體包括將認證碼散列地存儲在存儲模塊的空余空間上。
5.根據(jù)權利要求3或4所述的方法,其特征在于,主設備通過數(shù)據(jù)加密標準DES、國際數(shù)據(jù)加密算法IDEA、MD5算法或者高級加密標準AES對應用程序進行加密。
6.根據(jù)權利要求I所述的方法,其特征在于,嵌入式設備在運行應用程序時,至少進行一次認證碼校驗。
7.根據(jù)權利要求6所述的方法,其特征在于,若用戶輸入錯誤的驗證碼次數(shù)超過預設次數(shù),則在預先設定的時間內禁止再次運行應用程序。
8.一種二次開發(fā)的嵌入式應用程序的加密和認證保護的系統(tǒng),其特征在于,包括嵌入式設備和主設備,嵌入式設備與主設備通信連接,其中, 主設備包括 請求模塊,用于向嵌入式設備發(fā)送請求信息; 加密模塊,用于對嵌入式的應用程序進行加密; 下載模塊,用于下載數(shù)據(jù)至嵌入式設備中,數(shù)據(jù)包括認證碼、密鑰及加密的應用程序; 嵌入式設備包括 接收和應答模塊,用于接收主設備的請求信息和向主設備反饋應答信息; 解密模塊,用于根據(jù)接收數(shù)據(jù)中的密鑰進行解密數(shù)據(jù); 存儲模塊,用于接收并存儲主設備發(fā)送的數(shù)據(jù)和固化應用程序; 認證碼校驗模塊,用于在啟動應用程序時,接收用戶輸入的待校驗的認證碼,并獲取存儲模塊中存儲的認證碼來驗證待校驗的認證碼,若驗證通過,則運行應用程序,否則終止運行應用程序。
9.根據(jù)權利要求8所述的系統(tǒng),其特征在于,嵌入式設備還包括 控制模塊,用于當嵌入式設備的存儲模塊被外部工具非法訪問時,則清除存儲模塊中的全部數(shù)據(jù)。
10.根據(jù)權利要求9所述的系統(tǒng),其特征在于,存儲模塊還用于將密鑰和認證碼散列地存儲在存儲模塊的空 余空間上。
全文摘要
本發(fā)明提出一種二次開發(fā)嵌入式應用程序的加密和認證保護的方法及系統(tǒng),其中方法包括以下步驟主設備向嵌入式設備請求下載數(shù)據(jù)的信息;嵌入式設備接收請求信息并向嵌入式設備反饋應答信息;主設備向嵌入式設備下載數(shù)據(jù),數(shù)據(jù)包括認證碼、密鑰及加密的應用程序;嵌入式設備接收和存儲請求數(shù)據(jù)至存儲模塊中,并用接收的密鑰進行解密以固化應用程序;嵌入式設備啟動應用程序,并接收用戶輸入的待校驗的認證碼;嵌入式設備獲取存儲模塊中存儲的認證碼,并驗證待校驗的認證碼,若驗證通過,則運行應用程序,否則終止運行應用程序。本發(fā)明不用增加額外的硬件,就可提高了嵌入式設備二次開發(fā)軟件的安全性。
文檔編號H04L9/32GK102831357SQ201210304130
公開日2012年12月19日 申請日期2012年8月24日 優(yōu)先權日2012年8月24日
發(fā)明者黃強, 林嘉順, 倪贊春 申請人:深圳市民德電子科技有限公司