專利名稱:公鑰跳碼安全系統(tǒng)及方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種公鑰跳碼安全系統(tǒng)及方法,特別涉及一種用微處理器控制的電子鑰匙、門鎖系統(tǒng)的加密跳碼安全系統(tǒng)及方法。
背景技術(shù):
在日常的生活中經(jīng)常使用門鎖,隨著電子技術(shù)的發(fā)展電子鑰匙、電子門鎖系統(tǒng)廣泛地被采用,人們通過使用電子鑰匙,發(fā)送一些特定的無線信號,門鎖系統(tǒng)在接收到這些信息后,自動執(zhí)行一系列相應(yīng)的操作,如開門、開鎖、開燈、預(yù)熱內(nèi)部空調(diào)等等。但最初投入市場遙控門鎖如汽車的門鎖系統(tǒng)大部分都是基于固定的編碼技術(shù),電子鑰匙每次發(fā)出的碼都是固定的值,一些不法分子使用掃描器(Scanner)和截獲器(grabber)等設(shè)備可以輕易破解和進入此類門鎖系統(tǒng)。后來又發(fā)明了滾動碼(rolling code),電子鑰匙每次發(fā)的碼都不一樣,固定在一些碼字中循環(huán),這使得安全性提高了一些,之后又發(fā)明了分組密碼加密算法的跳碼(hoping code)安全系統(tǒng),但是隨著技術(shù)的發(fā)展,破解者的技術(shù)和設(shè)備也越來越先進,分組密碼跳碼系統(tǒng)的安全性還是不能確保系統(tǒng)的安全。
發(fā)明內(nèi)容
本發(fā)明的目的在于提供一種公鑰跳碼安全系統(tǒng)及方法,本發(fā)明主要包括電子鑰匙的發(fā)送端和接收端兩部分構(gòu)成,發(fā)送端由按鍵、可擦寫存儲器(EEPROM)、隨機數(shù)發(fā)生器、加密單元、移位寄存器、振蕩器、LED驅(qū)動、功耗控制、控制單元組成,接收端由射頻指令接收模塊、可擦寫存儲器(EEPROM)和一個單片機組成,,其特征在于發(fā)送端收到按鍵信號后控制程序執(zhí)行如下的步驟執(zhí)行加密發(fā)送操作,首先是功耗控制單元打開各個部分的功耗控制,為各單元提供時鐘信號;然后由隨機數(shù)發(fā)生器生成隨機數(shù),并從可擦寫存儲器(EEPROM)中讀出產(chǎn)品的序列號、加密密鑰、同步計數(shù)器值、不可約多項式(Fm)值;將隨機數(shù)、加密密鑰、不可約多項式(Fm)值、序列號一起送入加密單元,完成加密過程后將需要傳輸?shù)男畔⑺腿胍莆患拇嫫?,然后發(fā)射出去,發(fā)送端每次傳送的信息為64bit,包括三個部分,第一部分是由4bit按鍵信息和產(chǎn)品序列號前12bit構(gòu)成的16bit明碼信息,第二部分是由16bit隨機數(shù)和序列號后16bit進行異或生成的,而第三部分是經(jīng)過加密算法而得到的32bit跳碼,經(jīng)隨機數(shù)組合后,執(zhí)行如下的步驟Encrypted Data=(Serial Number^Random Number|Counter^Random Number)*CryptKey(mod Fm)即加密后的數(shù)據(jù)等于,序列號異或隨機數(shù)和同步計數(shù)異或隨機數(shù)組成的數(shù)據(jù),與加密密鑰在有限域相乘的積。得到的即為32bit的加密跳碼信息。
加密密鑰的方式為Cryptkey*DecryKey=l(mod Fm)即加密密鑰和解密密鑰在限域相乘的積為1。
接收端收到信號后控制程序執(zhí)行如下的步驟單片機接收到指令信息后,從可擦寫存儲器(EEPROM)中讀入序列號、解密密鑰、不可約多項式、同步計數(shù)數(shù)據(jù),進行解密并驗證指令是否有效,如果有效則將相應(yīng)的按鍵操作命令輸出,并將新的同步計數(shù)值回寫可擦寫存儲器(EEPROM),在執(zhí)行學(xué)習(xí)模式(Learning mode)時,還要將新的序列號和解密密鑰回寫可擦寫存儲器(EEPROM)。當(dāng)接收端連續(xù)收到若干此序列號有效,但解密無效的信息時,單片機將輸出報警信號(Alarm)以警示被掃描攻擊。接收碼分成兩部分,第一部分32bit的序列號,第二部分32bit的跳碼信息,其中跳碼對應(yīng)明文又由兩部分組成,16bit隨機數(shù)和16bit隨機數(shù)與16bit同步計數(shù)器的異或值,在執(zhí)行學(xué)習(xí)模式(Learning mode)時按如下的步驟收到64bit的信息;從可擦寫存儲器(EEPROM)中讀出廠商號和不可約多項式(Fm),由新的序列號和算法解密密鑰計算出新的解密密鑰,并暫存此序列號和解密密鑰;用新的解密密鑰解密跳碼信息得到對應(yīng)明文;用對應(yīng)明文第一部分與第二部分進行異或操作,計算出同步計數(shù)器值,并將其暫存;再次接收一個64bit的碼字;將其序列號與第一次的進行比較,相同執(zhí)行下一步,否則認(rèn)為學(xué)習(xí)失敗,不做任何操作,結(jié)束退出;用解密密鑰解密跳碼信息得到明文;將明文第一部分和第二部分進行異或得到該次的同步計數(shù)器值;將其與前次的進行比較,如果比前次的剛好大1執(zhí)行下一步,否則認(rèn)為學(xué)習(xí)失敗,不做任何操作,結(jié)束退出;學(xué)習(xí)成功,將新的序列號、同步計數(shù)器值、解密密鑰寫入以刷新EEPROM,結(jié)束。
解密密鑰的方式為DecryKey=SerialNumber*Manufacture ID(mod Fm)即解密密鑰等于序列號和廠商的唯一標(biāo)志在有限域相乘的積。
本發(fā)明的優(yōu)點是系統(tǒng)采用公鑰算法跳碼的技術(shù)、加解密單元、隨機數(shù)發(fā)生器的設(shè)計以及發(fā)送端芯片整體系統(tǒng)的設(shè)計,運用同步計數(shù)器、學(xué)習(xí)模式(Learning mode)的設(shè)計,從而提高系統(tǒng)的安全性,由于接收端只需要使用帶有解碼程序單片機而不需要專門的解碼芯片,降低了成本。
圖1本發(fā)明發(fā)送端電路的結(jié)構(gòu)2本發(fā)明發(fā)送芯片設(shè)計總體方案3本發(fā)明發(fā)送端的加密過程框4本發(fā)明接收端電路的結(jié)構(gòu)5本發(fā)明接收端的解密算法框6本發(fā)明解密程序流程框7本發(fā)明學(xué)習(xí)模式程序流程框圖1發(fā)送端芯片、B0按鍵輸入、B1按鍵輸入、B2按鍵輸入、B3按鍵輸入、3發(fā)光二極管、4可擦寫存儲器(EEPROM)、5隨機數(shù)發(fā)生器、6加密單元、7移位寄存器、8振蕩器、9LED驅(qū)動、10功耗控制、11控制單元、12復(fù)位電路、13射頻指令接收模塊、14可擦寫存儲器(EEPROM)、15單片機
具體實施例方式系統(tǒng)主要參數(shù)加密密鑰(CryptKey)32bit,應(yīng)用于加密過程;解密密鑰(DecryKey)32bit,應(yīng)用于解密過程;按鍵信息(ButtonInfo)4bit,需要傳輸?shù)男畔?,接收端將按照按鍵信息進行相應(yīng)的操作;序列號(Serial Numbs)28bit,每個電子鑰匙的唯一標(biāo)志,門鎖系統(tǒng)依靠這個標(biāo)志辨別是否是自己的電子鑰匙;同步計數(shù)(Counter)16bit,電子鑰匙每按一次,該數(shù)字加一,用于經(jīng)過加密生成跳碼和一些安全性檢查;廠商ID(ManufactureID)32bit,每個汽車廠商的唯一標(biāo)志,該標(biāo)志和序列號聯(lián)合起來用于生成加密密鑰和解密密鑰;加密后數(shù)據(jù)(Encrypted Data)32bit,即電子鑰匙每次發(fā)送的數(shù)據(jù)的變化部分,由同步計數(shù)和序列號加密所得,用于實現(xiàn)跳碼(hoping code);隨機數(shù)(Random Number)16bit,提高跳碼變化率和安全性的關(guān)鍵參數(shù),用于加密過程;不可約多項式(Fm)32bit,加密運算和解密運算的關(guān)鍵參數(shù),也是生成加密密鑰和解密密鑰的關(guān)鍵;(參見圖1),系統(tǒng)的發(fā)送端(即加密端),由發(fā)送端芯片1、按鍵輸入B0、B1、B2、B3、發(fā)光二極管3構(gòu)成。發(fā)送端芯片1主要進行加密和發(fā)送的工作,有八個有效接口,包括4bit的按鍵輸入信息、VDD、VSS、LED驅(qū)動輸出和PWM信號輸出。按鍵輸入為四位,分別連到發(fā)送端芯片1的4個按鍵輸入B0、B1、B2、B3的接口,用戶通過它輸入受控端需要執(zhí)行的命令。發(fā)光二極管3由LED驅(qū)動輸出驅(qū)動,顯示按鍵信息是否被有效的加密和輸出。VDD為電源高電平輸入,VSS為接地。
在發(fā)送端,用戶操作按鈕后,按鍵信息輸入發(fā)送端芯片1,芯片經(jīng)過加密運算后,將加密后的信息,包括明碼、偽跳碼和跳碼部分,通過PWM口發(fā)送出去,從而完成了一次指令發(fā)送操作。(參見圖2),由按鍵輸入、可擦寫存儲器(EEPROM)4、隨機數(shù)發(fā)生器5、加密單元6、移位寄存器7、振蕩器8、LED驅(qū)動9、功耗控制10、控制單元11等部分構(gòu)成。按鍵輸入是接收來自按鍵的輸入信息;可擦寫存儲器(EEPROM)4用于存放產(chǎn)品序列號、加密密鑰、不可約多項式Fm、同步計數(shù)等;隨機數(shù)發(fā)生器5用于產(chǎn)生隨機數(shù),該隨機數(shù)將用于加密過程;加密單元主要執(zhí)行加密操作,并輸出加密后的32bit跳碼信息;移位寄存器用于暫存待發(fā)送的信息,發(fā)送的信息將一位位的發(fā)送出去;振蕩器8是整個電路的時鐘源,為電路提供時鐘;LED驅(qū)動9外部的一個LED顯示管;復(fù)位電路12用于產(chǎn)生復(fù)位信號;功耗控制10用于降低功耗,在收到按鍵信息后,才對電路其他各部分提供時鐘信號,在執(zhí)行完加密和發(fā)送操作,即斷開其他部分的時鐘信號;整個系統(tǒng)的控制,各個模塊的協(xié)同,都由控制單元完成。
發(fā)送端芯片1在收到由按鍵出來的按鍵信息后,開始執(zhí)行加密發(fā)送操作。首先是功耗控制單元10打開各個部分的功耗控制,為各單元提供時鐘供應(yīng);然后由隨機數(shù)發(fā)生器5生成隨機數(shù),并從可擦寫存儲器(EEPROM)4中將產(chǎn)品的序列號、加密密鑰、同步計數(shù)器值、不可約多項式(Fm)值等讀出;將隨機數(shù)、加密密鑰、不可約多項式(Fm)值、序列號等一起送入加密單元6,完成加密過程后將需要傳輸?shù)男畔⑺腿胍莆患拇嫫?,然后發(fā)射出去。從而完成了加密過程和發(fā)送操作。
發(fā)送端的加密過程(參見圖3)命令發(fā)送端每次傳送的信息為64bit,包括三個部分第一部分是由4bit按鍵信息和產(chǎn)品序列號前12bit構(gòu)成的16bit明碼信息,第二部分是由16bit隨機數(shù)和序列號后16bit進行異或生成的,而第三部分是經(jīng)過加密算法而得到的32bit跳碼,加密前的32bit明文又由兩部分組成,即16bit隨機數(shù)和序列號后16bit進行異或生成的16bit碼和16bit隨機數(shù)與16bit同步計數(shù)器進行異或生成的16bit碼。
加密中需要用到的數(shù)據(jù)有加密密鑰32bit,不可約多項式32bit,序列號的低16bit,隨機數(shù)16bit和同步計數(shù)16bit。由序列號的低16bit和同步計數(shù)一起組成待加密的數(shù)據(jù),使用隨機數(shù)混亂后,進行如下操作Encrypted Data=(Serial Number^Random Number|Counter^Random Number)*CryptKey(mod Fm)即加密后的數(shù)據(jù)等于,序列號異或隨機數(shù)和同步計數(shù)異或隨機數(shù)組成的數(shù)據(jù),與加密密鑰在有限域相乘的積。得到的即為32bit的加密跳碼信息。
接收端電路主要由射頻指令接收模塊13、(參見圖4)可擦寫存儲器(EEPROM)14和一個單片機15組成。射頻指令接收模塊13,用于串行接收發(fā)送端發(fā)出的無線遙控指令,并將指令以數(shù)字信號形式傳輸給單片機15;可擦寫存儲器(EEPROM)14存放解密要用到的序列號、解密密鑰、不可約多項式(Fm)、同步計數(shù)等;單片機15接收到指令信息后,從可擦寫存儲器(EEPROM)14中讀入序列號、解密密鑰、不可約多項式、同步計數(shù)等,進行解密并驗證指令是否有效,如果有效則將相應(yīng)的按鍵操作命令輸出,并將新的同步計數(shù)值回寫到可擦寫存儲器(EEPROM)14,在執(zhí)行學(xué)習(xí)模式(Learning mode)時,還要將新的序列號和解密密鑰回寫可擦寫存儲器(EEPROM)14。當(dāng)接收端連續(xù)收到若干此序列號有效,但解密無效的信息時,單片機15將輸出報警信號(Alarm)以警示被掃描攻擊。
接收端解密方式如下(Serial Number^Random Number|Counter^Random Number)=Encrypted Data*DecryKey(mod Fm)即序列號異或隨機數(shù)和同步計數(shù)異或隨機數(shù)組成的數(shù)據(jù)等于,接收到的數(shù)據(jù)與解密密鑰在有限域相乘的積。
本發(fā)明的接收端解密程序操作流程為(參見圖6)1)將接受到碼字第一部分中的前12bit序列號與讀出的進行比較,如果相同執(zhí)行2),否則執(zhí)行8);2)利用解密算法對跳碼信息進行解密,并比較第二部分與跳碼對應(yīng)明文的第一部分,如果相同執(zhí)行3),否則執(zhí)行8);3)將讀出的序列號的后16bit與跳碼對應(yīng)明文的第一部分(或者整個碼字第二部分)進行異或,計算出發(fā)送端的隨機數(shù);4)由該隨機數(shù)與跳碼對應(yīng)明文的第二部分進行異或操作,計算出同步計數(shù)器值;5)將其與讀出值進行比較,若其大于讀出值且差值在指定范圍內(nèi)執(zhí)行7),否則執(zhí)行6);6)將由4)計算出的同步計數(shù)器值暫存,再進行一次接收,即從1)開始到5),如果新值比暫存值大1執(zhí)行7),否則執(zhí)行8);7)認(rèn)為接收成功,將新的同步計數(shù)器值寫入以刷新EEPROM,同時執(zhí)行碼字第一部分中按鍵信息所要求的操作,結(jié)束。8)認(rèn)為接收失敗,判斷是否經(jīng)過了若干次序列號比較有效而解密失敗,如果是則判定收到掃描攻擊,輸出報警信號并返回,否則直接執(zhí)行報警信號。
學(xué)習(xí)模式(參見圖7),學(xué)習(xí)模式主要針對新的電子鑰匙,對汽車內(nèi)部的信息進行更新,包括產(chǎn)品序列號、解密密鑰和同步計數(shù)器等。在學(xué)習(xí)模式中,我們考慮其接收碼分成兩部分第一部分16bit隨機數(shù)、第二部分16bit隨機數(shù)異或同步計數(shù)器。學(xué)習(xí)模式下,具體解碼步驟為1)進行接收,得到64bit碼字;2)從EEPROM中讀出廠商號和Fm,由新的序列號和算法解密密鑰計算出新的解密密鑰,并暫存此序列號和解密密鑰;3)用新的解密密鑰解密跳碼信息得到對應(yīng)明文;4)用對應(yīng)明文第一部分與第二部分進行異或操作,計算出同步計數(shù)器值,并將其暫存;5)再次接收一個64bit的碼字;6)將其序列號與第一次的進行比較,相同執(zhí)行7),否則執(zhí)行10);7)用解密密鑰解密跳碼信息得到明文;8)將明文第一部分和第二部分進行異或得到該次的同步計數(shù)器值;9)將其與前次的進行比較,如果比前次的剛好大1執(zhí)行10),否則執(zhí)行11);10)認(rèn)為學(xué)習(xí)成功,將新的序列號、同步計數(shù)器值、解密密鑰寫入以刷新EEPROM,結(jié)束。11)認(rèn)為學(xué)習(xí)失敗,不做任何操作,結(jié)束。
密鑰的生成方法加密密鑰和解密密鑰的生成方式如下。
生成加密密鑰Cryptkey*DecryKey=l(mod Fm)即加密密鑰和解密密鑰在有限域相乘的積為1。
生成解密密鑰DecryKey=SerialNumber*ManufactureID(mod Fm)即解密密鑰等于序列號和廠商的唯一標(biāo)志在有限域相乘的積。
權(quán)利要求
1.一種公鑰跳碼安全系統(tǒng)及方法,主要包括電子鑰匙的發(fā)送端和接收端兩部分構(gòu)成,發(fā)送端由按鍵、可擦寫存儲器(EEPROM)、隨機數(shù)發(fā)生器、加密單元、移位寄存器、振蕩器、LED驅(qū)動、功耗控制、控制單元組成,接收端由射頻指令接收模塊、可擦寫存儲器(EEPROM)和一個單片機組成,其特征在于所述發(fā)送端收到按鍵信號后控制程序執(zhí)行如下的步驟a)執(zhí)行加密發(fā)送操作,功耗控制單元打開各個部分的功耗控制,為各單元提供時鐘信號;b)然后由隨機數(shù)發(fā)生器生成隨機數(shù),并從可擦寫存儲器(EEPROM)中讀出產(chǎn)品的序列號、加密密鑰、同步計數(shù)器值、不可約多項式(Fm)值;c)將隨機數(shù)、加密密鑰、不可約多項式(Fm)值、序列號一起送入加密單元,并將完成加密后需要傳輸?shù)男畔⑺腿胍莆患拇嫫?,然后發(fā)射出去;所述接收端收到信號后控制程序執(zhí)行如下的步驟單片機接收到指令信息后,從可擦寫存儲器(EEPROM)中讀入序列號、解密密鑰、不可約多項式、同步計數(shù)數(shù)據(jù),進行解密并驗證指令是否有效,如果有效則將相應(yīng)的按鍵操作命令輸出,并將新的同步計數(shù)值回寫可擦寫存儲器(EEPROM),在執(zhí)行學(xué)習(xí)模式(Learning mode)時,還要將新的序列號和解密密鑰回寫可擦寫存儲器(EEPROM),當(dāng)接收端連續(xù)收到若干此序列號有效,但解密無效的信息時,單片機將輸出報警信號(Alarm)以警示被掃描攻擊。
2.根據(jù)權(quán)利要求1所述的一種公鑰跳碼安全系統(tǒng)及方法,其中所述的發(fā)送端每次傳送的信息為64bit,包括三個部分,第一部分是由4bit按鍵信息和產(chǎn)品序列號前12bit構(gòu)成的16bit明碼信息,第二部分是由16bit隨機數(shù)和序列號后16bit進行異或生成的,而第三部分是經(jīng)過加密算法而得到的32bit跳碼,經(jīng)隨機數(shù)組合后,執(zhí)行如下的步驟Encrypted Data=(Serial Number ^Random Number|Counter ^Random Number)*CryptKey(mod Fm)即加密后的數(shù)據(jù)等于,序列號異或隨機數(shù)和同步計數(shù)異或隨機數(shù)組成的數(shù)據(jù),與加密密鑰在有限域相乘的積。得到的即為32bit的加密跳碼信息。
3.根據(jù)權(quán)利要求1所述的一種公鑰跳碼安全系統(tǒng)及方法,其中所述的接收碼分成兩部分,第一部分32bit的序列號,第二部分32bit的跳碼信息,其中跳碼對應(yīng)明文又由兩部分組成,16bit隨機數(shù)和16bit隨機數(shù)與16bit同步計數(shù)器的異或值,在執(zhí)行學(xué)習(xí)模式(Learning mode)時按如下的步驟收到64bit的信息;從可擦寫存儲器(EEPROM)中讀出廠商號和Fm,由新的序列號和算法解密密鑰計算出新的解密密鑰,并暫存此序列號和解密密鑰;用新的解密密鑰解密跳碼信息得到對應(yīng)明文;用對應(yīng)明文第一部分與第二部分進行異或操作,計算出同步計數(shù)器值,并將其暫存;再次接收一個64bit的碼字;將其序列號與第一次的進行比較,相同執(zhí)行下一步,否則認(rèn)為學(xué)習(xí)失敗,不做任何操作,結(jié)束退出;用解密密鑰解密跳碼信息得到明文;將明文第一部分和第二部分進行異或得到該次的同步計數(shù)器值;將其與前次的進行比較,如果比前次的剛好大1執(zhí)行下一步,否則認(rèn)為學(xué)習(xí)失敗,不做任何操作,結(jié)束退出;學(xué)習(xí)成功,將新的序列號、同步計數(shù)器值、解密密鑰寫入以刷新可擦寫存儲器(EEPROM),結(jié)束。
4.根據(jù)權(quán)利要求1所述的一種公鑰跳碼安全系統(tǒng)及方法,其中所述的生成加密密鑰的方式為Cryptkey*DecryKey=1(mod Fm)即加密密鑰和解密密鑰在有限域相乘的積為1。
5.根據(jù)權(quán)利要求1所述的一種公鑰跳碼安全系統(tǒng)及方法,其中所述的生成解密密鑰的方式為DecryKey=SerialNumber*ManufactureID(mod Fm)即解密密鑰等于序列號和廠商的唯一標(biāo)志在有限域相乘的積。
全文摘要
一種公鑰跳碼安全系統(tǒng)及方法,主要包括電子鑰匙的發(fā)送端和接收端兩部分構(gòu)成,其特征在于發(fā)送端收到按鍵信號后控制程序執(zhí)行加密發(fā)送操作,從存儲器中讀出產(chǎn)品的序列號、加密密鑰、同步計數(shù)器值、不可約多項式F
文檔編號E05B49/00GK1814974SQ200510023810
公開日2006年8月9日 申請日期2005年2月3日 優(yōu)先權(quán)日2005年2月3日
發(fā)明者賈松仁, 龔厚志, 劉文江 申請人:上海長三角科技發(fā)展有限公司