《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 通信與網(wǎng)絡(luò) > 業(yè)界動態(tài) > KEELOQ加密算法在硬件加密中的應(yīng)用

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

2008-03-31
作者:李 羅,,盧建剛

  摘 要: 基于KEELOQ的硬件加密" title="硬件加密">硬件加密方法可解決目前通過PCB抄板和芯片解密仿造產(chǎn)品的問題,。針對此方法,,提出了具體的軟硬件設(shè)計方案。該方法能夠?qū)Ξa(chǎn)品的產(chǎn)權(quán)進(jìn)行保護(hù),,阻止盜版活動,加強(qiáng)信息安全,。同時,它也可以用于對U盤等數(shù)據(jù)存儲器中的數(shù)據(jù)進(jìn)行加密,,以開拓KEELOQ算法新的應(yīng)用領(lǐng)域,。
  關(guān)鍵詞: 硬件加密 KEELOQ 跳碼


  隨著信息社會的飛速發(fā)展,大規(guī)模集成電路和嵌入式系統(tǒng)" title="嵌入式系統(tǒng)">嵌入式系統(tǒng)的應(yīng)用已深入到各個行業(yè)。于是,,軟硬件知識產(chǎn)權(quán)的保護(hù),、系統(tǒng)的安全運行等也就成為人們關(guān)注的問題。目前,,利用PCB抄板技術(shù)直接讀取存儲在ROM或Flash中的程序代碼來進(jìn)行產(chǎn)品仿制的盜版行為越來越多,。因此,只有更好地發(fā)展加密技術(shù)" title="加密技術(shù)">加密技術(shù),,才能更有效地保護(hù)知識產(chǎn)權(quán),。本文對KEELOQ技術(shù)的良好加密性能進(jìn)行深入研究,并把它應(yīng)用到嵌入式系統(tǒng)加密保護(hù)中,。
1 現(xiàn)有的軟硬件加密技術(shù)
  嵌入式系統(tǒng)由處理器,、存儲器、傳感器,、數(shù)據(jù)接口和嵌入式軟件等部分組成,。其中程序存儲器" title="程序存儲器">程序存儲器,、數(shù)據(jù)存儲器和嵌入式軟件的加密是硬件知識產(chǎn)權(quán)保護(hù)的關(guān)鍵所在,。很多嵌入式系統(tǒng)都采用外部擴(kuò)展程序存儲器,只要有相應(yīng)的控制信號出現(xiàn),,程序存儲器便對CPU是透明的,。因此,建立一個同樣的硬件電路,,拷貝一片新的程序存儲器即能完成仿制,。因而系統(tǒng)設(shè)計人員十分關(guān)注微機(jī)系統(tǒng)的程序保密性及提高保密性的方法。目前主要有以下幾種保密方法[1]
  (1)無關(guān)值插入法
  在源程序中的某些地方插入一些與源程序無關(guān)的值,,可使反匯編出來的源程序面目全非,。
  (2)總線置亂法
  在單片微機(jī)的應(yīng)用領(lǐng)域(如采用擴(kuò)展程序的存儲器)中,為了防止從程序存儲器中直接得到正確的源程序,,可以采取地址,、數(shù)據(jù)總線置亂的方法。若該微機(jī)系統(tǒng)的地址總線為n根,,則將它置亂的方式有n!種,。
  (3)求反、異或加密
  將程序存儲器里的代碼按有效程序代碼逐字節(jié)求反后存放,,或者按同鑰匙碼異或后的二進(jìn)制碼存放,。這樣,解密者直接反匯編將得不到正確的原代碼,。
  以上三種方法雖然有一定作用,,但有經(jīng)驗的設(shè)計人員經(jīng)過分析后,仍有很大的破解可能,安全性不夠,。
  (4)外部隨機(jī)存儲器" title="隨機(jī)存儲器">隨機(jī)存儲器驗證法
  在一外部隨機(jī)存儲器中預(yù)先寫入一些數(shù)據(jù),,系統(tǒng)運行時,CPU首先從該存儲器讀取數(shù)據(jù),,這些數(shù)據(jù)可以是CPU執(zhí)行程序的條件判別依據(jù),,也可以是CPU將執(zhí)行的程序。如果數(shù)據(jù)正確,,則整個系統(tǒng)能正常運行,;否則系統(tǒng)不能運行。隨機(jī)存儲器由電池供電,,能在掉電后保持?jǐn)?shù)據(jù),。若對硬件電路沒有剖析清楚,拔下了隨機(jī)存儲器或取下電池,,則隨機(jī)存儲器中的數(shù)據(jù)消失,。在無正確源程序的情況下,根本無法恢復(fù)原來的數(shù)據(jù),。
  該方法的缺陷在于,,只要分析清楚電路,隨機(jī)存儲器中的數(shù)據(jù)很容易被讀取,。另外若不小心斷電,,則會導(dǎo)致系統(tǒng)不能運行,不夠穩(wěn)定,。
  (5)訂制IC,、FPGA、PLD
  該方法不易被破解復(fù)制,,但成本過高,,且不易實現(xiàn)。
  以下將要介紹的基于KEELOQ的硬件加密方法是一種新型的加密方法,具有不易破解復(fù)制,、可靠,、低成本、易于實現(xiàn)等特點,,彌補(bǔ)了以上方法的缺陷,,又綜合了各種優(yōu)點。
2 KEELOQ跳碼加密技術(shù)分析
  KEELOQ技術(shù)是一種非線性跳碼加解密技術(shù)[2],。其原理如圖1所示,。根據(jù)密碼學(xué)的原理,要保證加密系統(tǒng)的安全性,,必須不斷地更新密碼內(nèi)容,,它包含著密鑰,、被加密數(shù)據(jù)、算法等,。KEELOQ技術(shù)完全符合這一特點,。它著重于非線性和跳碼,二者結(jié)合使得每次發(fā)送的碼均以無規(guī)律方式變化,,而且不重復(fù),,因此滿足高性能加密的需求。采用硬件電路產(chǎn)生加密碼,,使編碼和加密變換過程都被封裝在芯片里,,內(nèi)部進(jìn)行密鑰與編碼算法運算,每次發(fā)送不同密碼,,即使被截獲,,也不易被破譯。設(shè)置同步碼,,阻止了通過截獲重發(fā)的破解方式,。


  KEELOQ技術(shù)的核心思想[3,4]是:由64位廠商密碼,、32位產(chǎn)品序列號和32位種子碼經(jīng)過特定的生成算法生成64位的加密密鑰,。用64位的加密密鑰去加密32位的數(shù)據(jù)CSR(包括4位功能碼,12位校驗碼,,16位同步碼)得到32位的密文,。
  加密機(jī)制為:首先定義一個非線性表,,這個非線性表有5位輸入,,一位輸出。它在CSR中間隔均勻地取固定5位,,通過非線性產(chǎn)生一個輸出碼,;這一位輸出碼再與加密密鑰中的15位、CSR中的2位進(jìn)行異或運算后輸出第一位輸出碼CRYP[0],;每輸出一位后,,加密密鑰、CSR分別進(jìn)行移位,,加密密鑰作循環(huán)移位,,CRYP[0]作為CSR移位的輸入;重復(fù)上述步驟直到輸出32位密文,。依此方法,,即使32位CSR中只有一位發(fā)生變化,用KEELOQ加密算法得到的CRYP密文也會有50%以上的數(shù)據(jù)位(16位)發(fā)生變化,。解密過程類似,。
  Microchip公司的HCS301是一款較典型的以KEELOQ技術(shù)為基礎(chǔ)的跳碼專用芯片,。它是一塊8引腳的編碼IC芯片,里面集成了KEELOQ算法和其他一些功能,,帶有四個按鍵接口,,實現(xiàn)15位的功能/命令碼。內(nèi)置192bit(12×16bit)E2PROM,用來存放EN_KEY(加密密鑰),、SN(序列號),、SYNC(同步碼)、SEED(種子碼)等,。每次發(fā)送數(shù)據(jù)時,,同步計數(shù)器的值都被更新,所以每次發(fā)送的密文都不相同,,有效防止了空中截獲法和數(shù)據(jù)重傳帶來的安全隱患,。
3 KEELOQ技術(shù)用于硬件加密的改進(jìn)算法
  為了將KEELOQ技術(shù)用于程序加密,需要對算法進(jìn)行一些改進(jìn)[5]
  (1)原算法發(fā)送的數(shù)據(jù)中,,其有用信息(如序列號,、功能碼)全部在固定碼中,加密碼只作為一種加密用的附加數(shù)據(jù),,這樣不但降低了安全性,而且傳輸效率不高,。以HCS300為例,發(fā)送的66位數(shù)據(jù)中只有32位為有用信息,,傳輸效率比較低,。改進(jìn)后把同步碼映射到各組待加密的數(shù)據(jù)中,提高了傳輸效率,。
  (2)原算法無法用于數(shù)據(jù)加密,。由于原算法是由硬件芯片實現(xiàn)的,它所能加密的數(shù)據(jù)只限于序列號,、同步碼等預(yù)先存在HCS301的E2PROM中的數(shù)據(jù),。它沒有數(shù)據(jù)入口,無法對數(shù)據(jù)流進(jìn)行加密,。因此,,需要增加數(shù)據(jù)入口,改變對加密數(shù)據(jù)的長度要求,,使其適合批量的數(shù)據(jù)加密,。
  (3)原算法對功能碼的檢錯和糾錯的功能較弱。由于加密的都是關(guān)鍵數(shù)據(jù),,若在傳輸中出現(xiàn)誤碼,,后果非常嚴(yán)重。因此需要增加對數(shù)據(jù)的檢錯和糾錯的功能,。
4 KEELOQ硬件加密算法在硬件防盜版中的應(yīng)用
  KEELOQ硬件防盜版技術(shù)由硬件驗證和程序加密兩部分組成,,其框圖見圖2,。


4.1 硬件驗證
  硬件驗證法類似于前面所述的外部隨機(jī)存儲器驗證法,只是外部隨機(jī)存儲器被替換為HCS301,,這樣系統(tǒng)更為穩(wěn)定可靠,。
  CPU在第一次運行時會對HCS301進(jìn)行學(xué)習(xí),獲取序列號以及種子碼,,并據(jù)此算出解密密鑰,。每次開機(jī)上電或復(fù)位后,由CPU產(chǎn)生4位隨機(jī)數(shù),,送至HCS301的S0-S3,。經(jīng)過HCS301的硬件加密后,密文由PWM輸出至CPU,。
  CPU收到密文后就用解密密鑰進(jìn)行軟件解密,,解密得到的4位隨機(jī)數(shù)、序列號及計數(shù)器的值若都與發(fā)送的內(nèi)容相符,,則通過驗證,,主程序開始執(zhí)行,否則主程序不會執(zhí)行,。驗證流程如圖3所示,。


  這一驗證方式保證了CPU內(nèi)部程序的保密性,將CPU換到其他電路將不能運行,,除非知道HCS301的廠商密碼,、同步碼等信息。而這些信息一般都是很難獲取的,。
4.2 程序加密
  對于存放在外部存儲器中的程序或數(shù)據(jù),,可以用改進(jìn)的KEELOQ算法進(jìn)行加密,然后儲存起來,。一般只須對程序及數(shù)據(jù)中的一些關(guān)鍵數(shù)據(jù)進(jìn)行加密,。
  關(guān)鍵數(shù)據(jù)加密的過程如下:
  (1)擴(kuò)充非線性表,。原算法是用64位密鑰去加密32位的明碼數(shù)據(jù),,現(xiàn)在把它擴(kuò)展為64位密鑰去加密64位的明碼數(shù)據(jù),密文長度也為64位,??砂丛?guī)律擴(kuò)展非線性表。
  (2)數(shù)據(jù)分組,。盡管關(guān)鍵數(shù)據(jù)傳輸量較小,,但還是必須對所要加密的數(shù)據(jù)進(jìn)行分組。在使用分組時,,對明文尾部不滿一個整組的碎片采用填充隨機(jī)數(shù)的辦法將其擴(kuò)充為一個整組,,然后進(jìn)行正常加密,。即數(shù)據(jù)分組長度、密鑰長度和輸出密文長度均為64位,。
  (3)將同步碼映射到各組數(shù)據(jù)中,。同步碼每次發(fā)送時均會改變,它是保證系統(tǒng)每次發(fā)送的密文都不一樣的根本,。只需進(jìn)行分配,、疊代、移位,、異或等簡單的變換即可完成映射任務(wù),。
  (4)封裝算法。算法經(jīng)封裝后可方便地被各種程序調(diào)用,。算法的入口參數(shù)有三個:EN_KEY,、Data、Mode,。其中EN_KEY為64位的加密密鑰,;Data為64位被加密或被解密的數(shù)據(jù);Mode為工作方式,,有加密或解密兩種,。
  (5)檢錯糾錯。在發(fā)送數(shù)據(jù)時還要加入檢錯和糾錯功能,。檢錯視系統(tǒng)的要求可選奇偶校驗,、CRC校驗等。糾錯可以用漢明碼,。
  改進(jìn)后的KEELQQ算法可用于數(shù)據(jù)加密的數(shù)據(jù)格式如圖4所示,。


  讀寫數(shù)據(jù)的過程就是加密和解密的過程。對于不同組的數(shù)據(jù)要設(shè)置不同的同步碼,。這樣存儲在外部存儲器中的關(guān)鍵數(shù)據(jù)就是用改進(jìn)后的KEELOQ算法加密的,。想要單純地復(fù)制其中的數(shù)據(jù)和程序是不可能的,只要出廠碼不被泄露,,幾乎不可能破解,,惟一可能的窮舉法用現(xiàn)有最快的計算機(jī)也要上百年的時間。若再配合取反異或等其他一些加密方法,,破解的可能性幾乎為零,。
  本文把KEELOQ的非線性跳碼編碼技術(shù)用于硬件加密的改進(jìn)算法,對硬件進(jìn)行雙重加密,,大大降低了硬件盜版的可能,。該技術(shù)可以廣泛地應(yīng)用于各類存儲器、數(shù)據(jù)的加密,,有著廣闊的前景,。
參考文獻(xiàn)
1 任克強(qiáng),,劉 暉.單片機(jī)系統(tǒng)硬件與軟件加密技術(shù)[J].電子設(shè)計應(yīng)用,2003,;(7):61~63
2 Kobus Mameweck.An Introduction to KEELOQ Code Hopping(TB003)[J].Microchip Technology Inc,,2002
3 岳云天,郁 濱.一種基于加密算法的編解碼IC的安全機(jī)制[J].電子技術(shù),,2002,;29(7)
4 李福平,金偉正,,鄧德祥.KEELOQ技術(shù)的軟件實現(xiàn)[J].電子技術(shù)應(yīng)用,,2002;28(6)
5 董 輝,,盧建剛.一種基于KEELOQ的改進(jìn)加密算法及其在單片機(jī)中的實現(xiàn)技術(shù)[J].電子技術(shù)應(yīng)用,,2004;30(9):14~17

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,,并不代表本網(wǎng)站贊同其觀點。轉(zhuǎn)載的所有的文章,、圖片,、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無法一一聯(lián)系確認(rèn)版權(quán)者,。如涉及作品內(nèi)容,、版權(quán)和其它問題,請及時通過電子郵件或電話通知我們,,以便迅速采取適當(dāng)措施,,避免給雙方造成不必要的經(jīng)濟(jì)損失。聯(lián)系電話:010-82306118,;郵箱:[email protected],。