[組圖]一種基于KEELOQ的改進加密算法及其在單片機中的實
3.1 學習過程
所謂學習,就是使用戶在主機端中注冊登記的過程。引進隨機數(shù)RANDOM,對每一次學習來說,它所產(chǎn)生的隨機數(shù)是不一樣的,它所發(fā)送的數(shù)據(jù)也是變化的、不可預知的,提高了安全性。另外,RANDOM和序列號SN、出廠密鑰MKEY一起生成加解密密鑰EN_KEY,使得EN_KEY不再依賴于出廠密鑰MKEY,用戶可以隨時對加解密密鑰EN_KEY進行修改,這樣也提高了安全性。
進入學習模式后,用戶端經(jīng)三次數(shù)據(jù)發(fā)送完成整個學習。過程如下:
(1)用戶端產(chǎn)生隨機數(shù)RANDOM,與MKEY、SN經(jīng)加密后發(fā)送。主機接收到數(shù)據(jù)解密后,比對MKEY和SN,確認用戶是本系統(tǒng)用戶(比對MKEY)并且是一個新用戶(SN不在EEPROM中)時,開辟空間,保存SN和RANDOM。
(2)用戶端和主機端分別利用密鑰生成算法生成,由MKEY+SN+RANDOM生成EN_KEY,并存入相應的存儲空間。
(3)用戶端利用EN_KEY對SN、RANDOM、SYNC、MKEY進行KEELOQ加密并發(fā)送。主機接收到數(shù)據(jù)后,比對MKEY、RANDOM、SN正確后把SYNC存入相應空間,請求第二次發(fā)送(只雙向通信中才有請求功能)。
(4)用戶端收到發(fā)送請求后(如果是單向通信,則等待后直接發(fā)送)再對SN、RANDOM、SYNC、MKEY加密后發(fā)送。因為SYNC是每次改變的,所以這次數(shù)據(jù)位和上一次發(fā)送的數(shù)據(jù)位改變在50%以上。
(5)主機在接收到數(shù)據(jù)解密后,比對同步碼SYNC,如果用戶和主機的同步碼變化規(guī)律相同則學習成功。
三次發(fā)送即完成一次學習過程。第二次學習時隨機數(shù)重新產(chǎn)生,所以要求學習時三次數(shù)據(jù)發(fā)送是連續(xù)的,否則無效。以上各步中有任何一次數(shù)據(jù)比對失敗則學習失敗。主機端在前二次接收到數(shù)據(jù)后等待24s仍未見用戶發(fā)送數(shù)據(jù)則學習失敗。學習失敗后用戶需重新學習。
隨機數(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ù)進行分組。盡管應用場合針對小型系統(tǒng)(數(shù)據(jù)傳輸量較小),但還是必須對所要加密的數(shù)據(jù)進行分組。在使用分組時,對明文尾部不滿一個整組的碎片采用填充隨機數(shù)的辦法將其擴充為一個整組,然后進行正常加密。即數(shù)據(jù)分組長度、密鑰長度和輸出密文長度均為64位。
(3)把同步碼的變化反映到各組數(shù)據(jù)中。同步碼每次發(fā)送時均會改變,它是保證系統(tǒng)每次發(fā)送的密文都不一樣的根本。只需進行分配、疊代、移位、異或等簡單的變換即可完成反映的任務。
(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位標志組成。加密碼則由16位同步碼、28位序列號(可擴展)、4位功能碼組成。經(jīng)改進后可用于數(shù)據(jù)加密的格式如圖2所示。本文引用地址:http://www.ex-cimer.com/article/172855.htm
圖2 數(shù)據(jù)發(fā)送格式
在發(fā)送時還要加入檢錯和糾錯功能。檢錯視系統(tǒng)的要求可選奇偶校驗、CRC校驗等。糾錯可以用漢明碼。該碼的實現(xiàn)原理是在數(shù)據(jù)中加入幾個校驗位,并把數(shù)據(jù)的每個二進制位分配在幾個奇偶校驗組中;當某位出錯后,就會引起有關的幾個校驗組的值發(fā)生變化。這不但可以發(fā)現(xiàn)錯誤,還能指出哪一位,為自動糾錯提供了依據(jù)。
3.3 接收過程
改進算法的解密密鑰由學習時接收并存儲在EEPROM中。其加密和解密的密鑰是一樣的,解密是加密的逆過程。接收過程主要包括序列號搜索、比對、解密、同步碼的比對等過程。接收方的程序流程如圖3所示。
圖3 接收流程圖
本文提出的基于KEELOQ技術的改進加密算法及其在單片機中的實現(xiàn)技術,可以節(jié)約硬件成本,減少對硬件的依賴,改善系統(tǒng)性能,擴展了在數(shù)據(jù)加密領域的應用,特別適合應用于無線傳輸領域的小型系統(tǒng)的數(shù)據(jù)加密。隨著射頻技術、無線技術和藍牙技術的發(fā)展,射頻卡身份證的實施,其應用領域可以擴展到身份識別、安全管理、防盜報警、考勤、收費、無線抄表、智能監(jiān)控、隨機檢測器、標識信息等諸多領域。
評論