一種基于智能車的安全通信方法
【技術領域】
[0001] 本發明涉及一種智能車的安全通信方法。
【背景技術】
[0002] 采用明文的形式在智能車和服務器之間進行通信,存在極大的安全隱患。具體來 說,存在如下3個安全隱患:通信內容被竊聽、通信身份被偽裝、通信內容被篡改。
[0003] 由于上述信息是在互聯網中傳輸,而所謂的互聯網,是由能連通到全世界的網絡 組成的,因此無論處于哪個位置上的服務器和客戶端通信時,在整個通信線路上的路由器、 交換器、網橋等網絡設備,都不可能全是某個人的私有物,所以不能保證在這些環節不會遭 到竊聽、身份被偽裝和篡改。一旦使用明文傳輸的消息被竊取,竊取方就可以知道當前通信 的內容。
[0004] 在采用明文的形式在智能車和服務器之間進行通信的過程中,沒有對通信雙方的 身份進行驗證,任何人都可以說他是智能車或他是服務器,只要發送的數據格式符合要求 就行。服務器對要求建立連接的請求來者不拒,這樣就存在有人偽裝智能車的情況,向服務 器發送虛假的智能車信息,而真實的智能車出現被盜竊的風險。還有可能出現有人偽裝服 務器,向智能車發送虛假的控制命令的情形,存在極大的安全隱患。由于采用明文的形式在 智能車和服務器之間進行通信的過程中無法驗證報文的完整性,也就是是否出現被篡改的 情況,那么就有可能出現消息在中途被黑客修改的安全隱患。本來服務器是希望智能車停 止,篡改之后的命令是讓其加速,這樣的隱患可想而知。
【發明內容】
[0005] 本發明的目的是提供一種智能車的安全通信方法,能夠解決智能車和服務器之間 進行通信時存在的通信內容被竊聽、通信身份被偽裝、通信內容被篡改這三大隱患。
[0006] 為實現上述目的,本發明采用如下技術方案:
[0007] -種基于智能車的安全通信方法,包括如下步驟:
[0008] 步驟一:采用智能車的編號及跟該編號一一對應的MASK值作為其密碼,服務器端 分配有一對公鑰和私鑰,同時給智能車內置服務器的公鑰,智能車客戶端隨機生成一個數, 作為本次通信對稱加密算法的密鑰,同時也用來對服務器進行驗證,智能車客戶端將使用 非對稱加密算法即用服務器公鑰加密客戶端生成的對稱密鑰,發送給服務器;
[0009] 步驟二:服務器用私鑰解密消息,獲得對稱密鑰;用對稱加密算法加密握手文本 "hello, zju roboy ! ",回復給客戶端;
[0010] 步驟三:客戶端用對稱加密算法解密握手文本,檢查握手文本是否正確,若正確則 服務器端驗證成功,否則說明服務器為偽裝;在服務器驗證成功的基礎上,用對稱加密算法 加密智能車編號和MASK,作為客戶端的驗證信息,發送給服務器;
[0011] 步驟四:服務器解密驗證信息,獲得編號和MASK,對智能車身份進行校驗,身份認 證合法返回true,不合法返回false ;
[0012] 步驟五:接收到服務器的驗證成功反饋后,智能車和服務器就正式建立起了安全 可靠的連接;
[0013] 步驟六:智能車和服務器在已經建立好的連接上,采用對稱加密算法進行雙向通 {目。
[0014] 所述的公鑰和私鑰的生成,涉及到費馬-歐拉定理,包括如下步驟:
[0015] a)隨機選擇兩個不同的質數p和q,這兩個數越大,長度越接近,就越難破解,選p =73, q = 97,
[0016] b)計算p和q的乘積η,η = 73*97 = 7081 ;n的二進制表示長度就是密鑰的長 度,7081的二進制表示為1101110101001,一共有13位,因此本次非對稱密鑰的長度就是13 位;
[0017] c)計算η的歐拉函數Φ (η),根據歐拉公式Φ (η) = (p-1) (q-Ι),因此η = 6912 ;
[0018] d)隨機選擇一個整數e,但是必須滿足I < e < φ(η),并且e要與φ (η)互質,這 里選29 ;
[0019] e)計算e對于Φ (η)的模反元素 d,所謂模反元素就是指有一個整數d,使得ed 被Φ (η)除的余數為1,ed = 1 (ηι〇(1Φ (η)),這個公式等價于ed-1 = k<i> (η),相當于對 ex+Φ (n)y = 1這個二元一次方程求解,其中e = 29,Φ (η) = 6912,利用擴展歐幾里得算 法,得出一組解為(6197,-26);
[0020] f)到這一步,我們就求出了公鑰和私鑰所需的所有東西,η = 7081,e = 29, d = 6197,公鑰就是(7081,29),私鑰就是(7081,6197)。
[0021] 步驟二采用AES算法,AES加密過程在一個4*4的字節矩陣上進行,其初值為明文, 同樣的,128位密鑰也剛好形成一個4*4的矩陣,將其稱為密鑰矩陣,AES加密時,共涉及4 種運算,分別是輪密鑰加、字節替換、移位變換、混淆變換。
[0022] 步驟四在服務器啟動時,將身份信息加載到內存中,采用key-value形式存儲,以 加快驗證速度,采用Java的HashMap數據結構,編號為key,MASK為value。
[0023] 與現有技術相比本發明的有益效果是:
[0024] (1)本發明所有的消息均通過加密之后進行傳送,黑客竊取傳遞的報文后,只能看 到一段亂碼,能有效防止黑客竊取通信內容;
[0025] (2)在智能車和服務器正式傳遞消息之前,分別完成了對服務器和智能車的身份 認證,確保通信雙方身份真實有效,防止服務器端和智能車客戶端被偽裝;
[0026] (3)本發明的通信在傳遞有效數據的同時,還會傳遞明文信息的消息摘要,對明文 計算消息摘要,黑客想要修改消息摘要而不被發覺,必須要獲得明文才行,而明文又采用了 AES加密,使得黑客無法得逞,能有效防止黑客篡改通信內容。
【附圖說明】
[0027] 圖1為本發明方法的安全通信流程示意圖;
[0028] 圖2為AES加密流程示意圖;
[0029] 圖3為移位變換階段示意圖。
【具體實施方式】
[0030] 為了使本發明的技術方案更加清晰,以下結合附圖1至3,對本發明進行詳細說 明。應當理解的是,本說明書中描述的【具體實施方式】僅僅是為了解釋本發明,并不是為了限 定本發明的保護范圍。
[0031] 每輛智能車在出廠時都會分配一個全局唯一智能車編號,同時還有跟該編號一一 對應的MASK值,相當于是智能車的密碼。服務器端分配有一對公鑰和私鑰,同時在智能車 出廠時內置服務器的公鑰。本發明所述的智能車的安全通信方法,通過下面的步驟實現:
[0032] 步驟一:智能車客戶端隨機生成一個數,作為之后通信對稱加密算法的密鑰,同時 也用來對服務器進行驗證。這一步智能車客戶端使用非對稱加密算法即用服務器公鑰加密 客戶端生成的對稱密鑰,發送給服務器。在本安全通信方法中,每次智能車客戶端和服務器 通信時都采用不同的對稱加密密鑰,保證了數據傳輸的安全。加密密鑰的生成采用MD5算 法,當需要與服務器建立連接時,根據當前智能車位置信息、電池信息、累計行駛里程、當前 時鐘等信息通過MD5算法生成1024位密鑰,保證了密鑰的隨機性。
[0033] 本安全通信方法的非對稱加密算法采用RSA公鑰加密算法,RSA算法非常可靠,隨 著密鑰的增長,它的破解難度越來越大。據已有信息查證,目前被破解的最長的RSA密鑰長 度為768位,但也是花了很大的功夫才破解成功的。換句話說,長度超過768位的密鑰至今 還沒有被人破解(至少是還沒有人宣布已經破解)。因此我們完全可以認為在當前的環境 下,1024位的RSA密鑰是安全的,2048位的RSA密鑰極其安全。
[0034] 首先是公鑰和私鑰的生成,生成公鑰和私鑰的過程涉及到費馬-歐拉定理,具體 分為如下步驟:
[0035] a)隨機選擇兩個不同的質數p和q,這兩個數越大,長度越接近,就越難破解,這里 我們以P = 73, q = 97來舉例說明。
[0036] b)計算p和q的乘積η,η = 73*97 = 7081 ;n的二進制表示長度就是密鑰的長 度。7081的二進制表示為1101110101001,一共有13位,所以本次非對稱密鑰的長度就是 13位。
[0037] c)計算η的歐拉函數φ(η),根據歐拉公式φ(η) = (p - l.)(q - 1),因此=6912。
[0038] d)隨機選擇一個整數e,但是必須滿足I < e < φ(η),并且e要與φ(η)互質。這 里我們選擇29。
[0039] e)計算e對于φ(η)的模反元素 d,所謂"模反元素"就是指有一個整數d,使得ed 被φ(η)除的余數為I,ed φ(η))Ρ.這個公式等價于ed - I. = k φ(丨1),:為了求出 d,相當于對戰+ cp(n)y = 1這個二元一次方程求解,其中e = 29,Φ (η) = 6912,利用擴展 歐幾里得算法,得出一組解為(6197,-26)。
[0040] f)到這一步,我們就求出了公鑰和私鑰所需的所有東西。η = 7081,e = 29, d = 6197,所以公鑰就是(7081,29),私鑰就是(7081,6197)。
[0041] 然后是如何使用公鑰對信息進行加密,RSA加密的對象必須是整數,并且還要小于 η (因為η很大,這個條件很容易滿足)。在智能車管理系統通信中,智能車VCU和服務器之 間采用RSA加密的對象就是一個對稱加密算法的密鑰。加密需要用到公鑰中的η和e,假設 我們要加密的隨機數為m,加密的過程就是執行公式m e= c (mod η)。現在η = 7081,e = 29,假設m = 314,根據該公式,計算出c等于3117,這就是我們使用公鑰加密得到的密文。
[0042] 接著是如何使用私鑰對密文進行解密,解密就要用到上面生成的私鑰(7081, 6197)。按照如下公式cd= m(mod η),算出m = 314,跟加密前的信息一致。至此,整個加 密解密過程全部完成。
[0043] 步驟二:服務器用私鑰解密消息,獲得對稱密鑰。用對稱