新聞中心

EEPW首頁 > 設計應用 > 基于跳碼技術的無線密碼鎖設計

基于跳碼技術的無線密碼鎖設計

——
作者: 時間:2010-01-25 來源:電子產品世界 收藏

  0 引言

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

  無線電子鎖系統(tǒng)相比傳統(tǒng)機械鎖系統(tǒng)具有無接觸性、方便快捷、易于管理等優(yōu)點,伴隨著RF器件的價格逐步降低和各種數控系統(tǒng)的集成化要求,無線電子鎖在更多的領域得到了應用。早期的無線電子鎖系統(tǒng),鑰匙向鎖發(fā)送的或者是沒有加密的固定密碼,或者是經過PT2262,VD5026等編碼芯片編碼的密碼,但這些方式產生的密碼都是固定的內容,且長度較短(一般不超過16位),入侵者只要利用"拷貝重發(fā)"或者"掃描跟蹤"等方法就可輕而易舉地破解,因此這樣的方案都應用于對安全性要求不高的場合。

  為滿足對更高安全性的要求,本文提出一種基于"跳碼"的無線鎖解決方案。所謂跳碼,是指鑰匙每次向鎖發(fā)送的密碼都是唯一而隨機的,入侵者無法預測,即使記錄了原來的開鎖密碼也不能用于下次開鎖,因此安全性極高。

  1 跳碼的軟件實現

  目前跳碼的實現多借助于專用的處理器硬件,如Microchip的HCSXXX系列,美國MACRSTAR公司的TR13XX,ACM公司的ACM1330E系列,這些產品都是專利產品,內部算法對外不公開。設計者要想使用這些產品,必須學習新的處理器,并且付出一定的專利費。這里提出一種跳碼的完全軟件實現,使用合適的普通單片機就可運行這種跳碼軟件。

  跳碼的實現核心是非線性加密算法,利用32位非線性反饋移位寄存器(NLFSR)和64位密鑰組成的加密單元,可實現對輸入32位二進制數據的加密,加密后的輸出是32位二進制隨機數。輸入有一位變化,加密后的輸出統(tǒng)計上將有一半以上的位發(fā)生變化,具有相當高的隨機性。圖1是跳碼加密和解密的示意圖:

  

 

  注意,對于同一套加密系統(tǒng),加密單元和解密單元的64位密鑰是相同的,且是不公開的,這是典型的私鑰加密系統(tǒng)。

  1.1 加密單元

  

 

  依據上圖,加密時,將欲加密的32位二進制數據X存入32位移位寄存器(shift register,SR)中,選取32位SR的1、9、20、26、31位和固定32位二進制數據OX3A5C742E組成非線性函數(NLR)的輸入,NLR的輸出、SR的0、16位、以及64位密鑰移位寄存器(key FSR)移位后的0位,這些位數據異或(XOR)后產生的1bit數據作為32位SR的31位。循環(huán)此操作528輪后,32位SR 中的數據即為X經加密后的跳碼數據Y。這里給出用VC6.0對該加密算法的實現:

  

 

  

 

  1.2 解密單元

  

 

  跳碼解密單元是加密單元的逆操作。依據圖3,解密時,將欲解密的32位二進制跳碼Y存入32位SR中,選取32位SR的0、8、19、25、30位和固定32位二進制數據OX3A5C742E組成非線性函數NLR的輸入,NLR的輸出、SR的15、31位、以及64位key FSR移位后的15位,這些位數據異或(XOR)后產生的1bit數據作為32位SR的0位。循環(huán)此操作528輪后,32位SR中的數據即為解密后的數據X。這里給出用VC6.0對該解密算法的實現:

  

 

  1.3 跳碼加解密算法在單片機中的實現

  上述跳碼算法,即加密函數Encrypt()和解密函數Decrypt(),接收的參數為32位無符號整數和64位無符號整數,返回的是32位無符號整數。單片機大多是8位機,其編譯開發(fā)環(huán)境所定義的同樣數據類型的長度與PC機有所不同,如unsigned int在PC上定義為32位無符號二進制數,而在單片機上常定義為16位無符號二進制數。假設單片機的unsigned int和unsigned long分別表示16位無符號二進制數和32位無符號二進制數,可將上述函數改為:

  

 

  這里,用兩個32位無符號整數key_high和key_low分別表示64位無符號整數的高32位和低32位,程序的實現也要做相應的改變。

  針對不同編譯器所定義的數據類型,可采用相似方法移植跳碼算法程序。

  2 基于跳碼的無線鎖方案

  這里選用Atmel公司的AVR單片機作為鎖和鑰匙的處理器,無線收發(fā)模塊采用普通的RF模塊即可。下面給出基于跳碼的無線鎖方案的硬件框圖:

  

 

  圖4中,鑰匙和鎖進行單向通信,即按下鑰匙按鍵1時,鑰匙向鎖發(fā)送加密后的跳碼數據,鎖收到后解密,并判斷執(zhí)行。鑰匙是低功耗模塊,它大部分時間處于休眠狀態(tài),每當按鍵1按下時,鑰匙被喚醒,發(fā)送加密后形成的跳碼數據。鑰匙要便于攜帶,因此要求體積小,待機時間長,故這里選用Atmel公司的Atiny系列單片機,并由鈕扣電池供電。鎖對功耗和尺寸不敏感,故這里選用Atmega8L單片機,供電方式可以靈活一點。

  2.1 鑰匙工作原理

  通過對跳碼算法的介紹,可以知道對于給定的任意32位二進制數,利用跳碼加密算法Encrypt ()加密后得到的跳碼是個固定的32位二進制數,這樣不能應付"拷貝重發(fā)"的入侵手法。所以鑰匙每次加密的數據都應該是不同的,這可以在鑰匙內部維持一個計數器來實現,每當鑰匙的按鍵被按下一次時,鑰匙內部的計數器就自動加1,并將新計數器值保存在內部EEPROM中,作為下次計數器增加的起點。同時,利用加密算法加密新計數器值,加密后生成的跳碼作為開鎖命令發(fā)送出去。這里,將該計數器定義為32位無符號二進制數。鑰匙發(fā)送的信息幀格式為:

  

 

  其中,一個字節(jié)的前導符是固定的位序列0b01010101,它沒有加密,主要目的是防止非本產品系列的無關產品發(fā)送的無線數據的干擾,即接收端只認可第一字節(jié)為0b01010101的字節(jié)序列。32位跳碼部分是鑰匙加密計數器后的值,這是開鎖命令,具有極高的安全性。

  2.2 鎖的工作原理

  鎖平時處于監(jiān)聽狀態(tài),當接收了字節(jié)0b01010101時,鎖進入接收32位跳碼程序,否則重新進入監(jiān)聽狀態(tài)。當接收到32位跳碼數據后,鎖利用Decrypt()解密后得到發(fā)端送來的計數器值,發(fā)端如何依據此計數器值判斷是否開鎖呢?接收端也維持一個計數器CNT1,它保存的是上次成功開鎖的計數器值。參見圖5,每當接收端解密跳碼后,得到的是32位計數器值CNT2,接收端操作如下:

  若CNT2CNT1,或CNT2=CNT1,可能是以前的數據被"拷貝重發(fā)",不動作。

  若0CNT2-CNT1256,或CNT2=256,CNT2落在了當前同步窗口中,是合法的命令,則接收端動作(即開鎖),同時將此CNT2存入EEPROM中,作為新的同步起點。

  若CNT2-CNT1256,不動作。

  

 

  鎖和鑰匙在首次使用時,或者鑰匙的多次不合適操作導致鑰匙和鎖的計數器差值超過了同步窗口,這時就必須通過學習,讓鎖記住鑰匙的計數器值,實現同步。學習的操作是:按下鎖按鍵2,然后再按下鑰匙按鍵1(同時放開鎖按鍵2),這樣鎖就接收了鑰匙來的信息,解密后得到計數器值,然后存儲此計數器值。為保證安全,學習時必須保證鎖處于開啟狀態(tài),即說明發(fā)起學習者是鎖的合法擁有者。

  2.3 方案的安全性分析

  常見的攻擊無線遙控系統(tǒng)的方式有:a.拷貝重發(fā):即入侵者通過儀器記錄下本次通信的無線電信號,然后重發(fā)這些數據實施主動攻擊。因此采用固定的密碼,無法抵御這種攻擊。本方案在每次接收到合法的計數器CNT2后,將CNT2存入EEPROM,并作為下次匹配的起點,入侵者記錄的計數器值均小于或等于此值,只要設定只有CNT2CNT1時鎖才動作,就可有效抵御這類攻擊。b.掃描式攻擊:入侵者通過依次發(fā)送所有可能有效密碼實施攻擊。這里,我們設定了密碼長度為32位,有效窗口大小為2 5 6,入侵者通過掃描攻擊成功的概率為256/232=1/224,這是微乎其微的。

  這里,將同步窗口大小定義為256,是為了保證一定的容錯。當使用者在不能與接收端有效通信時,按下鑰匙按鍵導致鑰匙單方面動作,從而使鑰匙和鎖的計數器差值增大。同步窗口大小要合適,太大會降低安全性,太小會因多次誤操作導致鎖和鑰匙不能再自動同步。

  3 結束語

  利用本文介紹的跳碼算法和設計的無線遙控解決方案,能設計出具有高度安全性的無線遙控系統(tǒng),可廣泛應用于對安全性要求較高的場合,如各種報警防盜系統(tǒng)、住宅、辦公樓、汽車及車庫門衛(wèi)管理系統(tǒng),因此具有一定的應用市場。

塵埃粒子計數器相關文章:塵埃粒子計數器原理


評論


技術專區(qū)

關閉