本發(fā)明屬于嵌入式芯片領(lǐng)域,具體是一種基于嵌入式Nor-Flash的芯片UID設(shè)計方法。
技術(shù)背景
在嵌入式產(chǎn)品層出不窮的同時,市場上很多廠家購買電子產(chǎn)品成品,通過電路反向和軟件反匯編等方式間接獲得其他公司的設(shè)計成果,損害了公司的利益,也對市場發(fā)展造成了惡劣的影響。而Nor-Flash作為重要的片上指令代碼和數(shù)據(jù)存儲單元,其安全型尤為重要。因此越來越多的設(shè)計加入了加密方法,防止用戶未經(jīng)授權(quán)訪問內(nèi)部的數(shù)據(jù)和程序,以提高芯片的安全性。常用的芯片加密手段有:軟件加密,硬件加密和加密芯片加密。軟件加密實現(xiàn)方式靈活,但其安全性相對較低。通過加密芯片加密安全性高,但是需要更多的硬件資源,成本更高。硬件加密消耗一定的硬件資源,設(shè)計靈活,安全性較高,介于軟件加密和芯片加密之間。根據(jù)不同的應(yīng)用需求,可以針對性的運用不同的加密手段。
中國專利(申請?zhí)枺?01510832016.3,專利名稱:一種嵌入式軟件加密方法)提出了一種軟件加密的方法,以芯片ID本身作為加密輸入?yún)?shù)值進(jìn)行加解密。該軟件加密方式實現(xiàn)簡單,后續(xù)的維護升級方便,但其安全性較低。反匯編軟件執(zhí)行流程獲得芯片ID號和加密方法后,便能破解芯片的核心代碼進(jìn)行復(fù)制拷貝。另外,處于對設(shè)計和后續(xù)維護的考慮,同一產(chǎn)家生產(chǎn)的不同版本批次芯片盡管ID不同,但都是基于同一個硬件軟件平臺,用同一種加密方式加密?,F(xiàn)有的加密方式被破解后,對同一產(chǎn)品的安全性挑戰(zhàn)會更大。
中國專利(申請?zhí)枺?01120037710.3,專利名稱:嵌入式加密芯片)基于32位智能卡芯片硬件平臺,使用LKT4200加密芯片加密軟件程序。加密芯片具有高安全性,但整體面積和功耗增加,成本也隨之增加。
芯片應(yīng)用不同,其設(shè)計對安全性和設(shè)計成本要求也不同。如何通過有效加密手段針對不同應(yīng)用進(jìn)行芯片加密,提高設(shè)計的安全性,也越來越受到設(shè)計者的重視。
技術(shù)內(nèi)容
針對芯片安全性存在的上述技術(shù)問題,本發(fā)明基于硬件設(shè)計和軟件架構(gòu)提出了一種基于嵌入式Nor-Flash的芯片UID設(shè)計方法。該方法通過芯片ID確保代碼正確運行,在不增加額外的硬件開銷基礎(chǔ)上,可以避免核心代碼被竊取。由于芯片ID的唯一性和用戶定義加密方式的多樣性,其加密后安全性高。
本發(fā)明采用的技術(shù)方案如下:
一種基于嵌入式Nor-Flash的芯片UID設(shè)計方法,包括如下步驟:
步驟一、給芯片設(shè)置唯一編碼的芯片身份標(biāo)識UID;
步驟二、將芯片UID存儲在嵌入式Nor-Flash密碼保護區(qū)中;
步驟三、設(shè)備上電后,裝載程序運行之前,軟件系統(tǒng)檢測當(dāng)前芯片UID,將其作為軟件加密的輸入?yún)?shù),對比軟件加密結(jié)果與目標(biāo)結(jié)果,若兩者結(jié)果一致,則運行核心程序,否則終止當(dāng)前運行程序。
進(jìn)一步的,加密系統(tǒng)與芯片UID進(jìn)行綁定,以芯片UID作為參數(shù)輸入進(jìn)行加密。
進(jìn)一步的,所述UID由編程寫入并鎖定,鎖定Flash保護區(qū)后,系統(tǒng)對該區(qū)域?qū)崿F(xiàn)擦寫保護,保護區(qū)數(shù)據(jù)只能讀取,無法更改。
進(jìn)一步的,在芯片UID編程時,在特定區(qū)域?qū)懭胄酒琔ID后,在保護區(qū)關(guān)鍵地址1和關(guān)鍵地址2寫入數(shù)據(jù)KEY1和KEY2,保護區(qū)被鎖定。
進(jìn)一步的,若用戶對保護區(qū)發(fā)起一次有效的擦寫操作,Nor-Flash控制器先讀取關(guān)鍵地址的數(shù)據(jù)VALUE1和VALUE2,若所取數(shù)據(jù)和KEY1和KEY2完全相等,則當(dāng)前對保護區(qū)的擦寫操作無效,即認(rèn)為當(dāng)前的保護區(qū)已被鎖定。
進(jìn)一步的,針對Nor-Flash讀請求,F(xiàn)lash保護區(qū)和數(shù)據(jù)區(qū)響應(yīng)一致。
本發(fā)明由于芯片UID的唯一性以及加密算法的個性化,核心代碼的保密性高,破解難度大,且需要的額外硬件開銷少,保證安全性的同時具有較低的成本。
附圖說明
圖1為本發(fā)明保護區(qū)讀寫數(shù)據(jù)示意圖;
圖2為本發(fā)明嵌入式系統(tǒng)程序運行流程。
具體實施方案
下面結(jié)合附圖說明和具體實施案例對本發(fā)明做進(jìn)一步的闡述。
本發(fā)明的基于嵌入式Nor-Flash的芯片UID設(shè)計方法,包括如下步驟:
給芯片設(shè)置一個唯一編碼的芯片身份標(biāo)識UID(Unique Identification)。在嵌入式應(yīng)用中,加密系統(tǒng)與其芯片UID進(jìn)行綁定,以芯片UID作為參數(shù)輸入進(jìn)行加密,加密結(jié)果是否正確決定程序是否能夠正常運行。
芯片UID存儲在嵌入式Nor-Flash密碼保護區(qū)中。UID可由廠家編程寫入并鎖定,鎖定Flash保護區(qū)后,系統(tǒng)對該區(qū)域?qū)崿F(xiàn)擦寫保護,保護區(qū)數(shù)據(jù)只能讀取,無法更改。因此,一旦UID寫入并鎖定后,芯片UID便唯一確定。
設(shè)備上電后,裝載程序運行之前,軟件系統(tǒng)需要檢測當(dāng)前芯片UID。具體做法是,讀取芯片UID,將其作為軟件加密的輸入?yún)?shù),對比軟件加密結(jié)果與目標(biāo)結(jié)果,若兩者結(jié)果一致,則運行核心程序,否則終止當(dāng)前運行程序。軟件加密算法可以由用戶自行定義,實現(xiàn)方式靈活多樣。
如圖1所示,本發(fā)明實例一說明Nor-Flash保護區(qū)數(shù)據(jù)訪問操作流程。數(shù)據(jù)區(qū)和保護區(qū)對Flash的訪問操作有不同的響應(yīng)。
針對Nor-Flash擦寫請求,F(xiàn)lash保護區(qū)和數(shù)據(jù)區(qū)響應(yīng)不同。數(shù)據(jù)區(qū)無論何時均能正常響應(yīng)擦寫請求,對目標(biāo)區(qū)域?qū)崿F(xiàn)擦寫操作。第一次對保護區(qū)進(jìn)行芯片UID編程時,在特定區(qū)域?qū)懭胄酒琔ID后,需要在保護區(qū)關(guān)鍵地址1和關(guān)鍵地址2寫入數(shù)據(jù)KEY1和KEY2。在關(guān)鍵地址寫入數(shù)據(jù)KEY1和KEY2后,保護區(qū)被鎖定。鎖定后的保護區(qū)不能實現(xiàn)擦寫操作。進(jìn)一步,若用戶對保護區(qū)發(fā)起一次有效的擦寫操作,Nor-Flash控制器先讀取關(guān)鍵地址的數(shù)據(jù)VALUE1和VALUE2,若所取數(shù)據(jù)和KEY1和KEY2完全相等,則當(dāng)前對保護區(qū)的擦寫操作無效,即認(rèn)為當(dāng)前的保護區(qū)已被鎖定。
針對Nor-Flash讀請求,F(xiàn)lash保護區(qū)和數(shù)據(jù)區(qū)響應(yīng)一致,能放回目標(biāo)區(qū)域數(shù)據(jù),保證用戶能隨時讀取芯片UID數(shù)據(jù)。
實例一具有如下增益效果:Nor-Flash增加保護區(qū)以編寫并保護芯片UID,該實現(xiàn)方式無需增加額外的加密芯片,降低成本;芯片UID支持廠家編程鎖定,無法隨意更改的同時確保設(shè)備的芯片ID號的唯一性;Nor-Flash劃分保護區(qū)實現(xiàn)芯片UID編寫和保護,該方式實現(xiàn)簡單,不同開發(fā)版本相互兼容且后續(xù)升級維護十分容易。
如圖2所示,本發(fā)明實例二說明芯片啟動時裝載程序的運行流程。設(shè)備上電后,在保護區(qū)寫入芯片UID并將其鎖定后,芯片UID便唯一確定。芯片UID編寫實現(xiàn)方式非常靈活,可以由廠家出廠時決定,也可以由用戶在應(yīng)用時確定。
軟件裝載程序運行時,先讀取保護區(qū)的芯片UID,將其作為加密的輸入?yún)?shù)進(jìn)行數(shù)據(jù)加密。其軟件加密方式可以由用戶按照自身要求開發(fā),實現(xiàn)方式個性化強,在此以AES加密為例說明。軟件產(chǎn)生一個隨機數(shù)密鑰,對獲取的芯片UID進(jìn)行加密,將加密結(jié)果與目標(biāo)結(jié)果比較。若加密結(jié)果和目標(biāo)結(jié)果一致,則運行核心代碼程序,否則終止當(dāng)前程序的運行。由于芯片UID的唯一性以及用戶定義加密方式的多樣性,破解難度大,很好的保護了芯片的核心程序代碼。