本發(fā)明涉及一種CAN總線通訊技術(shù),更具體地說,涉及一種CAN總線通訊加密密鑰的設(shè)置方法。
背景技術(shù):
現(xiàn)有CAN總線采用明碼數(shù)據(jù)傳輸,數(shù)據(jù)在總線上廣播。很容易被偵聽和非法控制。為保證總線的安全,目前有采用防火墻技術(shù),將車內(nèi)電子與外部交互界面隔離;也有通過嚴格的訪問機制,采用授權(quán)獲半開放的形式進行訪問權(quán)限控制;普遍使用的密碼系統(tǒng)(驗證或編碼加密)來保護車內(nèi)流通的數(shù)據(jù);也有采用偵探/防護系統(tǒng)(IPS/IDS)對可能的攻擊進行偵探預警。目前方法多,要么成本高,要么存在安全級別低,容易破解的問題。
技術(shù)實現(xiàn)要素:
本發(fā)明要解決的技術(shù)問題是針對現(xiàn)有CAN總線通訊加密密鑰破解后所有使用該加密密鑰的機器均被破解、安全性降低的問題,而提供一種安全性高的CAN總線通訊加密密鑰的設(shè)置方法。
本發(fā)明為實現(xiàn)其目的的技術(shù)方案是這樣的:提供一種CAN總線通訊加密密鑰的設(shè)置方法,其特征在于在CAN總線上所有需要進行加密通訊的CAN總線設(shè)備內(nèi)均存儲有多種加密方式和設(shè)置有密鑰設(shè)置標志,在各個加密通訊的CAN總線設(shè)備內(nèi)的密鑰設(shè)置標志均為缺省狀態(tài)時,其中的一個CAN總線設(shè)備通過明碼發(fā)送密鑰初始化請求的數(shù)據(jù)幀,需要使用加密密鑰通訊的其他CAN總線設(shè)備響應并將各自節(jié)點地址回傳給發(fā)送密鑰初始化請求的CAN總線設(shè)備;發(fā)送密鑰初始化請求的CAN總線設(shè)備收到各設(shè)備的響應,從其存儲的多種加密方式隨機選擇一種以上加密方式組合成第一加密密鑰并將第一加密密鑰發(fā)送給需要使用第一加密密鑰進行加密通訊的其他CAN總線設(shè)備;各需要加密通訊的CAN總線設(shè)備將第一加密密鑰存儲在各自的存儲單元內(nèi)作為通訊數(shù)據(jù)的密鑰使用并更改各自的密鑰設(shè)置標志狀態(tài)為第一加密密鑰設(shè)置第一加密密鑰。
上述CAN總線通訊加密密鑰的設(shè)置方法中,需要進行加密通訊的CAN總線設(shè)備內(nèi)存儲的加密方式包括以下三種方式中至少一種:每幀CAN數(shù)據(jù)中8個字節(jié)的排列順序、CAN數(shù)據(jù)幀中每個字節(jié)的格式轉(zhuǎn)換方式、兩種以上的基礎(chǔ)加密算法。
上述CAN總線通訊加密密鑰的設(shè)置方法中,各需要加密通訊的CAN總線設(shè)備中只有一臺CAN總線設(shè)備的密鑰設(shè)置標志為缺省狀態(tài)而其他進行加密通訊的密鑰設(shè)置標志為第一加密密鑰設(shè)置時,密鑰設(shè)置標志為缺省狀態(tài)的CAN總線設(shè)備通過明碼發(fā)出密鑰初始化的請求的數(shù)據(jù)幀,需要使用加密密鑰通訊的其他CAN總線設(shè)備響應并將各自節(jié)點地址回傳給發(fā)送密鑰初始化請求的CAN總線設(shè)備;發(fā)送密鑰初始化請求的CAN總線設(shè)備收到各設(shè)備的響應后,從其存儲的多種加密方式隨機選擇一種以上加密方式組合成第二加密密鑰并將第二加密密鑰發(fā)送給需要使用第二加密密鑰進行加密通訊的其他CAN總線設(shè)備;各需要加密通訊的CAN總線設(shè)備將第二加密密鑰存儲在各自的存儲單元作為通訊數(shù)據(jù)的密鑰使用并更改各自的密鑰設(shè)置標志狀態(tài)為第二加密密鑰設(shè)置。
上述CAN總線通訊加密密鑰的設(shè)置方法中,密鑰設(shè)置標志狀態(tài)為第二加密密鑰設(shè)置的CAN總線設(shè)備不響應新的密鑰初始化請求的數(shù)據(jù)幀。
本發(fā)明與現(xiàn)有技術(shù)相比,使用本發(fā)明CAN總線通訊加密密鑰的設(shè)置方法,在機器第一次通訊之前,各CAN總線設(shè)備內(nèi)沒有設(shè)置密鑰,在通訊之前設(shè)置密鑰,通過本發(fā)明加密密鑰的設(shè)置方法設(shè)置密鑰,每臺機器的加密密鑰由多種加密方法隨機組合而成,提高了破解難度,同時每臺機器的加密密鑰基本上都不同,即使存在密鑰破解的情況,也只是針對一臺機器的加密密鑰破解,不會出現(xiàn)一種加密密鑰破解造成大面積機器加密密鑰破解的情況,提高了產(chǎn)品的安全性。
具體實施方式
在CAN總線通訊時,CAN總線廣播的數(shù)據(jù)所有設(shè)備都可偵聽,也可模仿偽造數(shù)據(jù)幀對設(shè)備進行控制,造成信息泄露或安全事故。為此對于一些重要的數(shù)據(jù)或指令需要進行加密,數(shù)據(jù)發(fā)送方利用密鑰對數(shù)據(jù)或指令進行加密,數(shù)據(jù)接收方使用密鑰對接收到的加密數(shù)據(jù)進行解密,實現(xiàn)數(shù)據(jù)安全通訊。CAN總線上連接的CAN總線設(shè)備,有些發(fā)送或接受的數(shù)據(jù)或指令是明碼通訊的,但對于一些重要的數(shù)據(jù),則需要進行加密通訊,在需要加密通訊的CAN總線設(shè)備上就要設(shè)置加密密鑰。本發(fā)明在需要加密通訊的CAN總線設(shè)備上設(shè)置加密密鑰的方法如下:
在CAN總線上所有需要進行加密通訊的CAN總線設(shè)備內(nèi)均存儲有多種加密方式和設(shè)置有密鑰設(shè)置標志,需要進行加密通訊的CAN總線設(shè)備內(nèi)存儲的加密算法包括以下三種方式:
加密方式一:可以儲存f1(x)、f2(x)、f3(x)三種加密算法,必要時可以四種、五種甚至更多,也可以設(shè)置跟多。選用該加密方式時,從其中存儲的多種加密算法中隨機選取其中的一種作為基礎(chǔ)加密算法。
加密方式二:每幀CAN數(shù)據(jù)中8個字節(jié)的排列順序;每幀CAN數(shù)據(jù)共8個字節(jié),分別為data0~7,8個字節(jié)的數(shù)據(jù)按照不同順序發(fā)送,共有8?。?0320種排列順序。為方便計算和解析,將數(shù)據(jù)初始排列順序為:D7\D6\D5\D4\D3\D2\D1\D0。
為了知道打亂順序后8個數(shù)據(jù)的準確位置,需要將每個數(shù)據(jù)給出一個位置,上面可以看出,每個數(shù)據(jù)可能出現(xiàn)的位置有8個。因此用3個bit位來表示該字節(jié)所在的位置,例如用3個bit位,二進制111表示該字節(jié)的位置在第7位,即上面D7所在的位置。這樣共3個字節(jié)的數(shù)據(jù)就可以將40320種組合表示出來。見下表1:
表1
例如表征數(shù)據(jù)位置的數(shù)據(jù)為0xF9、0xAB、0x08,展開后為111 110 011 010 101 100 001 000,因此解析后8個數(shù)據(jù)的為:D7\D6\D3\D2\D5\D4\D1\D0。
采用加密方式二時,從每幀CAN數(shù)據(jù)中8個字節(jié)的40320種排列順序中隨機選取一種作為每幀CAN數(shù)據(jù)中8個字節(jié)的排列順序。
加密方式三:CAN數(shù)據(jù)幀中每個字節(jié)的格式轉(zhuǎn)換方式,CAN數(shù)據(jù)幀中每個字節(jié)的格式選擇高、低四位交換(例如用0x81表示該轉(zhuǎn)換方式)和數(shù)據(jù)取反(采用0xFF-原始數(shù)據(jù),用0x18表示該轉(zhuǎn)換方式)兩種數(shù)據(jù)格式轉(zhuǎn)換方式。高低四位交換例如0xA8→0x8A;數(shù)據(jù)取反例如0xA8→0x57)。
在各個加密通訊的CAN總線設(shè)備內(nèi)的密鑰設(shè)置標志為均為缺省狀態(tài)時,也即機器第一次裝機時,各CAN總線設(shè)備不設(shè)任何加密密鑰。使用加密密鑰的CAN總線設(shè)備雙方或多方在第一次裝機時,在工廠通過明碼通訊,設(shè)置確認該機器的第一加密密鑰,其方法如下:使用加密密鑰的CAN總線設(shè)備中的一個CAN總線設(shè)備通過明碼發(fā)送密鑰初始化請求的數(shù)據(jù)幀,需要使用加密密鑰通訊的其他CAN總線設(shè)備響應并將各自節(jié)點地址回傳給發(fā)送密鑰初始化請求的CAN總線設(shè)備;發(fā)送密鑰初始化請求的CAN總線設(shè)備收到各設(shè)備的響應,從其存儲的三種加密方式中隨機選取一種方式或兩種以上的加密方式合成第一加密密鑰,例如加密方式一中選取選擇f2(x)為加密算法(f2(x)加密算法是數(shù)據(jù)取反,即采用0xFF-該數(shù)據(jù));加密方式二中選擇0xF9、0xAB、0x08的排列順序;加密方式三中選擇0x81的數(shù)據(jù)格式。發(fā)送密鑰初始化請求的CAN總線設(shè)備合成第一加密密鑰后將第一加密密鑰發(fā)送給需要使用第一加密密鑰的其他CAN總線設(shè)備;各需要加密通訊的CAN總線設(shè)備將第一加密密鑰存在各自的存儲單元內(nèi)作為通訊數(shù)據(jù)的密鑰使用并更改各自的密鑰設(shè)置標志狀態(tài)為第一加密密鑰設(shè)置。
第一機密密鑰設(shè)置成功后,在需要加密碼傳輸指令或關(guān)鍵數(shù)據(jù)時,可按照固定ID發(fā)送數(shù)據(jù)。每幀數(shù)據(jù)的8個字節(jié)內(nèi)容如下:
由于采用了上面的加密密鑰,因此每個字節(jié)數(shù)據(jù)的數(shù)據(jù)經(jīng)過加密,并且高低四位交換,因此按照上面的密鑰,則相關(guān)數(shù)據(jù)如下:
每幀數(shù)據(jù)的8個字節(jié)排列順序、數(shù)據(jù)轉(zhuǎn)換格式由該機的第一加密密鑰確定,其中隨機數(shù)是偽隨機數(shù)據(jù),沒有意義,也可傳輸其他數(shù)據(jù),本示例用隨機數(shù)據(jù)代替。發(fā)送指令或數(shù)據(jù)的某一CAN總線設(shè)備(A設(shè)備)通過第一加密密鑰將上述原始數(shù)據(jù)加密并將數(shù)據(jù)格式轉(zhuǎn)化后,通過廣播或指定接收方的方式在CAN總線上發(fā)送。當接收指令或數(shù)據(jù)的另一CAN總線設(shè)備收到該幀數(shù)據(jù)后,第一加密密鑰進行指令或數(shù)據(jù)解密,首先將數(shù)據(jù)格式高低四位轉(zhuǎn)換為正確的格式,再將數(shù)據(jù)位置排序正確,最后根據(jù)加密算法f2(x)進行數(shù)據(jù)解密。這樣就得到正確的原始數(shù)據(jù)。根據(jù)目標地址來決定是否執(zhí)行該指令,如果需要執(zhí)行,則執(zhí)行該指令后,再將響應指令的原始數(shù)據(jù)按第一加密密鑰進行加密,讓后將加密后的數(shù)據(jù)發(fā)送到CAN總線上。應答A設(shè)備或用廣播方式表示指令已經(jīng)響應。當發(fā)送指令或數(shù)據(jù)的CAN總線設(shè)備(A設(shè)備)收到應答后,也是將數(shù)據(jù)格式轉(zhuǎn)換為正確的格式。再根據(jù)存儲的第一加密密鑰進行指令或數(shù)據(jù)解密。解密后數(shù)據(jù)正確時則確認指令執(zhí)行有效,否則給出明碼的報警提示。
當某個使用該第一加密密鑰的CAN總線設(shè)備損壞或進行維修更換時,由于新更換的CAN總線設(shè)備沒有存儲第一加密密鑰,因此需要啟動第二加密密鑰。此時新更換的CAN總線設(shè)備會通過明碼發(fā)出密鑰初始化的請求的數(shù)據(jù)幀。其他設(shè)備密鑰設(shè)置標志狀態(tài)為第一加密密鑰設(shè)置,就重新進行一次加密密鑰的設(shè)置,即第二加密密鑰的設(shè)置。第二加密密鑰的設(shè)置于第一加密密鑰設(shè)置過程相同,即新更換的CAN總線設(shè)備通過明碼發(fā)出密鑰初始化的請求的數(shù)據(jù)幀,需要使用加密密鑰通訊的其他CAN總線設(shè)備響應并將各自節(jié)點地址回傳給新更換的CAN總線設(shè)備;新更換的CAN總線設(shè)備收到各設(shè)備的響應,從其存儲三種的加密方式中隨機選取一種方式或兩種以上的加密方式合成第二加密密鑰,新更換的CAN總線設(shè)備合成第二加密密鑰后將第二加密密鑰發(fā)送給需要使用第二加密密鑰的其他CAN總線設(shè)備;各需要加密通訊的CAN總線設(shè)備將第二密鑰存在各自的存儲單元作為通訊數(shù)據(jù)的密鑰使用并更改各自的密鑰設(shè)置標志狀態(tài)為第二密鑰設(shè)置。此時將啟用第二加密密鑰,作為唯一的密鑰使用。
在新更換的CAN總線設(shè)備會發(fā)出密鑰初始化的請求時,如果有一臺CAN總線設(shè)備的密鑰設(shè)置標志狀態(tài)為第二密鑰設(shè)置時,在此情況下該密鑰初始化的請求不會被執(zhí)行,以防止密鑰泄露。
本發(fā)明密鑰設(shè)置方法可以使得一臺機器可以形成一個獨有的密鑰,對CAN總線上重要的數(shù)據(jù)或指令進行加密。每種機器的加密密鑰不一樣,即使單臺破解對其他設(shè)備也沒有影響。從而保證數(shù)據(jù)的安全性。更不用擔心密鑰被破解后,所有機器面臨破解的問題。安全性提高。