



下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、 摘要:討論了Microchip公司的KEELOQ加解密算法的實現(xiàn)機制,通過引入隨隨機數(shù),提出了一種新的改進算法,并給出了其在單片機中的實現(xiàn)方案。該算法具有簡單實用、所需硬件資源少、傳輸效率和安全性相對較高等優(yōu)點,適用于需要數(shù)據(jù)加密的小型無線數(shù)據(jù)傳輸系統(tǒng),具有廣闊的應(yīng)用前景。 關(guān)鍵詞:加密算法 KEELOQ 單片機 跳碼技術(shù)當(dāng)今的編解碼電路已經(jīng)朝著高度集成化和微電腦化發(fā)展。像普通的固定編解碼芯片和MC145026/145027、PT2262/2272等已被廣泛應(yīng)用于公用系統(tǒng)中,給生活帶來了方便。然而這些芯片不能保證系統(tǒng)的安全性。由于這些系統(tǒng)每次發(fā)送
2、的數(shù)據(jù)流一模一樣,只是高低電平的組合,第三方面通過捕捉設(shè)備,一旦用戶信號出現(xiàn),便可瞬間取得合法的身份識別碼;或使用編碼掃描設(shè)備,主動攻擊解碼芯片。因此保證系統(tǒng)的安全性是一個很現(xiàn)實的問題。在此背景下,基于加密算法的編解碼IC的安全機制得到了應(yīng)用。Microchip公司的KEELOQ技術(shù)是這種技術(shù)的代表。KEELOQ技術(shù)是一種多變化、抗截獲得、安全可靠性高的非線性跳碼加密解密技術(shù)。KEELOQ目前是通過硬件芯片IC(以Mirochip公司的HCS300為代表)實現(xiàn),主要應(yīng)用于汽車陣盜系統(tǒng)和門禁系統(tǒng),是無鑰進入系統(tǒng)領(lǐng)域的首選芯片。但也由于硬件芯片本身的限制(其所能加密的數(shù)據(jù)必須預(yù)先寫入EEPROM中
3、),使之很難用于其它(如數(shù)據(jù)加密)領(lǐng)域。本文把這項封裝在芯片里的KEELOQ加密技術(shù)用軟件方式實現(xiàn),并針對單片機的特性進行了適當(dāng)改進。這種在單片機中實現(xiàn)的改進算法不僅包含了原來HCS300所具備的所有功能,而且在系統(tǒng)安全性、靈活性、可擴展性、傳輸效率等方面均有較大改善,同時對改進算法在數(shù)據(jù)加密領(lǐng)域作為全新的嘗試,以其特殊的密鑰管理方法獨立于對稱型加密(如DES)與不對稱型加密算法(即公開密鑰體制,如RSA),成為一種適用于無線傳輸領(lǐng)域小型系統(tǒng)的數(shù)據(jù)加密算法。1 KEELOQ技術(shù)簡介及其硬件實現(xiàn)KEELOQ技術(shù)的核心思想是用64bit的EN_KEY64:0(加密密鑰)去加密32bit的CSR31
4、:0(校驗碼)得到32bit的CRYP密文。加密機制為:首先定義一個非線性表,這個非線性表有5位輸入NLF_IN4:0,一位輸出NLF_OUT。它在CSR31:0中間隔均勻地取固定5位:I0、I1、I2、I3、I4,通過非線性產(chǎn)生一個輸出碼NLF_OUT;這一位輸出碼NLF_OUT再與EN_KEY中的15位、CSR中的2位進行異或運算后輸出第一位輸出碼CRYP0;每輸出一位后,EN_KEY、CSR分別進行移位,EN_KEY作循環(huán)移位,CRYP0作為CSR移位的輸入;重復(fù)上述步驟直到輸出32位CRYP0:31。依此法,即使32bit的校驗碼CSR中只有一位發(fā)生變化,用KEELOQ加密算法得到的C
5、RYP密文也會有50%以上的數(shù)據(jù)位(16bit)發(fā)生變化。Microchip公司以KEELOQ技術(shù)為基礎(chǔ)開發(fā)了滾動碼系統(tǒng)專用芯片,HCS300是其中較典型的一款。它是一塊8引腳的編碼IC芯片,里面集成了KEELOQ算法和其他一些功能,帶有四個按鍵接口,實現(xiàn)15位的功能/命令碼。內(nèi)置192bits(12×16bit words)EEPROM,用來存放EN_KEY(加密密鑰)、SN(序列號)、SYNC(同步碼)、SEED(種子碼)等。序列號用來標(biāo)識不同的對象;加密密鑰用來對發(fā)送的數(shù)據(jù)進行加密,增加破譯的難度,它不直接發(fā)送出去;同步計數(shù)器用來抗截獲,每次發(fā)送數(shù)據(jù)時,同步計數(shù)器的值都被更新,
6、所以每次發(fā)送的數(shù)據(jù)都不一樣。種子碼用于安全學(xué)習(xí)時參與加密密鑰的生成。接收方必須先通過學(xué)習(xí)來獲得并存儲發(fā)送方的序列號、加解密密鑰和當(dāng)前同步計數(shù)器的值。學(xué)習(xí)相當(dāng)于身份確認,只有經(jīng)過學(xué)習(xí)的用戶才能與主機通信。主機在接收到信號后,首先比對序列號,然后利用學(xué)習(xí)過程中得到并存儲的加密密鑰對接收的數(shù)據(jù)進行解密;接著檢查同步計數(shù)器是否匹配,在確認其匹配后,再去處理接收到的按鍵信令,并根據(jù)接收到的按鍵信令作出相應(yīng)的動作反應(yīng)。HCS300的系統(tǒng)使每次發(fā)送的密文都不相同,有效防止了空中截獲法和數(shù)據(jù)重傳帶來的安全隱患。HCS300系統(tǒng)的加密密鑰在學(xué)習(xí)過程中經(jīng)密鑰生成算法產(chǎn)生。學(xué)習(xí)分為一般學(xué)習(xí)和安全學(xué)習(xí)。一般模式下,解
7、密解鑰由MKEY和SN生成加解密密鑰EN_KEY,其解密密鑰隱含于發(fā)送信息(MKEY和SN)中。安全模式下,增加了種子碼SEED(當(dāng)四鍵一起按時發(fā)送),它與MKEY和SN一起生成加解密密鑰EN_KEY,而SEED_KEY在平時并不發(fā)送,這樣增加了安全性。不過,在學(xué)習(xí)時SEED碼的發(fā)送是不經(jīng)過加密的。2 KEELOQ技術(shù)的不足與改進加密算法的提出盡管KEELOQ技術(shù)有上述獨特的優(yōu)點,但是經(jīng)過深入分析不難發(fā)現(xiàn)KEELOQ算法及其硬件實現(xiàn)技術(shù)也存在一些不足:(1)安全性基于出廠密鑰和種碼SEED。在HCS300芯片中,加密密鑰EN_KEY是由出廠密鑰MKEY、序列號SN和種子碼SEED(安全模式)生
8、成的。而SN和SEED在發(fā)送數(shù)據(jù)的過程中未經(jīng)加密,是可截獲的。理論上出廠密鑰一經(jīng)確定一般不會更改。所以,一旦出廠密鑰外泄,后果極其嚴重。(2)擴展功能弱、升級不方便。其算法由硬件芯片實現(xiàn)。其所能實現(xiàn)的功能由按鍵決定。其按鍵只有4個,最多也只有15種組合。發(fā)送方無法附加其余的信息(對于大多領(lǐng)域來說,它要求能發(fā)送一些附加信息,如用戶的姓名、年齡、出生日期等),功能擴展幾乎不可能。另外,某一特定型號的芯片其序列號和同步計數(shù)器的長度是固定的。當(dāng)系統(tǒng)建成后,開發(fā)者如果想只通過軟件升級來擴充系統(tǒng)的容量或提高系統(tǒng)的性能、用硬件實現(xiàn)技術(shù)基本不可能。(3)對功能碼的檢錯和糾錯的功能較弱。在無線傳輸中,出現(xiàn)誤碼的
9、概率比較大。功能碼代表所要實現(xiàn)的功能,如開門、報警、開閥等。如果發(fā)送的數(shù)據(jù)是0010,而接收的數(shù)據(jù)為0100,其后果非常嚴重。(4)傳輸效率較低。在發(fā)送的數(shù)據(jù)中,其有用信息(如序列號、功能碼)全部在固定碼中,加密碼只作為一種加密用的附加數(shù)據(jù),這樣不但降低了安全性,而且傳輸效率不高。以HCS300為例,發(fā)送的66位數(shù)據(jù)中只有32位為有用信息,傳輸效率比較低。 (5)無法用于數(shù)據(jù)加密。由于其是由硬件芯片實現(xiàn)的,它所能加密的數(shù)據(jù)只限于序列號、同步碼等預(yù)先存在HCS300的EEPROM中的數(shù)據(jù)。它沒有數(shù)據(jù)入口,無法對數(shù)據(jù)流進行加密。(6)受硬件設(shè)計限制,靈活性差,成本較高,由于不擁有核心技術(shù),容易受制
10、于人?;谏鲜龇治?,筆者結(jié)合單片機的特性,對KEELOQ算法提出如下改進:(1)保留出廠密鑰,但引入隨機數(shù),防止出廠密鑰和種碼的泄漏,用戶可隨時改變加密密鑰。(2)改進數(shù)據(jù)傳輸?shù)母袷?,把同步碼映射到各組待加密的數(shù)據(jù)中,提高傳輸效率。(3)增加對功能碼或關(guān)鍵數(shù)據(jù)的檢錯和糾錯的功能。(4)增加數(shù)據(jù)入口,改變對加密數(shù)據(jù)的長度要求,使其適合批量的數(shù)據(jù)加密。數(shù)據(jù)加密系統(tǒng)的兩個基本要素是加密算法和密鑰管理。密鑰是控制加密算法和解密算法的關(guān)鍵信息,其產(chǎn)生、傳輸、存儲等工作十分重要。目前數(shù)據(jù)加密技術(shù)可以分為二類,即對稱型加密、不對稱型加密。對稱型加密(如DES算法)使用單個密鑰對數(shù)據(jù)進行加密或解密。不對稱型加
11、密算法也稱公用密鑰算法(如RSA算法),其特點是有二個密鑰(即公用密鑰和私有密鑰),只有二者搭配使用才能完成加密和解密的全過程。便兩者都在密鑰的管理和分發(fā)上遇到一些困難。KEELOQ密鑰管理機制的訂特別是對每個用戶都有自己獨特的加解密密鑰,在學(xué)習(xí)過程中發(fā)送到主機并保存。但密鑰信息隱含在每次發(fā)送的信息(SN和MKEY)中(即使在安全模式下,種子碼SEED也是固定碼,可截獲),并且依賴于生產(chǎn)廠家和出廠密鑰,不可更改。本改進算法主要針對無線傳輸領(lǐng)域的小型系統(tǒng),可以在學(xué)習(xí)過程中引入隨機參數(shù)RANDOM,與MKEY、SN一起生成EN_KEY。這個隨機數(shù)據(jù)RANDOM在同一次學(xué)習(xí)時相同,但每次學(xué)習(xí)時都會改
12、變。這樣,加密密鑰就不依賴于生產(chǎn)廠家和出廠密鑰并且在用戶感到密鑰有可能泄漏時不隨時改變數(shù)據(jù),增加了安全性。3 改進加密算法在單片機中的實現(xiàn)整個系統(tǒng)分為用戶端(CLIENT)和主機端(SERVER),系統(tǒng)框圖如圖1所示。在本系統(tǒng)中,考慮功耗、外圍功能等需要,選用飛利浦的LPC76X系列芯片。P87LPC764是20腳封裝的單片機,可以在寬范圍的性能要求下實現(xiàn)高集成度低成本的解決方案,4Kbits的ROM,32Byte用戶代碼區(qū)可用來存放序列碼及設(shè)置參數(shù),內(nèi)帶看門狗定時器,處理器的指令執(zhí)行速度為標(biāo)準(zhǔn)80C51 MCU的兩倍。EEPROM發(fā)送部分選用AT2401(128×8 bits),接
13、收部分選用AT2404(1024×8bits),8-DIP封裝,I2C總線接口,擦寫次數(shù)1百萬次,保存時間100年。用戶必須經(jīng)過學(xué)習(xí)后才能與主機通信。在學(xué)習(xí)過程中,用戶把序旬號SN、出廠密鑰MKEY、加密密鑰EN_KEY送給主機,主機對每一個用戶要開辟一片EEPROM來存儲用戶信息。在主機SERVER端,每個用戶CLIENT都需要有16bits的存儲空間。所以本系統(tǒng)共可接收511個用戶的信息。整個系統(tǒng)的設(shè)計充分考慮系統(tǒng)的升級和功能的擴展。其中出廠密鑰、序列號、加密密鑰、隨機數(shù)均可按需要進行擴展或縮減。如果從安全角度考慮,可把序列號存放在微處理器的ROM中。3.1 學(xué)習(xí)過程所謂學(xué)習(xí),就
14、是使用戶在主機端中注冊登記的過程。引進隨機數(shù)RANDOM,對每一次學(xué)習(xí)來說,它所產(chǎn)生的隨機的數(shù)是不一樣的,它所發(fā)送的數(shù)據(jù)也是變化的、不可預(yù)知,提高了安全性。另外,RANDOM和序列號SN、出廠密鑰MKEY一起生成加解密密鑰EN_KEY,用戶可以隨時對加密密鑰EN_KEY進行修改,這樣也提高了安全性。進入學(xué)習(xí)模式后,用戶端經(jīng)三次數(shù)據(jù)發(fā)送完成整個學(xué)習(xí)。過程如下:(1)用戶端產(chǎn)生隨機數(shù)RANDOM,與MKEY、SN經(jīng)加密后發(fā)送。主機接收到數(shù)據(jù)解密后,比對MKEY和SN,確認用戶是本系統(tǒng)用戶(比對MKEY)并且是一個新用戶(SN不在EEPROM)時,開辟空間,保存SN和RANDOM。(2)用戶端和主機
15、端分別利用密鑰生成算法生成,由MKEY+SN+RANDOM生成EN_KEY,并存入相應(yīng)的 存儲的空間。(3)用戶端利用EN_KEY對SN、RANDOM、SYNC、MKEY進行KEELOQ加密并發(fā)送。主機接收到數(shù)據(jù)后,比對MKEY、RANDOM、SN正確后把SYNC存入相應(yīng)空間,請求第二次發(fā)送(只雙向通信中才有請求功能)。(4)用戶端收到發(fā)送請求后(如果是單向通信,則等待后直接發(fā)送)再對SN、RANDOM、SYNC、MKEY加密后發(fā)送。因為SYNC是每次改變的,所以這次數(shù)據(jù)位和上一次發(fā)送的數(shù)據(jù)位改變在50%以上。(5)主機在接收到數(shù)據(jù)解密后,比對同步碼SYNC,如果用戶和主機的同步碼變化規(guī)律相同
16、則學(xué)習(xí)成功。三次發(fā)送即完成一次學(xué)習(xí)過程。第二次學(xué)習(xí)時隨機數(shù)重新產(chǎn)生,所以要求學(xué)習(xí)時三次數(shù)據(jù)發(fā)送是連續(xù)的,否則無效。以上各步中有任何一次數(shù)據(jù)比對挫敗則學(xué)習(xí)失敗。主機端在前二次接收到數(shù)據(jù)后等待24s仍未見用戶發(fā)送數(shù)據(jù)則學(xué)習(xí)失敗。學(xué)習(xí)挫敗后用戶重新學(xué)習(xí)。隨機數(shù)利利用單片機的計數(shù)器產(chǎn)生,有兩種方法供選用:(1)單次操作完畢后,單片機的計數(shù)器一直不停地計數(shù),在外界對它進行再次操作或者要發(fā)送數(shù)據(jù)時停止計數(shù)。因為外界的操作或發(fā)送的時間是不定的,所以計數(shù)寄存器里面的數(shù)是隨機的。(2)可以對按鍵或操作時間進行計時。用戶每次按鍵或操作的時間都是不定的,并且按鍵從抖動到穩(wěn)定的時間也是不定的,對它進行計時,如果把間隔
17、的時間取得合適,即可得到近似隨機數(shù)。3.2 發(fā)送過程在數(shù)據(jù)發(fā)送前,必須先對數(shù)據(jù)進行加密。數(shù)據(jù)加密的過程如下:(1)重新定制非線性表。原算法是用64位密鑰去加密32位的明碼數(shù)據(jù),現(xiàn)在把它改為64位密鑰去加密64位的明碼數(shù)據(jù),密文長度也為64位,可按原規(guī)律擴展非線性即可。(2)對數(shù)據(jù)進行分組。盡管應(yīng)用場合針對小型系統(tǒng)(數(shù)據(jù)傳輸量較?。?,但還是必須對所要加密的數(shù)據(jù)進行分組。在使用分組時,對明文尾部不滿一個整組的碎片采用填充隨機數(shù)的辦法將其擴充為一個整組,然后進行正常加密。即數(shù)據(jù)分組長度、密鑰長度和輸出密文長度均為64位。(3)把同步碼的變化反映到各組數(shù)據(jù)中。同步碼每次發(fā)送時均會改變,它是保證系統(tǒng)每次
18、發(fā)送的密文都不一樣的根本。只需進行分配、疊代、移位、異或等簡單的變換即可完成反映的任務(wù)。(4)封裝算法。算法經(jīng)封裝后可方便地被各種程序調(diào)用。算法的入口參數(shù)有三個:EN_KEY、Data、Mode。其中,EN_KEY為64位的加密密鑰;Data為64位被加密或被解密的數(shù)據(jù);Mode為工作方式,有加密或解密兩種。HCS300芯片發(fā)送的數(shù)據(jù)主要由固定碼和加密碼組成。固定碼34bit,加密碼32bit。固定碼主要由28位序列號、4位功能碼(按鍵信息)和2位標(biāo)志組成。加密碼則由16位同步碼、28位序列號(可擴展)、4位功能碼組成。經(jīng)改進后可用于數(shù)據(jù)加密的格式如圖2所示。在發(fā)送時還要加入檢錯和糾錯功能。檢錯視系統(tǒng)的要求可選奇偶校驗、CRC校驗等。糾象牙可以用漢明碼。該碼的實現(xiàn)原理是在數(shù)據(jù)中加入幾個校驗位,并把數(shù)據(jù)的每個二進制位分配在幾個奇偶校驗組中;當(dāng)某位出錯后,就會引起有關(guān)的幾個校驗組的值發(fā)生變化。這不但可以發(fā)現(xiàn)錯誤,還能指出哪一位,為自動糾錯提供了依據(jù)。
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 司機雇傭勞務(wù)合同范本
- 化學(xué)助劑采購合同范本
- 丹廈店面租房合同范本
- 中央團校培訓(xùn)心得體會
- 運城小學(xué)英語試卷
- 低壓電工試題庫含參考答案
- 會員服裝租賃合同范本
- 體現(xiàn)返利合同范本
- 中級電工考試模擬題(附參考答案)
- 烹飪原料知識??荚囶}含參考答案
- 老年護理團隊建設(shè)方案
- 《跨學(xué)科實踐活動3 水質(zhì)檢測及自制凈水器》教學(xué)設(shè)計
- 開塞露的使用
- 公務(wù)員2022年國考申論試題(行政執(zhí)法卷)及參考答案
- IQC檢驗作業(yè)指導(dǎo)書
- 2024年中國泌尿科內(nèi)窺鏡市場調(diào)查研究報告
- 五屆全國智能制造應(yīng)用技術(shù)技能大賽數(shù)字孿生應(yīng)用技術(shù)員(智能制造控制技術(shù)方向)賽項實操樣題
- 第二章 聲現(xiàn)象 單元測試卷 2024-2025學(xué)年人教版物理八年級上冊
- 中國銀行中銀數(shù)字服務(wù)(南寧)有限公司招聘筆試真題2023
- 雞尾酒知識大全
- DL∕T 1432.1-2015 變電設(shè)備在線監(jiān)測裝置檢驗規(guī)范 第1部分通 用檢驗規(guī)范
評論
0/150
提交評論