新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > [組圖]一種基于KEELOQ的改進(jìn)加密算法及其在單片機(jī)中的實(shí)

[組圖]一種基于KEELOQ的改進(jìn)加密算法及其在單片機(jī)中的實(shí)

作者: 時(shí)間:2011-04-29 來(lái)源:網(wǎng)絡(luò) 收藏

3.1 學(xué)習(xí)過(guò)程
  所謂學(xué)習(xí),就是使用戶在主機(jī)端中注冊(cè)登記的過(guò)程。引進(jìn)隨機(jī)數(shù)RANDOM,對(duì)每一次學(xué)習(xí)來(lái)說(shuō),它所產(chǎn)生的隨機(jī)數(shù)是不一樣的,它所發(fā)送的數(shù)據(jù)也是變化的、不可預(yù)知的,提高了安全性。另外,RANDOM和序列號(hào)SN、出廠密鑰MKEY一起生成加解密密鑰EN_KEY,使得EN_KEY不再依賴于出廠密鑰MKEY,用戶可以隨時(shí)對(duì)加解密密鑰EN_KEY進(jìn)行修改,這樣也提高了安全性。
  進(jìn)入學(xué)習(xí)模式后,用戶端經(jīng)三次數(shù)據(jù)發(fā)送完成整個(gè)學(xué)習(xí)。過(guò)程如下:
  (1)用戶端產(chǎn)生隨機(jī)數(shù)RANDOM,與MKEY、SN經(jīng)后發(fā)送。主機(jī)接收到數(shù)據(jù)解密后,比對(duì)MKEY和SN,確認(rèn)用戶是本系統(tǒng)用戶(比對(duì)MKEY)并且是一個(gè)新用戶(SN不在EEPROM中)時(shí),開(kāi)辟空間,保存SN和RANDOM。
  (2)用戶端和主機(jī)端分別利用密鑰生成生成,由MKEY+SN+RANDOM生成EN_KEY,并存入相應(yīng)的存儲(chǔ)空間。
  (3)用戶端利用EN_KEY對(duì)SN、RANDOM、SYNC、MKEY進(jìn)行并發(fā)送。主機(jī)接收到數(shù)據(jù)后,比對(duì)MKEY、RANDOM、SN正確后把SYNC存入相應(yīng)空間,請(qǐng)求第二次發(fā)送(只雙向通信中才有請(qǐng)求功能)。
  (4)用戶端收到發(fā)送請(qǐng)求后(如果是單向通信,則等待后直接發(fā)送)再對(duì)SN、RANDOM、SYNC、MKEY后發(fā)送。因?yàn)镾YNC是每次改變的,所以這次數(shù)據(jù)位和上一次發(fā)送的數(shù)據(jù)位改變?cè)?0%以上。
  (5)主機(jī)在接收到數(shù)據(jù)解密后,比對(duì)同步碼SYNC,如果用戶和主機(jī)的同步碼變化規(guī)律相同則學(xué)習(xí)成功。
  三次發(fā)送即完成一次學(xué)習(xí)過(guò)程。第二次學(xué)習(xí)時(shí)隨機(jī)數(shù)重新產(chǎn)生,所以要求學(xué)習(xí)時(shí)三次數(shù)據(jù)發(fā)送是連續(xù)的,否則無(wú)效。以上各步中有任何一次數(shù)據(jù)比對(duì)失敗則學(xué)習(xí)失敗。主機(jī)端在前二次接收到數(shù)據(jù)后等待24s仍未見(jiàn)用戶發(fā)送數(shù)據(jù)則學(xué)習(xí)失敗。學(xué)習(xí)失敗后用戶需重新學(xué)習(xí)。
  隨機(jī)數(shù)則利用的計(jì)數(shù)器產(chǎn)生,有兩種方法供選用:
  (1)單次操作完畢后,的計(jì)數(shù)器一直不停地計(jì)數(shù),在外界對(duì)它進(jìn)行再次操作或者要發(fā)送數(shù)據(jù)時(shí)停止計(jì)數(shù)。因?yàn)橥饨绲牟僮骰虬l(fā)送的時(shí)間是不定的,所以計(jì)數(shù)寄存器里面的數(shù)是隨機(jī)的。
  (2)可以對(duì)按鍵或操作時(shí)間進(jìn)行計(jì)時(shí)。用戶每次按鍵或操作的時(shí)間都是不定的,并且按鍵從抖動(dòng)到穩(wěn)定的時(shí)間也是不定的,對(duì)它進(jìn)行計(jì)時(shí),如果把間隔的時(shí)間取得合適,即可得到近似隨機(jī)數(shù)。
3.2 發(fā)送過(guò)程
  在數(shù)據(jù)發(fā)送前,必須先對(duì)數(shù)據(jù)進(jìn)行加密。數(shù)據(jù)加密的過(guò)程如下:
  (1)重新定制非線性表。原是用64位密鑰去加密32位的明碼數(shù)據(jù),現(xiàn)在把它改為64位密鑰去加密64位的明碼數(shù)據(jù),密文長(zhǎng)度也為64位,可按原規(guī)律擴(kuò)展非線性表即可。
  (2)對(duì)數(shù)據(jù)進(jìn)行分組。盡管應(yīng)用場(chǎng)合針對(duì)小型系統(tǒng)(數(shù)據(jù)傳輸量較小),但還是必須對(duì)所要加密的數(shù)據(jù)進(jìn)行分組。在使用分組時(shí),對(duì)明文尾部不滿一個(gè)整組的碎片采用填充隨機(jī)數(shù)的辦法將其擴(kuò)充為一個(gè)整組,然后進(jìn)行正常加密。即數(shù)據(jù)分組長(zhǎng)度、密鑰長(zhǎng)度和輸出密文長(zhǎng)度均為64位。
  (3)把同步碼的變化反映到各組數(shù)據(jù)中。同步碼每次發(fā)送時(shí)均會(huì)改變,它是保證系統(tǒng)每次發(fā)送的密文都不一樣的根本。只需進(jìn)行分配、疊代、移位、異或等簡(jiǎn)單的變換即可完成反映的任務(wù)。
  (4)封裝。算法經(jīng)封裝后可方便地被各種程序調(diào)用。算法的入口參數(shù)有三個(gè):EN_KEY、Data、Mode。其中EN_KEY為64位的加密密鑰;Data為64位被加密或被解密的數(shù)據(jù);Mode為工作方式,有加密或解密兩種。
  HCS300芯片發(fā)送的數(shù)據(jù)主要由固定碼和加密碼組成。固定碼34bit,加密碼32bit。固定碼主要由28位序列號(hào)、4位功能碼(按鍵信息)和2位標(biāo)志組成。加密碼則由16位同步碼、28位序列號(hào)(可擴(kuò)展)、4位功能碼組成。經(jīng)后可用于數(shù)據(jù)加密的格式如圖2所示。

本文引用地址:http://butianyuan.cn/article/172855.htm



圖2 數(shù)據(jù)發(fā)送格式

  在發(fā)送時(shí)還要加入檢錯(cuò)和糾錯(cuò)功能。檢錯(cuò)視系統(tǒng)的要求可選奇偶校驗(yàn)、CRC校驗(yàn)等。糾錯(cuò)可以用漢明碼。該碼的實(shí)現(xiàn)原理是在數(shù)據(jù)中加入幾個(gè)校驗(yàn)位,并把數(shù)據(jù)的每個(gè)二進(jìn)制位分配在幾個(gè)奇偶校驗(yàn)組中;當(dāng)某位出錯(cuò)后,就會(huì)引起有關(guān)的幾個(gè)校驗(yàn)組的值發(fā)生變化。這不但可以發(fā)現(xiàn)錯(cuò)誤,還能指出哪一位,為自動(dòng)糾錯(cuò)提供了依據(jù)。
3.3 接收過(guò)程
  算法的解密密鑰由學(xué)習(xí)時(shí)接收并存儲(chǔ)在EEPROM中。其加密和解密的密鑰是一樣的,解密是加密的逆過(guò)程。接收過(guò)程主要包括序列號(hào)搜索、比對(duì)、解密、同步碼的比對(duì)等過(guò)程。接收方的程序流程如圖3所示。


圖3 接收流程圖

  本文提出的技術(shù)的加密算法中的實(shí)現(xiàn)技術(shù),可以節(jié)約硬件成本,減少對(duì)硬件的依賴,改善系統(tǒng)性能,擴(kuò)展了在數(shù)據(jù)加密領(lǐng)域的應(yīng)用,特別適合應(yīng)用于無(wú)線傳輸領(lǐng)域的小型系統(tǒng)的數(shù)據(jù)加密。隨著射頻技術(shù)、無(wú)線技術(shù)和藍(lán)牙技術(shù)的發(fā)展,射頻卡身份證的實(shí)施,其應(yīng)用領(lǐng)域可以擴(kuò)展到身份識(shí)別、安全管理、防盜報(bào)警、考勤、收費(fèi)、無(wú)線抄表、智能監(jiān)控、隨機(jī)檢測(cè)器、標(biāo)識(shí)信息等諸多領(lǐng)域。


上一頁(yè) 1 2 下一頁(yè)

評(píng)論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉