摘要:討論了Microchip公司的KEELOQ加解密算法的實現(xiàn)機制,通過引入隨隨機數(shù),提出了一種新的改進算法,并給出了其在單片機中的實現(xiàn)方案。該算法具有簡單實用、所需硬件資源少、傳輸效率和安全性相對較高等優(yōu)點,適用于需要數(shù)據(jù)加密的小型無線數(shù)據(jù)傳輸系統(tǒng),具有廣闊的應(yīng)用前景。
當(dāng)今的編解碼電路已經(jīng)朝著高度集成化和微電腦化發(fā)展。像普通的固定編解碼芯片和MC145026/145027、PT2262/2272等已被廣泛應(yīng)用于公用系統(tǒng)中,給生活帶來了方便。然而這些芯片不能保證系統(tǒng)的安全性。由于這些系統(tǒng)每次發(fā)送的數(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中),使之很難用于其它(如數(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_KEY[64:0](加密密鑰)去加密32bit的CSR[31:0](校驗碼)得到32bit的CRYP密文。加密機制為:首先定義一個非線性表,這個非線性表有5位輸入NLF_IN[4:0],一位輸出NLF_OUT。它在CSR[31:0]中間隔均勻地取固定5位:I0、I1、I2、I3、I4,通過非線性產(chǎn)生一個輸出碼NLF_OUT;這一位輸出碼NLF_OUT再與EN_KEY中的15位、CSR中的2位進行異或運算后輸出第一位輸出碼CRYP[0];每輸出一位后,EN_KEY、CSR分別進行移位,EN_KEY作循環(huán)移位,CRYP[0]作為CSR移位的輸入;重復(fù)上述步驟直到輸出32位CRYP[0:31]。依此法,即使32bit的校驗碼CSR中只有一位發(fā)生變化,用KEELOQ加密算法得到的CRYP密文也會有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ù)器的值都被更新,所以每次發(fā)送的數(shù)據(jù)都不一樣。種子碼用于安全學(xué)習(xí)時參與加密密鑰的生成。接收方必須先通過學(xué)習(xí)來獲得并存儲發(fā)送方的序列號、加解密密鑰和當(dāng)前同步計數(shù)器的值。學(xué)習(xí)相當(dāng)于身份確認(rèn),只有經(jīng)過學(xué)習(xí)的用戶才能與主機通信。主機在接收到信號后,首先比對序列號,然后利用學(xué)習(xí)過程中得到并存儲的加密密鑰對接收的數(shù)據(jù)進行解密;接著檢查同步計數(shù)器是否匹配,在確認(rèn)其匹配后,再去處理接收到的按鍵信令,并根據(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í)。一般模式下,解密解鑰由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(安全模式)生成的。而SN和SEED在發(fā)送數(shù)據(jù)的過程中未經(jīng)加密,是可截獲的。理論上出廠密鑰一經(jīng)確定一般不會更改。所以,一旦出廠密鑰外泄,后果極其嚴(yán)重。
(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)誤碼的概率比較大。功能碼代表所要實現(xiàn)的功能,如開門、報警、開閥等。如果發(fā)送的數(shù)據(jù)是0010,而接收的數(shù)據(jù)為0100,其后果非常嚴(yán)重。
(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ù),容易受制于人。
基于上述分析,筆者結(jié)合單片機的特性,對KEELOQ算法提出如下改進:
(1)保留出廠密鑰,但引入隨機數(shù),防止出廠密鑰和種碼的泄漏,用戶可隨時改變加密密鑰。
(2)改進數(shù)據(jù)傳輸?shù)母袷剑淹酱a映射到各組待加密的數(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ù)進行加密或解密。不對稱型加密算法也稱公用密鑰算法(如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í)時都會改變。這樣,加密密鑰就不依賴于生產(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),接收部分選用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í),就是使用戶在主機端中注冊登記的過程。引進隨機數(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,確認(rèn)用戶是本系統(tǒng)用戶(比對MKEY)并且是一個新用戶(SN不在EEPROM)時,開辟空間,保存SN和RANDOM。
(2)用戶端和主機端分別利用密鑰生成算法生成,由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ī)律相同則學(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)定的時間也是不定的,對它進行計時,如果把間隔的時間取得合適,即可得到近似隨機數(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)每次發(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ù)。
3.3 接收過程
改進算法的解密密鑰由學(xué)習(xí)時接收并存儲在EEPROM中。其加密和解密的密鑰是一樣的,解密是加密的逆過程。接收過程主要包括序列號搜索、比對、解密、同步碼的比對等過程。接收方的程序流程如圖3所示。
本文提出的基于KEELOQ技術(shù)的改進加密算法及其在單片機中的實現(xiàn)技術(shù),可以節(jié)約硬件成本,減少對硬件硬件的依賴,改善系統(tǒng)性能,擴展了在數(shù)據(jù)加密領(lǐng)域的應(yīng)用,特別適合應(yīng)用于無線傳輸領(lǐng)域的小型系統(tǒng)的數(shù)據(jù)加密。隨著射頻技術(shù)、無線技術(shù)和藍牙技術(shù)的發(fā)展,射頻卡身份證的實施,其應(yīng)用領(lǐng)域可以擴展到身份識別、安全管理、防盜報警、考勤、收費、無線抄表、智能監(jiān)控、隨機檢測器、標(biāo)識信息等諸多領(lǐng)域。
- 實現(xiàn)技術(shù)(5657)
相關(guān)推薦
關(guān)于幾種常用加密算法比較
5537
一種8位單片機中ALU的改進設(shè)計
一種改進的SEDF調(diào)度算法
一種密鑰可配置的DES加密算法的FPGA實現(xiàn)
加密算法(DES,AES,RSA,MD5,SHA1,Base64)
單片機加密問題
單片機系統(tǒng)加密中的動態(tài)反跟蹤措施
CRC算法在單片機通信系統(tǒng)中的實現(xiàn)
DES加密算法是什么
Labview實現(xiàn)的小RSA加密算法
RC4加密算法的FPGA設(shè)計與實現(xiàn)
TEA加密算法在單片機與服務(wù)器進行網(wǎng)絡(luò)通訊中有何作用
WiMAX數(shù)據(jù)傳輸加密的應(yīng)用方法是什么?
uid加密算法
《Visual C# 2008程序設(shè)計經(jīng)典案例設(shè)計與實現(xiàn)》---字符串的加密算法
【單片機解密技術(shù)】電子產(chǎn)品的設(shè)計工程師必讀
【開源三方庫】crypto-js加密算法庫的使用方法
【微五科技CF3310開發(fā)板試用體驗】加密算法驗證
基于神經(jīng)網(wǎng)絡(luò)混沌吸引子公鑰加密算法的FPGA實現(xiàn)
如何去實現(xiàn)一種基于單片機溫度控制監(jiān)測系統(tǒng)設(shè)計
如何去實現(xiàn)一種基于單片機的全自動洗衣機模擬系統(tǒng)設(shè)計
如何去實現(xiàn)一種基于單片機的數(shù)字時鐘設(shè)計
如何去實現(xiàn)一種基于STC89C52單片機的庫函數(shù)呢
如何用匯編語言實現(xiàn)DES加密算法
如何設(shè)計一個基于FPGA的DES加密算法系統(tǒng)
如何選擇加密芯片
如何采用KEELOQ跳碼技術(shù)實現(xiàn)密碼系統(tǒng)設(shè)計?
對稱加密算法是什么
對稱性加密算法
怎樣利用單片機去實現(xiàn)一種數(shù)字加權(quán)平均濾波算法呢
數(shù)據(jù)加密與單片機
最強加密算法?AES加密算法的Matlab和Verilog實現(xiàn) 精選資料推薦
汽車遙控加密算法
目前單片機解密常用的幾種技術(shù)
詳細(xì)介紹Flash型單片機的加密解密方法
軟件加密算法都有哪些,這些算法在哪些方面得到了應(yīng)用
快速硬盤加密算法的設(shè)計與實現(xiàn)
11一種混沌加密算法的硬件實現(xiàn)
25一種GA算法的改進及其實現(xiàn)
11采用對稱加密算法的機制 GB1584.2-1997
15滾動式密鑰加密算法的設(shè)計
0基于三維分割的圖像加密算法
32基于單片機和FPGA的網(wǎng)絡(luò)數(shù)據(jù)加密
27[組圖]一種基于KEELOQ的改進加密算法及其在單片機中的實
636
一種密鑰可配置的DES加密算法的FPGA
949
XXTEA加密算法的KEIL C實現(xiàn)
3095IDESA數(shù)據(jù)加密算法的設(shè)計與實現(xiàn)
0混沌加密算法的MATLAB實現(xiàn)技巧與程序
18基于RSA公鑰加密算法改進方案
22云存儲中的混合加密算法研究
10解讀保護數(shù)據(jù)安全的八種軟件加密算法
9044
一種新的聯(lián)合空域和小波域的圖像加密算法
0常見公鑰加密算法有哪些
42254java實現(xiàn)非對稱加密算法的過程
4971
c語言實現(xiàn)des加密算法詳細(xì)過程
34523
Arnold數(shù)字圖像加密算法
0用matlab實現(xiàn)AES加密算法
11STM32單片機的TEA加密通信設(shè)計
3546如何在單片機上實現(xiàn)TEA加密解密算法
2如何在單片機上實現(xiàn)TEA的加密算法
3176如何實現(xiàn)AES加密算法IP核的設(shè)計與驗證
10單片機適用的一種簡單高效加密算法資料下載
13舉例幾種常見的加密算法
19373
Go常用的加密算法詳細(xì)解讀
2545嵌入式的RSA非對稱加密算法
1376
電子發(fā)燒友App



評論