淺談KEELOQ技術(shù)的軟件實(shí)現(xiàn)
出處:電子技術(shù)應(yīng)用 發(fā)布于:2011-09-04 22:54:15
Microchip公司的KEELOQ技術(shù)是一種多變化、抗截獲、安全可靠性高的非線性跳碼加密解密技術(shù)。KEELOQ目前是通過硬件芯片IC(以Mirochip公司的HCS300為代表)實(shí)現(xiàn),主要應(yīng)用于汽車防盜系統(tǒng)和門禁系統(tǒng),是無鑰進(jìn)入系統(tǒng)領(lǐng)域的芯片。但也由于硬件芯片本身的限制(其所能加密的數(shù)據(jù)必須預(yù)先寫入EEPROM中),使之很難用于其它(如數(shù)據(jù)加密)領(lǐng)域。KEELOQ技術(shù)其實(shí)是一種復(fù)雜的協(xié)議,只要弄清楚它的原理,就可以根據(jù)實(shí)際需要在這個(gè)協(xié)議里選擇合適的參數(shù)。本文對(duì)KEELOQ技術(shù)進(jìn)行了專門研究,提出了一種軟件實(shí)現(xiàn)方法,并將這一方法應(yīng)用于汽車防盜報(bào)警系統(tǒng)中。
KEELOQ技術(shù)的思想是用64bit的EN_KEY[64:0](加密密鑰)去加密32bit的CSR[31:0](校驗(yàn)碼)得到32bit的CRYP密文。加密機(jī)制為:首先定義一個(gè)非線性表,這個(gè)非線性表有5位輸入NLF_IN[4:0],一位輸出NLF_OUT.它在CSR[31:0]中間隔均勻地取固定5位:I0、I1、I2、I3、I4,通過非線性產(chǎn)生一個(gè)輸出碼NLF_OUT;這一位輸出碼NLF_OUT再與EN_KEY中的15位、CSR中的2位進(jìn)行異或運(yùn)算后輸出位輸出碼CRYP[0];每輸出一位后,EN_KEY、CSR分別進(jìn)行移位,EN_KEY作循環(huán)移位,CRYP[0]作為CSR移位的輸入;重復(fù)上述步驟直到輸出32位CRYP[0:31].依此法,即使32bit的校驗(yàn)碼CSR中只有一位發(fā)生變化,用KEELOQ加密算法得到的CRYP密文也會(huì)有50%以上的數(shù)據(jù)位(16bit)發(fā)生變化。
1 KEELOQ技術(shù)的一般特點(diǎn)
KEELOQ技術(shù)作為一種安全實(shí)用的加密解密技術(shù),具有以下特點(diǎn):
?。?)將KEELOQ技術(shù)應(yīng)用于通信中,安全性非常好。同一條命令,經(jīng)KEELOQ編碼后每次得到的碼字都不相同(在一個(gè)非常長(zhǎng)的周期里),且這種變化是無規(guī)律的。
?。?)發(fā)送方發(fā)送的碼只能被一個(gè)特定的對(duì)象有效接收,接收方只有預(yù)先取得(通過學(xué)習(xí))發(fā)送方的加密鑰匙后,才能對(duì)接收到的數(shù)據(jù)進(jìn)行有效解密。
?。?)特定的對(duì)象只有經(jīng)過學(xué)習(xí)某一發(fā)送者的信息后,才能使用。
(4)這種技術(shù)能防止發(fā)送碼被截獲后再轉(zhuǎn)發(fā)帶來的危害。
(5)接收方能隨時(shí)清除自己保存的學(xué)習(xí)信息,使原來的發(fā)送方不能控制自己,這樣能有效避免第三方非法使用。
正是這些特點(diǎn)使得KEELOQ技術(shù)越來越受重視,越來越廣泛使用。
2 硬件實(shí)現(xiàn)KEELOQ技術(shù)
基于KEELOQ技術(shù)的專用芯片分為兩種:一種實(shí)現(xiàn)加密功能,一種實(shí)現(xiàn)解密功能,通常配合起來使用。實(shí)現(xiàn)加密功能的芯片帶有4個(gè)按鍵接口,組合使用可達(dá)15種功能。每有鍵按下,就自動(dòng)生成KEELOQ加密碼。KEELOQ加密碼的組成一般如下:

一旦芯片制造出來,上述項(xiàng)的長(zhǎng)度就是確定的。如序列號(hào)的長(zhǎng)度設(shè)計(jì)成28位,整個(gè)系統(tǒng)的容量就不會(huì)超過268435455(2 28-1),如果想擴(kuò)展系統(tǒng)容量非常不方便。這種芯片在使用前必須預(yù)置一些初值(序列號(hào)、加密鑰匙、同步計(jì)數(shù)器)。發(fā)送方和接收方一起工作前,接收方必須先通過學(xué)習(xí)來獲得并存儲(chǔ)發(fā)送方的序列號(hào)、加密鑰匙和當(dāng)前同步計(jì)數(shù)器的值。學(xué)習(xí)是KEELOQ技術(shù)的一個(gè)重要方面。
硬件實(shí)現(xiàn)KEELOQ技術(shù)加密過程如圖1所示。

序列號(hào)用來標(biāo)識(shí)不同的對(duì)象;加密鑰匙用來對(duì)發(fā)送的數(shù)據(jù)進(jìn)行加密,增加破譯的難度,它不直接送出去;同步計(jì)數(shù)器是用來抗截獲的,每次有鍵按下,同步計(jì)數(shù)器的值就被更新,它經(jīng)過加密變換后被發(fā)送出去。
硬件實(shí)現(xiàn)KEELOQ技術(shù)解密過程如圖2所示。

接收方在確認(rèn)序列號(hào)匹配后,對(duì)接收的數(shù)據(jù)進(jìn)行解密,然后檢查同步計(jì)數(shù)器是否匹配,在確認(rèn)其匹配后,再去處理接收到的按鍵信令。
盡管KEELOQ技術(shù)有上述獨(dú)特的優(yōu)點(diǎn),但是經(jīng)過深入分析不難發(fā)現(xiàn)KEELOQ算法及其硬件實(shí)現(xiàn)技術(shù)也存在一些不足:
?。?)安全性基于出廠密鑰和種子碼SEED.在HCS300芯片中,加密密鑰EN_KEY是由出廠密鑰MKEY、序列號(hào)SN和種子碼SEED(安全模式)生成的。而SN和SEED在發(fā)送數(shù)據(jù)的過程中未經(jīng)加密,是可截獲的。理論上出廠密鑰一經(jīng)確定一般不會(huì)更改。所以,一旦出廠密鑰外泄,后果極其嚴(yán)重。
(2)擴(kuò)展功能弱、升級(jí)不方便。其算法由硬件芯片實(shí)現(xiàn)。其所能實(shí)現(xiàn)的功能由按鍵決定。其按鍵只有4個(gè),多也只有15種組合。發(fā)送方無法附加其余的信息(對(duì)于大多領(lǐng)域來說,它要求能發(fā)送一些附加信息,如用戶的姓名、年齡、出生日期等),功能擴(kuò)展幾乎不可能。另外,某一特定型號(hào)的芯片其序列號(hào)和同步計(jì)數(shù)器的長(zhǎng)度是固定的。當(dāng)系統(tǒng)建成后,開發(fā)者如果想只通過軟件升級(jí)來擴(kuò)充系統(tǒng)的容量或提高系統(tǒng)的性能、用硬件實(shí)現(xiàn)技術(shù)基本不可能。
?。?)對(duì)功能碼的檢錯(cuò)和糾錯(cuò)的功能較弱。在無線傳輸中,出現(xiàn)誤碼的概率比較大。功能碼代表所要實(shí)現(xiàn)的功能,如開門、報(bào)警、開閥等。如果發(fā)送的數(shù)據(jù)是0010,而接收的數(shù)據(jù)為0100,其后果非常嚴(yán)重。
?。?)傳輸效率較低。在發(fā)送的數(shù)據(jù)中,其有用信息(如序列號(hào)、功能碼)全部在固定碼中,加密碼只作為一種加密用的附加數(shù)據(jù),這樣不但降低了安全性,而且傳輸效率不高。以HCS300為例,發(fā)送的66位數(shù)據(jù)中只有32位為有用信息,傳輸效率比較低。
?。?)無法用于數(shù)據(jù)加密。由于其是由硬件芯片實(shí)現(xiàn)的,它所能加密的數(shù)據(jù)只限于序列號(hào)、同步碼等預(yù)先存在HCS300的EEPROM中的數(shù)據(jù)。它沒有數(shù)據(jù)入口,無法對(duì)數(shù)據(jù)流進(jìn)行加密。
?。?)受硬件設(shè)計(jì)限制,靈活性差,成本較高,由于不擁有技術(shù),容易受制于人。
正是這些不足之處促使我們研究用軟件來實(shí)現(xiàn)KEELOQ技術(shù)。
3 軟件實(shí)現(xiàn)KEELOQ技術(shù)
KEELOQ技術(shù)的是KEELOQ算法,KEELOQ算法作為KEELOQ技術(shù)的重要部分是保密的。經(jīng)過長(zhǎng)時(shí)間的探索、研究、驗(yàn)證,本文提出了一種可靠的KEELOQ算法,并將其成功應(yīng)用到汽車防盜報(bào)警系統(tǒng)中,取得了非常好的效果。
序列號(hào)加密鑰匙選用32位的m序列,對(duì)于一個(gè)用戶而言,其加密鑰匙和序列號(hào)不相同。同步計(jì)數(shù)器的長(zhǎng)度從理論上講越長(zhǎng)越好,但是如果越長(zhǎng)其他方面的開銷就越大,這里選用16位的m序列。汽車防盜器由兩部分組成:裝在車身上的部分稱之為座機(jī);手持控制部分稱之為手機(jī)。為了節(jié)省硬件開銷,手機(jī)只設(shè)計(jì)三個(gè)按鍵,無組合按鍵,一共有12種按鍵功能。每個(gè)鍵有四種狀態(tài):一點(diǎn)按、兩點(diǎn)按、三點(diǎn)按、長(zhǎng)按。這12種按鍵又分成兩類:一是控制座機(jī)操作的命令控制鍵,一是手機(jī)自身操作鍵。每次按下命令控制鍵,就執(zhí)行KEELOQ加密過程。軟件實(shí)現(xiàn)KEELOQ加密操作流程如圖3所示。

對(duì)按鍵信令進(jìn)行糾錯(cuò)編碼處理是必要的:假設(shè)某次按鍵信令為0110,經(jīng)信道傳輸后,接收方解密得到的碼字變?yōu)?101,而0101也表示一種有效的命令。顯然,這種誤操作帶來的后果是嚴(yán)重的。用Walsh碼編碼,經(jīng)過編碼后,能同時(shí)發(fā)現(xiàn)并糾正3個(gè)或3個(gè)以內(nèi)的錯(cuò)誤;同時(shí)根據(jù)編碼的特點(diǎn),用加密鑰匙對(duì)編碼后的按鍵信令做變換處理。試驗(yàn)表明這些措施極大地提高了系統(tǒng)的可靠性。
KEELOQ算法的關(guān)系之處在于同步計(jì)數(shù)器。如前所述,手機(jī)在次使用前必須預(yù)置有效的序列號(hào)、同步計(jì)數(shù)器值、加密鑰匙。座機(jī)通過控制可以學(xué)習(xí)任何一只手機(jī),學(xué)習(xí)成功手保存該手機(jī)的序列號(hào)、同步計(jì)數(shù)器值、加密鑰匙。每次按下命令控制鍵時(shí),手機(jī)的同步計(jì)數(shù)器的值加1,經(jīng)過m序列發(fā)生器,從統(tǒng)計(jì)的角度看,有一半的位發(fā)生改變。接收方的確認(rèn)接收數(shù)據(jù)的序列號(hào)匹配后,對(duì)接收數(shù)據(jù)進(jìn)行解密,然后確定同步計(jì)數(shù)器是否匹配,只有同步計(jì)數(shù)器確認(rèn)匹配后,才處理接收的按鍵信令。通過圖4來說明確認(rèn)同步計(jì)數(shù)器的匹配過程。

KEELOQ技術(shù)是通過一個(gè)復(fù)雜的同步技術(shù)來實(shí)現(xiàn)的。雖然開發(fā)的防盜系統(tǒng)是雙向通信的,但為了方便,將座機(jī)稱為接收方,手機(jī)稱為發(fā)送方。接收方判斷解密后的同步計(jì)數(shù)器的值是否在單次操作范圍內(nèi)。如果在,就用接收到同步計(jì)數(shù)器值替換原來的同步計(jì)數(shù)器的值,并執(zhí)行接收到的命令;否則,看是否在雙次操作范圍內(nèi)。如果在,則暫存該計(jì)數(shù)器的值,并等待接收下有效數(shù)據(jù)。在這種情況下,如果接收到數(shù)據(jù),在確認(rèn)同步計(jì)數(shù)時(shí)就判斷接收到的同步計(jì)數(shù)器的值是否在上次暫存同步計(jì)數(shù)器值的單次操作范圍內(nèi)。如果在,用當(dāng)前接收到的同步計(jì)數(shù)器值替換原來的同步計(jì)數(shù)器的值,并執(zhí)行命令;如果發(fā)送方的同步計(jì)數(shù)器的值不在接收方雙次操作范圍內(nèi),則該命令不被執(zhí)行,且同步計(jì)數(shù)器的值不被保存。這個(gè)發(fā)送方必須被接收方學(xué)習(xí)后才能對(duì)接收方進(jìn)行有效控制。由于接收方每次接收到有效命令后,就更新自己同步計(jì)數(shù)器的值,使前用過的同步計(jì)數(shù)器的值成為禁用碼,不再有效。這樣就能夠避免發(fā)送的碼被截獲而再轉(zhuǎn)發(fā)帶來的危害。
需要說明的是上述單次操作范圍、雙次操作范圍,以及同步計(jì)數(shù)器的長(zhǎng)度可以根據(jù)實(shí)際需要來選擇。由于同步計(jì)數(shù)器非常重要,算法在處理時(shí)對(duì)它進(jìn)行了檢錯(cuò)編碼處理。軟件實(shí)現(xiàn)KEELOQ解密操作流程如圖5所示。

在KEELOQ技術(shù)中,學(xué)習(xí)功能一個(gè)重要部分。學(xué)習(xí)包括清除原來存儲(chǔ)的信息和學(xué)習(xí)新的信息,它分為一般學(xué)習(xí)和安全學(xué)習(xí)兩種。本文采用安全學(xué)習(xí)方式。通過長(zhǎng)按座機(jī)上的學(xué)習(xí)清除鍵(該鍵有兩種功能:長(zhǎng)按為清除功能,點(diǎn)按為進(jìn)入學(xué)習(xí)模式)來清除原來手機(jī)的信息,點(diǎn)按座機(jī)上的學(xué)習(xí)清除鍵,如果誶機(jī)的原來信息已被清除,則進(jìn)入學(xué)習(xí)模式;否則,點(diǎn)按無效,不進(jìn)入學(xué)習(xí)模式。這時(shí),如果手機(jī)發(fā)送學(xué)習(xí)啟動(dòng)命令給座機(jī),處于學(xué)習(xí)狀態(tài)的座機(jī)收到命令后立即向手機(jī)發(fā)送請(qǐng)求學(xué)習(xí)信號(hào),收到請(qǐng)求信號(hào)后,手機(jī)將經(jīng)過變換處理后的加密匙和同步計(jì)數(shù)器立即發(fā)給座機(jī),發(fā)送之后就退出學(xué)習(xí)狀態(tài),并保存新的加密鑰匙和同步計(jì)數(shù)器值;座機(jī)確認(rèn)數(shù)據(jù)有效后,就保存加密鑰匙和同步計(jì)數(shù)器值并退出學(xué)習(xí)模式,需要繼續(xù)學(xué)習(xí)。每次學(xué)習(xí)時(shí)手機(jī)發(fā)給座機(jī)的加密鑰匙和同步計(jì)數(shù)器都不相同(無規(guī)律變化),這是安全學(xué)習(xí)的主要特點(diǎn)。為了更安全,座機(jī)多只能學(xué)習(xí)一支手機(jī)的信息。安全學(xué)習(xí)操作流程如圖6所示。

可以看到,用軟件實(shí)現(xiàn)KEELOQ技術(shù)并不復(fù)雜,一般的單片機(jī)就夠用。手機(jī)部分選用的是華邦(WINBOND)4位單片機(jī),座機(jī)部分選用飛利浦(PHILIPS)8位單片機(jī)。用軟件實(shí)現(xiàn)KEELOQ技術(shù)靈活性很大:手機(jī)按鍵可根據(jù)需要進(jìn)行設(shè)計(jì)(仿移動(dòng)電話按鍵設(shè)計(jì));序列號(hào)、加密鑰匙、同步計(jì)數(shù)器長(zhǎng)度可根據(jù)需要進(jìn)行選擇,以后升級(jí)或改變都比較容易;手機(jī)發(fā)送的按鍵信令進(jìn)行糾錯(cuò)編碼,用加密鑰匙對(duì)發(fā)送數(shù)據(jù)進(jìn)行編碼時(shí)可以有重點(diǎn)地做一些復(fù)雜的變換處理。有些廠家宣稱他們能做到同一條按鍵信令約42.9(2 32-1)億次無重復(fù)發(fā)送,其實(shí)只要增加加密鑰匙和同步計(jì)數(shù)器的長(zhǎng)度就可以做到這點(diǎn),甚至比這更多次的無重復(fù)發(fā)送。這些都可以根據(jù)客戶對(duì)系統(tǒng)要求的變化而進(jìn)行軟件上的修改,不需要改變硬件設(shè)計(jì)??傊密浖?shí)現(xiàn)KEELOQ技術(shù),可以節(jié)約硬件成本,系統(tǒng)設(shè)計(jì)可以更少依賴于硬件,系統(tǒng)性能還能做到理優(yōu)越可靠。
版權(quán)與免責(zé)聲明
凡本網(wǎng)注明“出處:維庫電子市場(chǎng)網(wǎng)”的所有作品,版權(quán)均屬于維庫電子市場(chǎng)網(wǎng),轉(zhuǎn)載請(qǐng)必須注明維庫電子市場(chǎng)網(wǎng),http://m.58mhw.cn,違反者本網(wǎng)將追究相關(guān)法律責(zé)任。
本網(wǎng)轉(zhuǎn)載并注明自其它出處的作品,目的在于傳遞更多信息,并不代表本網(wǎng)贊同其觀點(diǎn)或證實(shí)其內(nèi)容的真實(shí)性,不承擔(dān)此類作品侵權(quán)行為的直接責(zé)任及連帶責(zé)任。其他媒體、網(wǎng)站或個(gè)人從本網(wǎng)轉(zhuǎn)載時(shí),必須保留本網(wǎng)注明的作品出處,并自負(fù)版權(quán)等法律責(zé)任。
如涉及作品內(nèi)容、版權(quán)等問題,請(qǐng)?jiān)谧髌钒l(fā)表之日起一周內(nèi)與本網(wǎng)聯(lián)系,否則視為放棄相關(guān)權(quán)利。
- 掌握 DSP:原理剖析與應(yīng)用實(shí)踐2025/5/8 14:03:24
- 模糊邏輯在 DSP 上實(shí)時(shí)執(zhí)行2023/7/25 17:13:30
- 多速率DSP及其在數(shù)模轉(zhuǎn)換中的應(yīng)用2023/6/12 15:28:52
- 使用 DSP 加速 CORDIC 算法2023/3/29 15:46:30
- 高速DSP系統(tǒng)的信號(hào)完整性2022/9/26 16:45:38









