<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 設(shè)計(jì)應(yīng)用 > 基于跳碼技術(shù)的無線密碼鎖設(shè)計(jì)

          基于跳碼技術(shù)的無線密碼鎖設(shè)計(jì)

          ——
          作者: 時(shí)間:2010-01-25 來源:電子產(chǎn)品世界 收藏

            0 引言

          本文引用地址:http://www.ex-cimer.com/article/103966.htm

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

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

            1 跳碼的軟件實(shí)現(xiàn)

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

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

            

           

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

            1.1 加密單元

            

           

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

            

           

            

           

            1.2 解密單元

            

           

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

            

           

            1.3 跳碼加解密算法在單片機(jī)中的實(shí)現(xiàn)

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

            

           

            這里,用兩個(gè)32位無符號整數(shù)key_high和key_low分別表示64位無符號整數(shù)的高32位和低32位,程序的實(shí)現(xiàn)也要做相應(yīng)的改變。

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

            2 基于跳碼的無線鎖方案

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

            

           

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

            2.1 鑰匙工作原理

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

            

           

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

            2.2 鎖的工作原理

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

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

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

            若CNT2-CNT1256,不動作。

            

           

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

            2.3 方案的安全性分析

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

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

            3 結(jié)束語

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

          塵埃粒子計(jì)數(shù)器相關(guān)文章:塵埃粒子計(jì)數(shù)器原理


          關(guān)鍵詞: 跳碼技術(shù) 無線密碼鎖

          評論


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

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();