基于跳碼技術(shù)的無(wú)線(xiàn)密碼鎖設計
0 引言
本文引用地址:http://dyxdggzs.com/article/103966.htm無(wú)線(xiàn)電子鎖系統相比傳統機械鎖系統具有無(wú)接觸性、方便快捷、易于管理等優(yōu)點(diǎn),伴隨著(zhù)RF器件的價(jià)格逐步降低和各種數控系統的集成化要求,無(wú)線(xiàn)電子鎖在更多的領(lǐng)域得到了應用。早期的無(wú)線(xiàn)電子鎖系統,鑰匙向鎖發(fā)送的或者是沒(méi)有加密的固定密碼,或者是經(jīng)過(guò)PT2262,VD5026等編碼芯片編碼的密碼,但這些方式產(chǎn)生的密碼都是固定的內容,且長(cháng)度較短(一般不超過(guò)16位),入侵者只要利用"拷貝重發(fā)"或者"掃描跟蹤"等方法就可輕而易舉地破解,因此這樣的方案都應用于對安全性要求不高的場(chǎng)合。
為滿(mǎn)足對更高安全性的要求,本文提出一種基于"跳碼"的無(wú)線(xiàn)鎖解決方案。所謂跳碼,是指鑰匙每次向鎖發(fā)送的密碼都是唯一而隨機的,入侵者無(wú)法預測,即使記錄了原來(lái)的開(kāi)鎖密碼也不能用于下次開(kāi)鎖,因此安全性極高。
1 跳碼的軟件實(shí)現
目前跳碼的實(shí)現多借助于專(zhuān)用的處理器硬件,如Microchip的HCSXXX系列,美國MACRSTAR公司的TR13XX,ACM公司的ACM1330E系列,這些產(chǎn)品都是專(zhuān)利產(chǎn)品,內部算法對外不公開(kāi)。設計者要想使用這些產(chǎn)品,必須學(xué)習新的處理器,并且付出一定的專(zhuān)利費。這里提出一種跳碼的完全軟件實(shí)現,使用合適的普通單片機就可運行這種跳碼軟件。
跳碼的實(shí)現核心是非線(xiàn)性加密算法,利用32位非線(xiàn)性反饋移位寄存器(NLFSR)和64位密鑰組成的加密單元,可實(shí)現對輸入32位二進(jìn)制數據的加密,加密后的輸出是32位二進(jìn)制隨機數。輸入有一位變化,加密后的輸出統計上將有一半以上的位發(fā)生變化,具有相當高的隨機性。圖1是跳碼加密和解密的示意圖:

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

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


1.2 解密單元

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

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

這里,用兩個(gè)32位無(wú)符號整數key_high和key_low分別表示64位無(wú)符號整數的高32位和低32位,程序的實(shí)現也要做相應的改變。
針對不同編譯器所定義的數據類(lèi)型,可采用相似方法移植跳碼算法程序。
2 基于跳碼的無(wú)線(xiàn)鎖方案
這里選用Atmel公司的AVR單片機作為鎖和鑰匙的處理器,無(wú)線(xiàn)收發(fā)模塊采用普通的RF模塊即可。下面給出基于跳碼的無(wú)線(xiàn)鎖方案的硬件框圖:

圖4中,鑰匙和鎖進(jìn)行單向通信,即按下鑰匙按鍵1時(shí),鑰匙向鎖發(fā)送加密后的跳碼數據,鎖收到后解密,并判斷執行。鑰匙是低功耗模塊,它大部分時(shí)間處于休眠狀態(tài),每當按鍵1按下時(shí),鑰匙被喚醒,發(fā)送加密后形成的跳碼數據。鑰匙要便于攜帶,因此要求體積小,待機時(shí)間長(cháng),故這里選用Atmel公司的Atiny系列單片機,并由鈕扣電池供電。鎖對功耗和尺寸不敏感,故這里選用Atmega8L單片機,供電方式可以靈活一點(diǎn)。
2.1 鑰匙工作原理
通過(guò)對跳碼算法的介紹,可以知道對于給定的任意32位二進(jìn)制數,利用跳碼加密算法Encrypt ()加密后得到的跳碼是個(gè)固定的32位二進(jìn)制數,這樣不能應付"拷貝重發(fā)"的入侵手法。所以鑰匙每次加密的數據都應該是不同的,這可以在鑰匙內部維持一個(gè)計數器來(lái)實(shí)現,每當鑰匙的按鍵被按下一次時(shí),鑰匙內部的計數器就自動(dòng)加1,并將新計數器值保存在內部EEPROM中,作為下次計數器增加的起點(diǎn)。同時(shí),利用加密算法加密新計數器值,加密后生成的跳碼作為開(kāi)鎖命令發(fā)送出去。這里,將該計數器定義為32位無(wú)符號二進(jìn)制數。鑰匙發(fā)送的信息幀格式為:

其中,一個(gè)字節的前導符是固定的位序列0b01010101,它沒(méi)有加密,主要目的是防止非本產(chǎn)品系列的無(wú)關(guān)產(chǎn)品發(fā)送的無(wú)線(xiàn)數據的干擾,即接收端只認可第一字節為0b01010101的字節序列。32位跳碼部分是鑰匙加密計數器后的值,這是開(kāi)鎖命令,具有極高的安全性。
2.2 鎖的工作原理
鎖平時(shí)處于監聽(tīng)狀態(tài),當接收了字節0b01010101時(shí),鎖進(jìn)入接收32位跳碼程序,否則重新進(jìn)入監聽(tīng)狀態(tài)。當接收到32位跳碼數據后,鎖利用Decrypt()解密后得到發(fā)端送來(lái)的計數器值,發(fā)端如何依據此計數器值判斷是否開(kāi)鎖呢?接收端也維持一個(gè)計數器CNT1,它保存的是上次成功開(kāi)鎖的計數器值。參見(jiàn)圖5,每當接收端解密跳碼后,得到的是32位計數器值CNT2,接收端操作如下:
若CNT2CNT1,或CNT2=CNT1,可能是以前的數據被"拷貝重發(fā)",不動(dòng)作。
若0CNT2-CNT1256,或CNT2=256,CNT2落在了當前同步窗口中,是合法的命令,則接收端動(dòng)作(即開(kāi)鎖),同時(shí)將此CNT2存入EEPROM中,作為新的同步起點(diǎn)。
若CNT2-CNT1256,不動(dòng)作。

鎖和鑰匙在首次使用時(shí),或者鑰匙的多次不合適操作導致鑰匙和鎖的計數器差值超過(guò)了同步窗口,這時(shí)就必須通過(guò)學(xué)習,讓鎖記住鑰匙的計數器值,實(shí)現同步。學(xué)習的操作是:按下鎖按鍵2,然后再按下鑰匙按鍵1(同時(shí)放開(kāi)鎖按鍵2),這樣鎖就接收了鑰匙來(lái)的信息,解密后得到計數器值,然后存儲此計數器值。為保證安全,學(xué)習時(shí)必須保證鎖處于開(kāi)啟狀態(tài),即說(shuō)明發(fā)起學(xué)習者是鎖的合法擁有者。
2.3 方案的安全性分析
常見(jiàn)的攻擊無(wú)線(xiàn)遙控系統的方式有:a.拷貝重發(fā):即入侵者通過(guò)儀器記錄下本次通信的無(wú)線(xiàn)電信號,然后重發(fā)這些數據實(shí)施主動(dòng)攻擊。因此采用固定的密碼,無(wú)法抵御這種攻擊。本方案在每次接收到合法的計數器CNT2后,將CNT2存入EEPROM,并作為下次匹配的起點(diǎn),入侵者記錄的計數器值均小于或等于此值,只要設定只有CNT2CNT1時(shí)鎖才動(dòng)作,就可有效抵御這類(lèi)攻擊。b.掃描式攻擊:入侵者通過(guò)依次發(fā)送所有可能有效密碼實(shí)施攻擊。這里,我們設定了密碼長(cháng)度為32位,有效窗口大小為2 5 6,入侵者通過(guò)掃描攻擊成功的概率為256/232=1/224,這是微乎其微的。
這里,將同步窗口大小定義為256,是為了保證一定的容錯。當使用者在不能與接收端有效通信時(shí),按下鑰匙按鍵導致鑰匙單方面動(dòng)作,從而使鑰匙和鎖的計數器差值增大。同步窗口大小要合適,太大會(huì )降低安全性,太小會(huì )因多次誤操作導致鎖和鑰匙不能再自動(dòng)同步。
3 結束語(yǔ)
利用本文介紹的跳碼算法和設計的無(wú)線(xiàn)遙控解決方案,能設計出具有高度安全性的無(wú)線(xiàn)遙控系統,可廣泛應用于對安全性要求較高的場(chǎng)合,如各種報警防盜系統、住宅、辦公樓、汽車(chē)及車(chē)庫門(mén)衛管理系統,因此具有一定的應用市場(chǎng)。
塵埃粒子計數器相關(guān)文章:塵埃粒子計數器原理
評論