KEELOQ技術(shù)的軟件實(shí)現(xiàn)
摘要:KEELOQ技術(shù)是一種重要的安全加密解密技術(shù),它具有多變化,抗截獲的特性。該技術(shù)的重要部分是保密的,只掌握在國(guó)外少數(shù)幾家公司手中。提出了一種實(shí)用可靠的KEELOQ算法,并給出了實(shí)現(xiàn)算法的軟件流程。
本文引用地址:http://www.ex-cimer.com/article/242378.htm關(guān)鍵詞:KEELOQ技術(shù) 加密 解密 同步
KEELOQ技術(shù)作為一種保密的高新技術(shù),對(duì)許多人來(lái)說(shuō)比較陌生,但是它正廣泛應(yīng)用于各種防盜報(bào)警系統(tǒng)(特別是車輛的防盜報(bào)警系統(tǒng))、遙控電子鎖及其他完全的控制領(lǐng)域。它是一種多變化、抗截獲、安全可靠的跳碼加密解密技術(shù)。目前這項(xiàng)先進(jìn)技術(shù)只掌握在國(guó)外少數(shù)幾家公司手中,他們利用集成電路設(shè)計(jì)的優(yōu)勢(shì),把這項(xiàng)技術(shù)封裝在芯片里,向用戶銷售。工程師基于他們提供的硬件做一些開(kāi)發(fā),很多時(shí)候感到不方便。KEELOQ技術(shù)其實(shí)是一種復(fù)雜的協(xié)議,只要弄清楚它的原理,就可以根據(jù)實(shí)際需要在這個(gè)協(xié)議里選擇合適的參數(shù)。本文對(duì)KEELOQ技術(shù)進(jìn)行了專門(mén)研究,提出了一種軟件實(shí)現(xiàn)方法,并將這一方法應(yīng)用于汽車防盜報(bào)警系統(tǒng)中。
1 KEELOQ技術(shù)的一般特點(diǎn)
KEELOQ技術(shù)作為一種安全實(shí)用的加密解密技術(shù),具有以下特點(diǎn):
(2)將KEELOQ技術(shù)應(yīng)用于通信中,安全性非常好。同一條命令,經(jīng)KEELOQ編碼后每次得到的碼字都不相同(在一個(gè)非常長(zhǎng)的周期里),且這種變化是無(wú)規(guī)律的。
(2)發(fā)送方發(fā)送的碼只能被一個(gè)特定的對(duì)象有效接收,接收方只有預(yù)先取得(通過(guò)學(xué)習(xí))發(fā)送方的加密鑰匙后,才能對(duì)接收到的數(shù)據(jù)進(jìn)行有效解密。
(3)特定的對(duì)象只有經(jīng)過(guò)學(xué)習(xí)某一發(fā)送者的信息后,才能使用。
(4)這種技術(shù)能防止發(fā)送碼被截獲后再轉(zhuǎn)發(fā)帶來(lái)的危害。
(5)接收方能隨時(shí)清除自己保存的學(xué)習(xí)信息,使原來(lái)的發(fā)送方不能控制自己,這樣能有效避免第三方非法使用。
正是這些特點(diǎn)使得KEELOQ技術(shù)越來(lái)越受重視,越來(lái)越廣泛使用。
2 硬件實(shí)現(xiàn)KEELOQ技術(shù)
基于KEELOQ技術(shù)的專用芯片分為兩種:一種實(shí)現(xiàn)加密功能,一種實(shí)現(xiàn)解密功能,通常配合起來(lái)使用。實(shí)現(xiàn)加密功能的芯片帶有4個(gè)按鍵接口,組合使用可達(dá)15種功能。每一次有鍵按下,就自動(dòng)生成KEELOQ加密碼。KEELOQ加密碼的組成一般如下:
描述信息 | 序列號(hào) | 按鍵信號(hào) | 校驗(yàn)位 | 同步計(jì)數(shù)器 |
一旦芯片制造出來(lái),上述項(xiàng)的長(zhǎng)度就是確定的。如序列號(hào)的長(zhǎng)度設(shè)計(jì)成28位,整個(gè)系統(tǒng)的容量就不會(huì)超過(guò)268435455(2 28-1),如果想擴(kuò)展系統(tǒng)容量非常不方便。這種芯片在使用前必須預(yù)置一些初值(序列號(hào)、加密鑰匙、同步計(jì)數(shù)器)。發(fā)送方和接收方一起工作前,接收方必須先通過(guò)學(xué)習(xí)來(lái)獲得并存儲(chǔ)發(fā)送方的序列號(hào)、加密鑰匙和當(dāng)前同步計(jì)數(shù)器的值。學(xué)習(xí)是KEELOQ技術(shù)的一個(gè)重要方面。
硬件實(shí)現(xiàn)KEELOQ技術(shù)加密過(guò)程如圖1所示。
序列號(hào)用來(lái)標(biāo)識(shí)不同的對(duì)象;加密鑰匙用來(lái)對(duì)發(fā)送的數(shù)據(jù)進(jìn)行加密,增加破譯的難度,它不直接送出去;同步計(jì)數(shù)器是用來(lái)抗截獲的,每次有鍵按下,同步計(jì)數(shù)器的值就被更新,它經(jīng)過(guò)加密變換后被發(fā)送出去。
硬件實(shí)現(xiàn)KEELOQ技術(shù)解密過(guò)程如圖2所示。
接收方在確認(rèn)序列號(hào)匹配后,對(duì)接收的數(shù)據(jù)進(jìn)行解密,然后檢查同步計(jì)數(shù)器是否匹配,在確認(rèn)其匹配后,再去處理接收到的按鍵信令。
經(jīng)過(guò)使用發(fā)現(xiàn)用硬件實(shí)現(xiàn)KEELOQ技術(shù)存在下列不足之處:
(1)硬件成本高,在使用KEELOQ芯片時(shí),還需要一個(gè)單片機(jī)(MCU)來(lái)控制,量產(chǎn)時(shí)這點(diǎn)顯得比較突出。
(2)按鍵信令必須組合(同時(shí)按下1個(gè)以上的鍵),否則只有4種功能,通過(guò)組合最多只有15種功能。這導(dǎo)致按鍵不方便、功能擴(kuò)展幾乎不可能。
(3)某一特定型號(hào)的芯片其序列和同步計(jì)數(shù)器的長(zhǎng)度是固定的。當(dāng)系統(tǒng)建成后,開(kāi)發(fā)者如果想只通過(guò)軟件升級(jí)來(lái)擴(kuò)充系統(tǒng)的容量或提高系統(tǒng)的性能、用硬件實(shí)現(xiàn)KEELOQ技術(shù)基本不可能。
(4)KEELOQ技術(shù)對(duì)按鍵信令編碼只停留在檢錯(cuò)這一層面上,沒(méi)有作糾錯(cuò)層面的編碼。
(5)受硬件設(shè)計(jì)限制,靈活性差;不擁有核心技術(shù),容易受制于人。
正是這些不足之處促使我們研究用軟件來(lái)實(shí)現(xiàn)KEELOQ技術(shù)。
3 軟件實(shí)現(xiàn)KEELOQ技術(shù)
KEELOQ技術(shù)的核心是KEELOQ算法,KEELOQ算法作為KEELOQ技術(shù)的重要部分是保密的。經(jīng)過(guò)長(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)其他方面的開(kāi)銷就越大,這里選用16位的m序列。汽車防盜器由兩部分組成:裝在車身上的部分稱之為座機(jī);手持控制部分稱之為手機(jī)。為了節(jié)省硬件開(kāi)銷,手機(jī)只設(shè)計(jì)三個(gè)按鍵,無(wú)組合按鍵,一共有12種按鍵功能。每個(gè)鍵有四種狀態(tài):一點(diǎn)按、兩點(diǎn)按、三點(diǎn)按、長(zhǎng)按。這12種按鍵又分成兩類:一是控制座機(jī)操作的命令控制鍵(包括學(xué)習(xí)啟動(dòng)鍵),一是手機(jī)自身操作鍵。每次按下命令控制鍵,就執(zhí)行KEELOQ加密過(guò)程。軟件實(shí)現(xiàn)KEELOQ加密操作流程如圖3所示。
對(duì)按鍵信令進(jìn)行糾錯(cuò)編碼處理是必要的:假設(shè)某次按鍵信令為0110,經(jīng)信道傳輸后,接收方解密得到的碼字變?yōu)?101,而0101也表示一種有效的命令。顯然,這種誤操作帶來(lái)的后果是嚴(yán)重的。用Walsh碼編碼,經(jīng)過(guò)編碼后,能同時(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ī)通過(guò)控制可以學(xué)習(xí)任何一只手機(jī),學(xué)習(xí)成功手保存該手機(jī)的序列號(hào)、同步計(jì)數(shù)器值、加密鑰匙。每次按下命令控制鍵時(shí),手機(jī)的同步計(jì)數(shù)器的值加1(僅僅只有一位發(fā)生變化),經(jīng)過(guò)m序列發(fā)生器,從統(tǒng)計(jì)的角度看,有一半的位發(fā)生改變。接收方的確認(rèn)接收數(shù)據(jù)的序列號(hào)匹配后,對(duì)接收數(shù)據(jù)進(jìn)行解密,然后確定同步計(jì)數(shù)器是否匹配,只有同步計(jì)數(shù)器確認(rèn)匹配后,才處理接收的按鍵信令。通過(guò)圖4來(lái)說(shuō)明確認(rèn)同步計(jì)數(shù)器的匹配過(guò)程。
需要說(shuō)明的是上述單次操作范圍、雙次操作范圍,以及同步計(jì)數(shù)器的長(zhǎng)度可以根據(jù)實(shí)際需要來(lái)選擇。由于同步計(jì)數(shù)器非常重要,算法在處理時(shí)對(duì)它進(jìn)行了檢錯(cuò)編碼處理。軟件實(shí)現(xiàn)KEELOQ解密操作流程如圖5所示。
在KEELOQ技術(shù)中,學(xué)習(xí)功能一個(gè)重要部分。學(xué)習(xí)包括清除原來(lái)存儲(chǔ)的信息和學(xué)習(xí)新的信息,它分為一般學(xué)習(xí)和安全學(xué)習(xí)兩種。本文采用安全學(xué)習(xí)方式。通過(guò)長(zhǎng)按座機(jī)上的學(xué)習(xí)清除鍵(該鍵有兩種功能:長(zhǎng)按為清除功能,點(diǎn)按為進(jìn)入學(xué)習(xí)模式)來(lái)清除原來(lái)手機(jī)的信息(原來(lái)的手機(jī)就不能控制該座機(jī),必須通過(guò)學(xué)習(xí)后才能控制),點(diǎn)按座機(jī)上的學(xué)習(xí)清除鍵,如果誶機(jī)的原來(lái)信息已被清除,則進(jìn)入學(xué)習(xí)模式;否則,點(diǎn)按無(wú)效,不進(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)過(guò)變換處理后的加密匙和同步計(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ù)器都不相同(無(wú)規(guī)律變化),這是安全學(xué)習(xí)的主要特點(diǎn)。為了更安全,座機(jī)最多只能學(xué)習(xí)一支手機(jī)的信息。安全學(xué)習(xí)操作流程如圖6所示。
評(píng)論