防止代碼被惡意篡改的方法和裝置制造方法
【專利摘要】本發(fā)明涉及一種防止代碼被惡意篡改的方法和裝置。包括:嵌入式系統(tǒng)上電后,執(zhí)行閃存中的引導(dǎo)程序,判斷應(yīng)用程序是否需要升級(jí);當(dāng)應(yīng)用程序不需要升級(jí)時(shí),直接跳轉(zhuǎn)到應(yīng)用程序中執(zhí)行,當(dāng)應(yīng)用程序需要升級(jí)時(shí),下載服務(wù)器上存儲(chǔ)的加密后的升級(jí)的應(yīng)用程序,進(jìn)行應(yīng)用程序升級(jí),其中,所述加密后的應(yīng)用程序是利用與所述引導(dǎo)程序的解密算法對(duì)應(yīng)的非對(duì)稱算法公鑰加密算法加密升級(jí)所獲得的,所述嵌入式系統(tǒng)保存非對(duì)稱算法公鑰加密算法的公鑰,所述嵌入式系統(tǒng)的開發(fā)者保存非對(duì)稱算法公鑰加密算法的私鑰??梢远沤^防止代碼被惡意篡改。
【專利說明】防止代碼被惡意篡改的方法和裝置
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計(jì)算機(jī)領(lǐng)域,尤其涉及一種防止代碼被惡意篡改的方法和裝置。
【背景技術(shù)】
[0002]很多嵌入式系統(tǒng)開發(fā)投入商用后都會(huì)面臨在線升級(jí)的問題,從而實(shí)現(xiàn)對(duì)開發(fā)的嵌入式系統(tǒng)中的完善或?qū)ο到y(tǒng)bug的修改,而在線升級(jí)過程是將一些可執(zhí)行文件,通過原系統(tǒng)留有的接口,下載并燒寫到主控芯片的flash中,由于下載的可執(zhí)行文件直接在主控芯片中運(yùn)行,所以會(huì)存在一定的風(fēng)險(xiǎn),如果有人惡意修改這些可執(zhí)行文件,則會(huì)導(dǎo)致出現(xiàn)問題,如何保證自己的下載的代碼不被惡意篡改是一個(gè)廣泛存在的問題。
[0003]目前的系統(tǒng)中對(duì)防止代碼被惡意篡改的方法主要依靠簡(jiǎn)單的加密的措施,因?yàn)橛捎谙螺d的代碼是加密的,所以可以在一定程度上保證代碼的保密性。
[0004]例如,一個(gè)嵌入式系統(tǒng)預(yù)留有接口,通過串口和主控模塊通信進(jìn)行系統(tǒng)的升級(jí),升級(jí)時(shí)首先編譯生成可執(zhí)行文件,之后采用AES算法加密下載代碼(即上述生成的可執(zhí)行文件),然后通過串口就可以將下載代碼傳輸?shù)街骺匦酒?,主控芯片中的程序?qū)⑾螺d代碼解密,并且燒寫到主控芯片的flash中。由于AES算法的key是16個(gè)字節(jié),這樣就決定了不可能進(jìn)行暴力破解,可以在一定程度上保護(hù)自己的代碼。
[0005]但是如果有人分析了主控芯片中的程序,就可以得到解密下載代碼的過程,由于AES算法屬于對(duì)稱算法,即是會(huì)解密就會(huì)加密。那么得到解密下載代碼的過程之后就相當(dāng)于同時(shí)得到了加密的過程,此時(shí)就可以隨意的編寫代碼,加密,通過我們預(yù)留的串口接口下載代碼,這樣系統(tǒng)就存在很大的安全隱患。
【發(fā)明內(nèi)容】
[0006]為解決上述技術(shù)問題,本發(fā)明的目的是提供一種防止代碼被惡意篡改的方法和裝置。
[0007]本發(fā)明提供的防止代碼被惡意篡改的方法,包括:
[0008]嵌入式系統(tǒng)上電后,執(zhí)行閃存中的引導(dǎo)程序,判斷應(yīng)用程序是否需要升級(jí);
[0009]當(dāng)應(yīng)用程序不需要升級(jí)時(shí),直接跳轉(zhuǎn)到應(yīng)用程序中執(zhí)行,當(dāng)應(yīng)用程序需要升級(jí)時(shí),下載服務(wù)器上存儲(chǔ)的加密后的升級(jí)的應(yīng)用程序,進(jìn)行應(yīng)用程序升級(jí),其中,所述加密后的應(yīng)用程序是利用與所述引導(dǎo)程序的解密算法對(duì)應(yīng)的非對(duì)稱算法公鑰加密算法加密升級(jí)所獲得的,所述嵌入式系統(tǒng)保存非對(duì)稱算法公鑰加密算法的公鑰,所述嵌入式系統(tǒng)的開發(fā)者保存非對(duì)稱算法公鑰加密算法的私鑰。
[0010]進(jìn)一步的,還包括:將嵌入式系統(tǒng)的程序劃分為引導(dǎo)程序和應(yīng)用程序,所述應(yīng)用程序用于完成所述嵌入式系統(tǒng)的功能,所述引導(dǎo)程序用于判斷所述應(yīng)用程序是否需要升級(jí)。
[0011]進(jìn)一步的,還包括:所述引導(dǎo)程序設(shè)置在閃存的開頭,以便于嵌入式系統(tǒng)上電后,首先啟動(dòng)引導(dǎo)程序。
[0012]本發(fā)明提供的一種防止代碼被惡意篡改的裝置,包括:
[0013]判斷單元,用于嵌入式系統(tǒng)上電后,執(zhí)行閃存中的引導(dǎo)程序,判斷應(yīng)用程序是否需要升級(jí);
[0014]執(zhí)行單元,用于當(dāng)應(yīng)用程序不需要升級(jí)時(shí),直接跳轉(zhuǎn)到應(yīng)用程序中執(zhí)行,當(dāng)應(yīng)用程序需要升級(jí)時(shí),下載服務(wù)器上存儲(chǔ)的加密后的升級(jí)的應(yīng)用程序,進(jìn)行應(yīng)用程序升級(jí),其中,所述加密后的應(yīng)用程序是利用與所述引導(dǎo)程序的解密算法對(duì)應(yīng)的非對(duì)稱算法公鑰加密算法加密升級(jí)所獲得的,所述嵌入式系統(tǒng)保存非對(duì)稱算法公鑰加密算法的公鑰,所述嵌入式系統(tǒng)的開發(fā)者保存非對(duì)稱算法公鑰加密算法的私鑰。
[0015]進(jìn)一步的,還包括:劃分單元,用于將嵌入式系統(tǒng)的程序劃分為引導(dǎo)程序和應(yīng)用程序,所述應(yīng)用程序用于完成所述嵌入式系統(tǒng)的功能,所述引導(dǎo)程序用于判斷所述應(yīng)用程序是否需要升級(jí)。
[0016]進(jìn)一步的,還包括:設(shè)置單元,用于所述引導(dǎo)程序設(shè)置在閃存的開頭,以便于嵌入式系統(tǒng)上電后,首先啟動(dòng)引導(dǎo)程序。
[0017]借由上述方案,本發(fā)明至少具有以下優(yōu)點(diǎn):
[0018]本發(fā)明升級(jí)的應(yīng)用程序是被非對(duì)稱算法RSA公鑰加密算法來加密,由于此算法的秘鑰分為公鑰和私鑰,即公鑰用來解密,存于嵌入式系統(tǒng)中,私鑰用來加密,只保存在開發(fā)者手中,可以保證不會(huì)有人能夠復(fù)制加密應(yīng)用程序的過程。
[0019]上述說明僅是本發(fā)明技術(shù)方案的概述,為了能夠更清楚了解本發(fā)明的技術(shù)手段,并可依照說明書的內(nèi)容予以實(shí)施,以下以本發(fā)明的較佳實(shí)施例并配合附圖詳細(xì)說明如后。
【專利附圖】
【附圖說明】
[0020]圖1是本發(fā)明的EEPROM芯片編程器的結(jié)構(gòu)示意圖
[0021]圖2是本發(fā)明防止代碼被惡意篡改的方法的流程示意圖;
[0022]圖3是本發(fā)明的應(yīng)用程序升級(jí)的流程的示意圖;
[0023]圖4是本發(fā)明防止代碼被惡意篡改的裝置結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
[0024]下面結(jié)合附圖和實(shí)施例,對(duì)本發(fā)明的【具體實(shí)施方式】作進(jìn)一步詳細(xì)描述。以下實(shí)施例用于說明本發(fā)明,但不用來限制本發(fā)明的范圍。
[0025]在本發(fā)明實(shí)施例的例子中,EEPROM芯片編程器,本實(shí)施例中使用STM32系列芯片作為主控芯片,STM32芯片是一種在嵌入式系統(tǒng)中使用非常廣泛的單片機(jī)系列,并且此芯片支持在線編程。假設(shè)系統(tǒng)設(shè)計(jì)為可以進(jìn)行在線升級(jí),以便支持更多的EEPROM芯片種類。
[0026]RSA公鑰加密算法是一種非對(duì)稱算法,RSA是一種公開密鑰密碼體制,所謂的公開密鑰密碼體制就是使用不同的加密密鑰與解密密鑰,是一種“由已知解密密鑰推導(dǎo)出加密密鑰在計(jì)算上是不可行”的密碼體制。
[0027]請(qǐng)參閱圖1,圖1揭示了本發(fā)明實(shí)施例采用的是EEPROM芯片編程器系統(tǒng)的結(jié)構(gòu)圖,此系統(tǒng)包含以下幾個(gè)模塊:模塊1:EEPR0M芯片轉(zhuǎn)接插座,這個(gè)模塊主要是作為EEPROM芯片與系統(tǒng)接口之間的轉(zhuǎn)換;模塊2:顯示模塊,這個(gè)模塊主要作用是提供一個(gè)用戶接口,使得用戶在使用該系統(tǒng)時(shí)可以自主選擇EEPROM芯片型號(hào);模塊3:網(wǎng)絡(luò)模塊,這個(gè)模塊的作用是在編程EEPROM芯片時(shí)直接通過網(wǎng)絡(luò)連接開發(fā)者的網(wǎng)站,在線判斷連接的主機(jī)是否有編程此款EEPROM芯片的授權(quán);模塊4:主控模塊,這個(gè)模塊是整個(gè)系統(tǒng)的核心,主要控制用戶接口,授權(quán)的判斷,對(duì)EEPROM芯片的編程等。
[0028]參見圖2所示,一種防止代碼被惡意篡改的方法,此方法包含如下步驟:包括:
[0029]步驟201:將嵌入式系統(tǒng)劃分為引導(dǎo)(boot)程序及應(yīng)用程序兩部分,應(yīng)用程序主要用于完成整個(gè)嵌入式系統(tǒng)的功能,如編程EEPROM芯片,驗(yàn)證授權(quán)和顯示芯片列表等。嵌入式系統(tǒng)上電時(shí)首先執(zhí)行boot程序,boot程序判斷是否需要升級(jí)系統(tǒng)軟件,如果不需要升級(jí)系統(tǒng)軟件,則直接跳轉(zhuǎn)到應(yīng)用程序執(zhí)行,如果需要升級(jí)系統(tǒng)軟件,則進(jìn)入升級(jí)程序。
[0030]步驟202:編譯原始嵌入式系統(tǒng),得到可執(zhí)行的二進(jìn)制代碼,將boot程序和應(yīng)用程序分別燒寫入主控芯片的flash中,此時(shí)系統(tǒng)可以正常運(yùn)行,可以完成所有功能。具體的:將引導(dǎo)程序設(shè)置在閃存(flash)的開頭處,而應(yīng)用程序設(shè)置在閃存的其他位置處,該位置與boot程序的位置不同,這樣嵌入式系統(tǒng)上電后,將首先執(zhí)行boot程序。
[0031]步驟203:如果嵌入式系統(tǒng)的維護(hù)者發(fā)現(xiàn)一種原嵌入式系統(tǒng)不能編程的EEPROM芯片,并且只通過修改嵌入式系統(tǒng)就可以增加對(duì)這種EEPROM芯片的支持,則需要進(jìn)行一次軟件升級(jí),以支持更多的EEPROM芯片類型,增加嵌入式系統(tǒng)的市場(chǎng)競(jìng)爭(zhēng)力。請(qǐng)參閱圖3,嵌入式系統(tǒng)升級(jí)具體過程如下:
[0032]步驟2031、對(duì)嵌入式系統(tǒng)進(jìn)行升級(jí),修改原應(yīng)用程序,增加對(duì)目前不能編程的EEPROM芯片的讀寫操作支持,并測(cè)試新的應(yīng)用程序的健壯性。
[0033]步驟2032、利用與boot程序的解密算法相對(duì)應(yīng)的非對(duì)稱算法公鑰加密算法的加密應(yīng)用程序?qū)ι鲜錾?jí)的應(yīng)用程序進(jìn)行加密。該所述嵌入式系統(tǒng)保存非對(duì)稱算法公鑰加密算法的公鑰,所述嵌入式系統(tǒng)的開發(fā)者保存非對(duì)稱算法公鑰加密算法的私鑰。由于加密應(yīng)用程序的私鑰只有系統(tǒng)的開發(fā)者才能掌握,嵌入式系統(tǒng)中并沒有這個(gè)私鑰,所以即使有人通過一定的技術(shù)手段完全分析了整個(gè)嵌入式系統(tǒng),也只能得到我們的應(yīng)用程序原始代碼,但是無法獲得上述加密算法,因此無法修改我們的代碼。
[0034]步驟2033、將加密后的升級(jí)后的應(yīng)用程序放在網(wǎng)絡(luò)服務(wù)器,以便于嵌入式系統(tǒng)進(jìn)行下載。
[0035]步驟2034、嵌入式系統(tǒng)上電檢測(cè)到有可以升級(jí)的應(yīng)用程序新版本后進(jìn)入boot程序的升級(jí)流程,下載上述存儲(chǔ)在網(wǎng)絡(luò)服務(wù)器上的加密后的升級(jí)的應(yīng)用程序。
[0036]步驟2035、boot程序解密上述下載的加密的升級(jí)后的應(yīng)用程序,將解密的應(yīng)用程序代碼放入RAM中,boot程序?qū)AM中的解密的應(yīng)用程序代碼燒寫入主控芯片的flash中。
[0037]這樣就完成了應(yīng)用程序的升級(jí),并且該升級(jí)的應(yīng)用程序是被非對(duì)稱算法RSA公鑰加密算法來加密,由于此算法的秘鑰分為公鑰和私鑰,即公鑰用來解密,存于嵌入式系統(tǒng)中,私鑰用來加密,只保存在開發(fā)者手中,可以保證不會(huì)有人能夠復(fù)制加密應(yīng)用程序的過程。
[0038]如圖4所示,本發(fā)明提供了一種防止嵌入式系統(tǒng)被惡意在線調(diào)試的裝置,包括:
[0039]判斷單元41,用于嵌入式系統(tǒng)上電后,執(zhí)行閃存中的引導(dǎo)程序,判斷應(yīng)用程序是否需要升級(jí);
[0040]執(zhí)行單元42,用于當(dāng)應(yīng)用程序不需要升級(jí)時(shí),直接跳轉(zhuǎn)到應(yīng)用程序中執(zhí)行,當(dāng)應(yīng)用程序需要升級(jí)時(shí),下載服務(wù)器上存儲(chǔ)的加密后的升級(jí)的應(yīng)用程序,進(jìn)行應(yīng)用程序升級(jí),其中,所述加密后的應(yīng)用程序是利用與所述引導(dǎo)程序的解密算法對(duì)應(yīng)的非對(duì)稱算法公鑰加密算法加密升級(jí)所獲得的,所述嵌入式系統(tǒng)保存非對(duì)稱算法公鑰加密算法的公鑰,所述嵌入式系統(tǒng)的開發(fā)者保存非對(duì)稱算法公鑰加密算法的私鑰。
[0041]進(jìn)一步的,如圖4所示,還包括:劃分單元43,用于將嵌入式系統(tǒng)的程序劃分為引導(dǎo)程序和應(yīng)用程序,所述應(yīng)用程序用于完成所述嵌入式系統(tǒng)的功能,所述引導(dǎo)程序用于判斷所述應(yīng)用程序是否需要升級(jí)。
[0042]進(jìn)一步的,如圖4所示,還包括:設(shè)置單元44,用于所述引導(dǎo)程序設(shè)置在閃存的開頭,以便于嵌入式系統(tǒng)上電后,首先啟動(dòng)引導(dǎo)程序。
[0043]本發(fā)明通過RSA算法對(duì)代碼的加密保護(hù),可以有效的避免代碼被惡意篡改,從而實(shí)現(xiàn)保護(hù)自身系統(tǒng)的功能。使用本發(fā)明保護(hù)的系統(tǒng),即使有人獲取到我們系統(tǒng)的代碼及處理方法,也無法修改,無法跳過我們?cè)O(shè)置的驗(yàn)證過程。所述保護(hù)軟件的方法包括升級(jí)時(shí)從網(wǎng)絡(luò)到嵌入式系統(tǒng)傳輸?shù)膽?yīng)用程序的代碼是加密的,并且加密使用的算法是非對(duì)稱算法,使得應(yīng)用程序的完整性不會(huì)被破壞。
[0044]以上所述僅是本發(fā)明的優(yōu)選實(shí)施方式,并不用于限制本發(fā)明,應(yīng)當(dāng)指出,對(duì)于本【技術(shù)領(lǐng)域】的普通技術(shù)人員來說,在不脫離本發(fā)明技術(shù)原理的前提下,還可以做出若干改進(jìn)和變型,這些改進(jìn)和變型也應(yīng)視為本發(fā)明的保護(hù)范圍。
【權(quán)利要求】
1.一種防止代碼被惡意篡改的方法,其特征在于,包括: 嵌入式系統(tǒng)上電后,執(zhí)行閃存中的引導(dǎo)程序,判斷應(yīng)用程序是否需要升級(jí); 當(dāng)應(yīng)用程序不需要升級(jí)時(shí),直接跳轉(zhuǎn)到應(yīng)用程序中執(zhí)行,當(dāng)應(yīng)用程序需要升級(jí)時(shí),下載服務(wù)器上存儲(chǔ)的加密后的升級(jí)的應(yīng)用程序,進(jìn)行應(yīng)用程序升級(jí),其中,所述加密后的應(yīng)用程序是利用與所述引導(dǎo)程序的解密算法對(duì)應(yīng)的非對(duì)稱算法公鑰加密算法加密升級(jí)所獲得的,所述嵌入式系統(tǒng)保存非對(duì)稱算法公鑰加密算法的公鑰,所述嵌入式系統(tǒng)的開發(fā)者保存非對(duì)稱算法公鑰加密算法的私鑰。
2.如權(quán)利要求1的一種防止代碼被惡意篡改的方法,其特征在于,還包括: 將嵌入式系統(tǒng)的程序劃分為引導(dǎo)程序和應(yīng)用程序,所述應(yīng)用程序用于完成所述嵌入式系統(tǒng)的功能,所述引導(dǎo)程序用于判斷所述應(yīng)用程序是否需要升級(jí)。
3.如權(quán)利要求2的一種防止代碼被惡意篡改的方法,其特征在于,還包括: 所述引導(dǎo)程序設(shè)置在閃存的開頭,以便于嵌入式系統(tǒng)上電后,首先啟動(dòng)引導(dǎo)程序。
4.一種防止代碼被惡意篡改的裝置,其特征在于,包括: 判斷單元,用于嵌入式系統(tǒng)上電后,執(zhí)行閃存中的引導(dǎo)程序,判斷應(yīng)用程序是否需要升級(jí); 執(zhí)行單元,用于當(dāng)應(yīng)用程序不需要升級(jí)時(shí),直接跳轉(zhuǎn)到應(yīng)用程序中執(zhí)行,當(dāng)應(yīng)用程序需要升級(jí)時(shí),下載服務(wù)器上存儲(chǔ)的加密后的升級(jí)的應(yīng)用程序,進(jìn)行應(yīng)用程序升級(jí),其中,所述加密后的應(yīng)用程序是利用與所述引導(dǎo)程序的解密算法對(duì)應(yīng)的非對(duì)稱算法公鑰加密算法加密升級(jí)所獲得的,所述嵌入式系統(tǒng)保存非對(duì)稱算法公鑰加密算法的公鑰,所述嵌入式系統(tǒng)的開發(fā)者保存非對(duì)稱算法公鑰加密算法的私鑰。
5.如權(quán)利要求4的一種防止代碼被惡意篡改的裝置,其特征在于,還包括: 劃分單元,用于將嵌入式系統(tǒng)的程序劃分為引導(dǎo)程序和應(yīng)用程序,所述應(yīng)用程序用于完成所述嵌入式系統(tǒng)的功能,所述引導(dǎo)程序用于判斷所述應(yīng)用程序是否需要升級(jí)。
6.如權(quán)利要求4的一種防止代碼被惡意篡改的裝置,其特征在于,還包括: 設(shè)置單元,用于所述引導(dǎo)程序設(shè)置在閃存的開頭,以便于嵌入式系統(tǒng)上電后,首先啟動(dòng)引導(dǎo)程序。
【文檔編號(hào)】H04L29/06GK104486355SQ201410842072
【公開日】2015年4月1日 申請(qǐng)日期:2014年12月30日 優(yōu)先權(quán)日:2014年12月30日
【發(fā)明者】田雨農(nóng), 劉欣, 蒼柏 申請(qǐng)人:大連樓蘭科技股份有限公司