李明揆 張馳
摘要:隨著電子化和自動化技術不斷成熟,汽車通過連接到智能手機、藍牙、因特網等給駕駛員提升了汽車的駕駛樂趣,反面帶來了黑客攻擊、安全漏洞等不容忽視的安全問題,會嚴重影響汽車行駛安全、個人隱私、甚至危及公共安全。車載以太網具有高速率特性,可以應用在汽車上的多媒體系統當中。但是車載總線系統和多媒體系統通過網關系統來相互連接的原因CAN、FlexRay等車載總線網絡系統不再是獨立、安全的網絡系統,所以必須保障車載以太網的安全性。本文通過搭建車載以太網網絡模型,并利用AES-128加密算法和HMAC-SHA1安全認證方法和技術引入到車載以太網系統當中,從而有效防止了外部入侵、數據跳變等可能性,同時進一步提高了車載以太網及總線網絡的網絡安全性能。
關鍵詞:車載以太網;數據加密;網絡安全;視頻傳輸;總線網絡
中圖分類號:TP311 文獻標識碼:A
文章編號:1009-3044(2019)12-0025-03
開放科學(資源服務)標識碼(OSID):
1 研究背景
隨著汽車的科技化、智能化、網絡化的不斷地發展,車內電子產品的數目不斷增加,車內電控系統越來越復雜,電子控制單元數目也在不斷地攀增[1]。同時汽車輔助駕駛系統、高清車載娛樂系統、車聯網系統、云服務、大數據等新興科技應用在汽車上,所以對汽車網絡帶寬的要求越來越高[2]。車載以太網系統可以滿足智能型汽車的網絡寬帶的需求。車載總線網絡不僅僅連接到車內各種ECU,同時連接到駕駛員的智能手機、GPS、藍牙、因特網、V2V等,因此車載總線網絡很容易受到外部黑客入侵、網絡漏洞等攻擊,會導致汽車失去制動、轉向燈基本的操作功能[3]。因此必須要保障車載網絡的安全性和可靠性。
近幾年越來越多案例表明車載總線網絡已經不是獨立的,安全的了。車載總線網絡很容易被入侵。如果不加防范,入侵者可以隨意地對總線上的數據進行修改[4]。因此有必要采用網絡安全技術,加密和認證等網絡安全技術來提高車載總線網絡的安全性[5]。
本文的第二章介紹了AES-128高級加密算法的設計過程和運算流程,第三章介紹了HMAC認證算法,并且描述了HMAC-SHA1認證算法的具體步驟,在第四章綜合利用AES-128加密算法和HMAC-SHA1認證算法應用在車載以太網系統,并進行仿真實驗。最后第五章對實驗的內容進行了總結和展望。
2 AES-128加密算法
AES(Advanced Encryption Standard)加密算法是以Rijmen算法作為標準,具有穩定安全、運算快、占用內存小、易于實現等特點,能夠很好地運用在各種網絡環境中。AES加密算法的密鑰長度允許設置128位、192位、256位等三種。本文綜合考慮車載以太網系統中視頻信息傳輸容量、AES加密算法的運算時間等因素,選取AES-128加密算法來應用到車載以太網系統中。
AES加密算法具有位、字節、字、分組和態等5個計量單位。其中,字是由4個字節組成,所以可以按行或列來排成矩陣。AES中分組為128位,表示為16個行字節組成的行矩陣。態用來表示加密每個步驟使用之前和使用之后的數據分組,可以組成4X4字節的矩陣。
每一輪加密過程需要經過代替和混淆運算的處理數據分組。每輪運算包括字節代替、列混淆、行位移、輪密鑰加等4個階段。
字節代替(Sub Bytes)是一個基于S盒的非線性置換,他可以將輸入或輸出中間狀態的每一個字節通過簡單的查表方式替代,將其影射變換成另外一個字節。S盒是一個16行16列的固定矩陣。映射的時候把輸入字節的高四位作為S盒的行值,低四位作為列值,然后把S盒中對應行和列的元素作為輸出。
列混淆(Mix Columns)目的是把輸入的態進行混淆打亂操作。方法如公式(1)所示。
[a'(x)=b(x)·a(x)mod(x4+1)] (1)
其中,[a(x)]和[a'(x)]分別表示列混淆前和列混淆后的狀態,[b(x)={03}·x3+{01}·x2+{01}·x]中大括號內的數表示是字節。
[a'(x)=a'0,c+a'1,c·x+a'0,c·x2+a'0,c·x3]
[a(x)=a0,c+a1,c·x+a0,c·x2+a0,c·x3]
[a'(x)]代表[b(x)]與[a(x)]相乘后x的指數[mod(x4+1)]等于0的項的系數之和,利用[ximod(x4+1)=ximod4],可得
[a'(x)={02}a0,c+{03}a1,c·x+{01}a2,c+{01}a3,c][=02030101a0,ca1,ca2,ca3,c]
其余類似,因此具體過程可以由矩陣運算(2)表示。
[a'0a'1a'2a'3=02030101010203010101020303010102a0a1a2a3] (2)
行位移變換(Shift Rows)是進行基于行的循環位移操作,圖2表示行位移的過程。其中[a]和[a']表示行位移前和行位移后的狀態。一個態從上到下分別為第0行,第1行,第2行和第3行。行位移時,一個態的第0行不變,第1行循環左移一個字節,第2行循環左移2個字節,第3行循環左移三個字節。
輪密鑰加(Add Round Key)變換是將輸入或中間態S的每一列與一個密鑰[ki]進行按位異或運算。每一輪密鑰由[Nb]個字組成,第r輪第c個輪密鑰字表示為[w[r*Nb+c]]。輪密鑰加變換可表示為公式(3):
[[S'0,c,S'1,c,S'2,c,S'3,c]=[S0,c,S1,c,S2,c,S3,c]⊕][w[r*Nb+c](0≤r
AES解密過程是加密過程的逆過程,同樣需要經過十輪運算。并且每輪運算需要經過逆字節代替、逆行位移、逆列混、淆輪密鑰加等四個階段。
逆字節替代(Inverse Sub Bytes)是字節代替的逆過程,替代輸出的值通過查詢逆S盒得到。逆S盒也是一個16行16列固定的矩陣。映射的時候把輸入字節的高四位作為S盒的行值,低四位作為列值,然后把S盒中對應行和列的元素作為輸出。
逆行位移(Inverse Shift Rows)與行位移相反。逆行位移將4X4矩陣的后三行按相反的方向位移。即第0行保持不變,第1行向右循環位移一字節,第2行向右循環位移二字節,第3行向右循環位移四字節。
逆列混淆(Inverse Mix Columns)和列混淆有相似的處理過程,同時每一列值都與一個固定的多項式b(x)相乘,多項式(4)對其進行了定義。
[a'(x)=c(x)·a(x)mod(x4+1)] (4)
其中[c(x)={0b}x3+{0d}x2+{09}x+{0e}],[c(x)]為列混淆過程中[b(x)mod(x4+1)]的逆,即
[b(x)·c(x)={03}·x3+{01}·x2+{01}·x+{02}·d(x)≡1mod(x4+1)]
得到[c(x)={0b}·x3+{0d}·x2+{09}·x+{0e}]
公式(5)是逆列混淆過程的矩陣表示。
[a'0a'1a'2a'3=0e0b0d09090e0b0d0d090e0b0b0d090ea'0a'1a'2a'3] (5)
經過發送端的加密過程和接收端的解密過程步驟,接收端最終可以得到安全的信息。
3 HMAC-SHA1算法
HMAC(哈希運算消息認證碼)是一種基于哈希的消息認證碼,他是由一個內部哈希和一個外部哈希組成。定義一個 HMAC需要一個散列函數和一個密鑰K。假設數據塊H是迭代壓縮函數來加密的散列函數,ipad為內部固定的字符串,opad為外部固定的字符串,M為需要傳遞的信息,公式(6)為HAMC算法的表達式。
[HMACK(M)=HK⊕opad||HK⊕opad||M] (6)
圖3為HMAC算法流程圖。首先在密鑰K后添加0來創建一個長度為B的字符串;然后將這個字符串和ipad做異或運算;將數據流填充到異或運算的結果中;經過信息摘要算法生成數據塊H;然后B字長的字符串與opad做異或運算生成s2;然后數據塊H填充到s2后面;經過信息摘要算法最終得到HMAC結果。
本文采用的HMAC-SHA1算法是散列函數為SHA1的HMAC算法。即圖3中的Message Digest algorithm部分為SHA-1算法。
安全哈希算法SHA-1是一種消息摘要函數。它允許的最大的消息長度為[264]位,產生的信息摘要為160位。在進行哈希計算之前,此算法需要先對信息進行預處理。預處理包括填充、分割和設定初始值等3個過程。其中,填充過程是在計算哈希之前把消息填充為512的倍數;分割過程是在壓縮函數之前把消息分割為長度為512位的分組,同時每個分組又可以分為16個大小為的32位的小分組;第一輪初始值是固定的迭代值(5個32位的小分組),下一輪初始值是通過前一輪迭代計算之后可以得到,所以實際計算過程需要經過多輪迭代。最終SHA-1算法產生一個160位的消息摘要。由于SHA-1算法產生的信息摘要具有不可逆向推導的特性,發送端計算信息摘要之后發送給接收端,接收端在收到信息后對信息進行消息摘要的計算,并和發送端傳輸過來的信息摘要進行對比。
本文采用的HMAC-SHA1算法的運算步驟如下。首先設N為同步序列號,每計算一次信息摘要時N增加1。首先,在發送端,利用密鑰K來求出數據塊B長度的新的密鑰K0,然后利用HMAC -SHA1算法進行計算消息摘要MAC碼。然后采用AES-128加密算法和SHA-1信息摘要算法相結合對發送的信息進行加密,并傳送給驗證模塊。在驗證模塊,首先對接受到的數據進行解密,再利用密鑰K0來求出數據塊B,然后利用HMAC -SHA1算法計算消息摘要。對比序列號N和N+1端的信息摘要,如果發送端和接收端的信息摘要值一致,則表明通信數據是準確的,如果不一致說明數據被改變了,接收端丟棄接收的信息并且請求發送端重新發送數據。
4 仿真實驗
本文對視頻文件進行了AES-128加密算法和HMAC-SHA1認證算法過程,并進行了基于CANoe.Ethernet車載以太網實驗平臺的通信實驗。
圖4是對視頻文件進行加密和認證的流程圖。首先,發送端把HMAC的密鑰K0和AES-128的密鑰K1傳送給接收端。當發送端收到接收端視頻請求之后,利用密鑰K1對視頻文件進行加密,然后利用密鑰K0生成信息摘要,之后把加密后的視頻和信息摘要一起發送給接收端。
接收端接收發送端發過來的視頻之后,首先利用密鑰K0對已接收的文件進行解密,然后計算解密后文件的信息摘要,接著對接收端計算的信息摘要值和發送端的信息摘要值進行對比。如果兩者一致,接收端再利用密鑰K1對視頻進行解密并播放,如果不一致則刪除當前文件并向發送端請求重新發送。
圖5是視頻在CANoe.Ethernet實驗仿真平臺中經過加密和認證之后播放結果。仿真結果表明,加密和認證處理過的視頻傳送和播放過程中沒有卡頓與延遲現象。說明對視頻文件進行AES-128加密運算和HMAC-SHA1認證運算之后提高了視頻通信信息的安全性的同時保障了視頻的正常播放。
5 結論
本文針對車載以太網的網絡安全問題,創新地把AES-128加密算法和HMAC-SHA1認證算法結合起來應用于視頻通信中。對視頻文件添加加密和認證算法之后仍然保持了正常通信,同時在實時通信環境下進一步提高了以太網通信網絡信息的安全性和可靠性。
參考文獻:
[1] 呼布欽,秦貴和,劉穎,等.下一代汽車網絡:車載以太網技術現狀與發展[J].計算機工程與應用,2016,52(24):29-36.
[2] 韓正士,秦貴和,趙睿,等.車載FlexRay總線安全協議的設計與實現[J].西安交通大學學報,2018,52(12):63-69.
[3] 吳貽淮,李飛,覃周.車載ECU加密通信與身份認證機制研究[J].懷化學院學報,2017,36(05):75-77.
[4] 張子鍵,張越,王劍.一種應用于CAN總線的異常檢測系統[J].信息安全與通信保密,2015(08):92-96.