KEELOQ硬件加密算法在硬件防盜版中的應(yīng)用

隨著信息社會(huì)的飛速發(fā)展,大規(guī)模集成電路和嵌入式系統(tǒng)的應(yīng)用已深入到各個(gè)行業(yè)。于是,軟硬件知識(shí)產(chǎn)權(quán)的保護(hù)、系統(tǒng)的安全運(yùn)行等也就成為人們關(guān)注的問(wèn)題。目前,利用PCB抄板技術(shù)直接讀取存儲(chǔ)在OM或Flash中的程序代碼來(lái)進(jìn)行產(chǎn)品仿制的盜版行為越來(lái)越多。因此,只有更好地發(fā)展加密技術(shù),才能更有效地保護(hù)知識(shí)產(chǎn)權(quán)。下面我就給大家講一下KEELOQ加密算法在硬件加密中的應(yīng)用。

一、現(xiàn)有的軟件加密技術(shù)和硬件加密技術(shù)

嵌入式系統(tǒng)由處理器、存儲(chǔ)器、傳感器、數(shù)據(jù)接口和嵌入式軟件等部分組成。其中程序存儲(chǔ)器、數(shù)據(jù)存儲(chǔ)器和嵌人式軟件加密是硬件知識(shí)產(chǎn)權(quán)保護(hù)的關(guān)鍵所在。

很多嵌入式系統(tǒng)都采用外部擴(kuò)展程序存儲(chǔ)器,只要有相應(yīng)的控制信號(hào)出現(xiàn),程序存儲(chǔ)器便對(duì)CPU是透明的。因此,建立一個(gè)同樣的硬件電路,拷貝一片新的程序存鍺器即能完成仿制。因而系統(tǒng)設(shè)計(jì)人員十分關(guān)注馓機(jī)系統(tǒng)的程序保密性及提高保密性的方法。目前主要有以下幾種保密方法:

(1)無(wú)關(guān)值插入法

在源程序中的某些地方插入一些與源程序無(wú)關(guān)的值,可使反匯編出來(lái)的源程序面目全非。

(2)總線置亂法

在單片微機(jī)的應(yīng)用領(lǐng)域(如采用擴(kuò)展程序的存儲(chǔ)器)中,為了防止從程序存儲(chǔ)器中直接得到正確的源程序,可以采取地址、數(shù)據(jù)總線鼉亂的方法。若該微機(jī)系統(tǒng)的地址總線為n根,則將它置亂的方式有n種。

(3)求復(fù)、異或加密

將程序存儲(chǔ)器里的代碼按有效程序代碼逐字節(jié)求反后存放,或者按同鑰匙碼異或后的二進(jìn)制碼存放。這樣,解密者直接反匯編將得不到正確的原代碼。

以上三種方法雖然有一定作用.但有經(jīng)驗(yàn)的設(shè)計(jì)人員經(jīng)過(guò)分析后,仍有很大的破解可能,安全性不夠。

(4)外部隨機(jī)存儲(chǔ)器驗(yàn)證法

在一外部隨機(jī)存儲(chǔ)器中預(yù)先寫(xiě)入一些數(shù)據(jù),系統(tǒng)運(yùn)行時(shí),CPU首先從該存儲(chǔ)器讀取數(shù)據(jù),這些數(shù)據(jù)可以是CPU執(zhí)行程序的條件判別依據(jù),也可以是CPU將執(zhí)行的程序。如果數(shù)據(jù)正確,則整個(gè)系統(tǒng)髓正常運(yùn)行;否則系統(tǒng)不能運(yùn)行。隨機(jī)存儲(chǔ)器由電池供電,能在掉電后保持?jǐn)?shù)據(jù)。若對(duì)硬件電路沒(méi)有剖析清楚,拔下了隨機(jī)存儲(chǔ)器或取下電池,則隨機(jī)存儲(chǔ)器中的數(shù)據(jù)消失。在無(wú)正確源程序的情況下,根本無(wú)法恢復(fù)原來(lái)的數(shù)據(jù)。

該方法的缺陷在于,只要分析清楚電路,隨機(jī)存儲(chǔ)器中的數(shù)據(jù)很容易被讀取。另外若不小心斷電,則會(huì)導(dǎo)致系統(tǒng)不能運(yùn)行,不夠穩(wěn)定。

(5)訂制IC、FPCA、PLD

該方法不易被破解復(fù)制,但成本過(guò)高,且不易實(shí)現(xiàn)。

以下將要介紹的基于KEELOQ的硬件加密方法是一種新型的加密方法,具有不易破解復(fù)制、可靠、低成本、易于實(shí)現(xiàn)等特點(diǎn),彌補(bǔ)了以上方法的缺陷,又綜合了各種優(yōu)點(diǎn)。

二、KEELOQ跳碼加密技術(shù)分析

KEELOQ技術(shù)是一種非線性跳碼加密技術(shù)和解密技術(shù)。其原理如圖1所示。

KEELOQ加密算法在硬件加密中的應(yīng)用

根據(jù)密碼學(xué)的原理,要保證加密系統(tǒng)的安全性,必須不斷地更新密碼內(nèi)容,它包含著密鑰、被加密數(shù)據(jù)、加密算法等。KEELOQ技術(shù)完全符合這一特點(diǎn)。它著重于非線性和跳碼。二者結(jié)合使得每次發(fā)進(jìn)的碼均以無(wú)規(guī)律方式變化,而且不重復(fù),因此滿足高性能加密的需求。采用硬件電路產(chǎn)生加密碼,使編碼和加密變換過(guò)程都被封裝在芯片里,內(nèi)部進(jìn)行密鑰與編碼算法運(yùn)算,每次發(fā)送不同密碼,即使被截獲,也不易被破譯。設(shè)置同步碼,阻止了通過(guò)截獲重發(fā)的破解方式。

KEELOQ技術(shù)的核心思想是:由64位廠商密碼、32位產(chǎn)品序列號(hào)和32位種子碼經(jīng)過(guò)特定的生成算法生成6位的加密密鑰。用64位的加密密鑰去加密32位的數(shù)據(jù)CSR(包括4位功能碼,12位校驗(yàn)碼,16位同步碼)得到32位的密文。

加密機(jī)制為:首先定義一個(gè)非線性表,這個(gè)非線性表有5位輸入,一位輸出。它在CSR中間隔均勻地取固定5位,通過(guò)非線性產(chǎn)生一個(gè)輸出碼;這一位輸出碼再與加密密鋼中的15位、CSR中的2位進(jìn)行異或運(yùn)算后輸出第一位輸出碼CRYP[0];每輸出一位后,加密密鑰、CSR分別進(jìn)行移位,加密密鋼作循環(huán)移位,CRYP [O]作為CSR移位的輸入;重復(fù)上述步驟直到輸出32位密文。依此方法,即使32位CSR中只有一位發(fā)生變化,用KEELOQ加密算法得到的CRYP密文也會(huì)有50%以上的數(shù)據(jù)位(16位)發(fā)生變化。解密過(guò)程類似。

Microc hip公司的HCS301是一款較典型的以KEELOQ技術(shù)為基礎(chǔ)的跳碼專用芯片。它是一塊8引腳的編碼IC芯片,里面集成了KEELOQ加密算法和其他一些功能,帶有四個(gè)按鍵接口,實(shí)現(xiàn)15位的功能,命令碼。內(nèi)置192bit(12x16bit)EzPROM。用來(lái)存放EN_KEY(加密密鑰)、SN(序列號(hào))、SYNC(同步碼)、SEED(種子碼)等。每次發(fā)送數(shù)據(jù)時(shí),同步計(jì)數(shù)器的值都被更新,所以每次發(fā)送的密文都不相同,有效防止了空中截獲法和數(shù)據(jù)重傳帶來(lái)的安全隱患。

三、 KEELOQ技術(shù)用于硬件加密的改進(jìn)算法

為了將KEELOQ技術(shù)用于程序加密,需要對(duì)KEELOQ加密算法進(jìn)行一些改進(jìn)。

(1)原加密算法發(fā)送的書(shū)記中,其有用信息(如序列號(hào)、功能碼)全部在固定碼中,加密碼只作為一種加密用的附加數(shù)據(jù),這樣不但降低了安全性,而且傳輸效率不高。以IICS300為例,發(fā)送的66位數(shù)據(jù)中只有32位為有用信息,傳輸效率比較低。改進(jìn)后把同步碼映射到各組待加密的數(shù)據(jù)中,提高了傳輸效率。

(2)原加密算法無(wú)法用于數(shù)據(jù)文件加密。由于原加密算法是由硬件芯片實(shí)現(xiàn)的,它所能加密的數(shù)據(jù)只限于序列號(hào)、同步碼等預(yù)先存在HCS301的E2PROM中的數(shù)據(jù)。它沒(méi)有數(shù)據(jù)入口,無(wú)法對(duì)數(shù)據(jù)流進(jìn)行加密。因此,需要增加數(shù)據(jù)入口,改變對(duì)加密數(shù)據(jù)的長(zhǎng)度要求,使其適合批量的數(shù)據(jù)文件加密。

(3)原加密算法對(duì)功能碼的檢錯(cuò)和糾錯(cuò)的功能較弱。由于加密的都是關(guān)鍵數(shù)據(jù),若在傳輸中出現(xiàn)誤碼,后果非常嚴(yán)重。因此需要增加對(duì)效據(jù)的檢錯(cuò)和糾錯(cuò)的功能。

四、KEELOQ硬件加密算法在硬件防盜版中的應(yīng)用

KEELOQ硬件防盜版技術(shù)由硬件驗(yàn)證和程序加密兩部分組成,其框圖見(jiàn)圖2。

KEELOQ硬件加密算法在硬件防盜版中的應(yīng)用

1、硬件驗(yàn)證

硬件驗(yàn)證法類似于前面所述的外部隨機(jī)存儲(chǔ)器驗(yàn)證法。只是外部隨機(jī)存儲(chǔ)器被替換為HCS301,這樣系統(tǒng)更為穩(wěn)定可靠。

CPU在第一次運(yùn)行時(shí)會(huì)對(duì)HC5301進(jìn)行學(xué)習(xí),獲取序列號(hào)以及種子碼,并據(jù)此算出癬密密鑰,每次開(kāi)機(jī)上電或復(fù)位后,由CPIJ產(chǎn)生4位隨機(jī)數(shù),送至HCS301的SO-S3。

經(jīng)過(guò)HCS301的硬件加密后,密文由PWM輸出至CPU。

CPU收到密文后就用解密密鑰進(jìn)行軟件解密,解密得到的4位隨機(jī)教、序列號(hào)及計(jì)數(shù)器的值若都與發(fā)送的內(nèi)容相符,則通過(guò)驗(yàn)證,主程序開(kāi)始執(zhí)行,否則主程序不會(huì)執(zhí)行。驗(yàn)證流程如圖3所示。

KEELOQ硬件加密算法在硬件防盜版中的應(yīng)用

這一驗(yàn)證方式保證了CPU內(nèi)部程序的保密性,將CPU換到其他電路將不能運(yùn)行,除非知道HCS301的廠商密碼、同步碼萼信息。而這些信息一般都是很難獲取的。

2、程序加密

對(duì)于存放在外部存儲(chǔ)器中的程序或數(shù)據(jù),可以用改進(jìn)的KEELOQ加密算法進(jìn)行加密,然后儲(chǔ)存起來(lái)。一般只須對(duì)程序及數(shù)據(jù)中的一些關(guān)鍵數(shù)據(jù)文件進(jìn)行加密。

關(guān)鍵數(shù)據(jù)文件加密的過(guò)程如下:

(1)擴(kuò)充非線性表

原加密算法是用64位密鑰去加密32位的明碼數(shù)據(jù)文件,現(xiàn)在把它擴(kuò)展為64位密鑰去加密64位的明碼數(shù)據(jù)文件,密文長(zhǎng)度也為64位??砂丛?guī)律擴(kuò)展非線性表。

(2)數(shù)據(jù)分組

盡管關(guān)鍵數(shù)據(jù)傳輸量較小,但還是必須對(duì)所要加密的數(shù)據(jù)文件進(jìn)行分組。在使用分組時(shí),對(duì)明文尾部不滿一個(gè)整組的碎片采用填充隨機(jī)數(shù)的辦法將其擴(kuò)充為一個(gè)整組,然后進(jìn)行正常加密。即數(shù)據(jù)分組長(zhǎng)度、
密鑰長(zhǎng)度和輸出密文長(zhǎng)度均為64位。

(3)將同步碼映射到各組數(shù)據(jù)中

同步碼每次發(fā)送時(shí)均會(huì)改變,它是保證系統(tǒng)每次發(fā)送的密文都不一樣的根本。只需進(jìn)行分配、疊代、移位、異或等簡(jiǎn)單的變換即可完成映射任務(wù)。

(4)封裝加密算法

加密算法經(jīng)封裝后可方便地被各種程序調(diào)用。加密算法的入口參數(shù)有三個(gè):EN_KEY、Data、Mode。其中Er.lT_ KEY為64位的加密密鑰;Data為64位被加密或被解密的數(shù)據(jù);Mode為工作方式,有加密或解密兩種。

(5)檢錯(cuò)糾錯(cuò)

在發(fā)送數(shù)據(jù)時(shí)還要加入檢錯(cuò)利糾錯(cuò)功能。檢錯(cuò)視系統(tǒng)的要求可選奇偶校驗(yàn)、CRC校驗(yàn)等。糾錯(cuò)可以用漢明碼。

改進(jìn)后的KEELQQ加密算法可用于數(shù)據(jù)文件加密的數(shù)據(jù)格式如圖4所示。

KEELOQ硬件加密算法在硬件防盜版中的應(yīng)用
讀寫(xiě)數(shù)據(jù)的過(guò)程就是加密和解密的過(guò)程。對(duì)于不同組的數(shù)據(jù)要設(shè)置不同的同步碼。這樣存儲(chǔ)在外部存儲(chǔ)器中的關(guān)健數(shù)據(jù)就是用改進(jìn)后的KEELOQ加密算法加密的。想要單純地復(fù)制其中的數(shù)據(jù)和程序是不可能的。只要出廠碼不被泄露,幾乎不可能破解,惟一可能的窮舉法用現(xiàn)有最快的計(jì)算機(jī)也要上百年的時(shí)間。若再配合取反異或等其他一些加密方法,破解的可能性幾乎為零。

小知識(shí)之PCB抄板技術(shù)

PCB抄板也常被稱為電路板抄板、PCB克隆、電路板克隆、PCB逆向設(shè)計(jì)等等,它是指在已經(jīng)有電子產(chǎn)品實(shí)物的前提下,利用各種反向研究手段反推出產(chǎn)品PCB文件,電路原理圖等全套技術(shù)資料,然后利用這些資料對(duì)產(chǎn)品技術(shù)原理進(jìn)行完整解析和應(yīng)用研究,并通過(guò)制板打樣、電路板焊接、組裝等工序來(lái)實(shí)現(xiàn)電子產(chǎn)品仿制克隆的過(guò)程。