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