盛昱杰 郭子恒 沈偉
摘? ?要:隨著智能汽車、車聯(lián)網的快速發(fā)展,攻擊者可以通過對外開放的接口實施攻擊,引發(fā)車載信息安全問題,嚴重威脅車輛乘坐人的生命及財產安全的問題。為此提出了一種車載控制局域網安全服務協(xié)議,包括啟動階段和通信階段兩個模塊協(xié)議。啟動階段的初始化身份認證過程采用公鑰加密體系及數(shù)字簽名技術,在車輛點火啟動時完成各節(jié)點的初始化認證,保證各通信節(jié)點身份的可靠性;通信階段采用動態(tài)口令及消息摘要技術,保證了消息的機密性和完整性,并利用單次有效的動態(tài)口令實現(xiàn)對重放攻擊的抵抗。通過搭建車載控制局域網總線仿真平臺,模擬多種不同的攻擊場景。實驗結果表明,該協(xié)議能夠為車輛提供可靠的初始化身份認證及通信安全,提高了系統(tǒng)安全服務水平??偩€負載開銷及消息時延也在合理水平。
關鍵詞:車載控制器局域網絡總線;車載信息安全;安全服務協(xié)議
中圖分類號:TP399 文獻標識碼:A
A Security Service Protocol for In-vehicle CAN Bus
SHENG Yu-jie?覮,GUO Zi-heng,SHEN Wei
(School of Computer Science and Engineering,Nanjing University of Science and Technology,Nanjing,Jiangsu 210094,China)
Abstract:A security service protocol for in-vehicle controller area network bus is proposed to solve the problem that the attackers can access some opening interface which may put the passengers in a dangerous situation. The protocol SSCAN contains two modules,IAM and EM. IAM uses the public key encryption system and digital signature technology to keep each ECU node in CAN bus reliability during the vehicle start-up phase. EM uses the dynamic password and message digest technology to keep the messages in safety,and can resistance replay attacks by the one-time dynamic password. To assess the SSCAN protocol,a hardware platform of CAN bus is built to simulate some different attack scenarios. The experimental results show that the protocol provides reliable initial authentication and communication security for vehicles and improves the system security service levels. The CAN bus load and messages average latency is also on a reasonable level.
Key words:controller area network bus;in-vehicle security;security service protocol
隨著“物聯(lián)網”、“車聯(lián)網”等技術的不斷發(fā)展,汽車這一商品的屬性已經從傳統(tǒng)的機械類商品轉向為“機械+智能化”的混合類型商品。“智能汽車”已經從一種概念類商品落地成為一種消費類商品。技術上的不斷創(chuàng)新,使得人們的駕駛體驗得以不斷改進。但是,伴隨這些技術而來的,是車輛提供了越來越多的對外通信接口。攻擊者可以通過車載藍牙、無線和OBD-II等模塊進行攻擊[1-4]。攻擊的對象可以是車輛的各種關鍵性模塊,包括發(fā)動機、ABS系統(tǒng)等。這些攻擊一旦成功,將嚴重威脅車輛的安全。因此,智能汽車的信息安全問題是一個必須解決的問題,而車載總線局域網的信息安全則應是重中之重。
在汽車工業(yè)中,應用著多種總線局域網技術,其中CAN(Controller Area Network)總線技術以其可靠性、靈活性、實時性等特點,成為應用最為廣泛的車載控制局域網協(xié)議。但是,CAN總線協(xié)議至今已有三十多年的歷史,在設計之初并沒有考慮到如今智能汽車的大量應用,即并沒有考慮到車輛有如此眾多的對外通信接口,而是把車輛考慮成為一個封閉的孤立的通信環(huán)境,因此并沒有考慮總線及相連節(jié)點的安全性問題[5]。同時,由于CAN總線帶寬的限制以及數(shù)據(jù)幀長度的問題,使得其在引入安全服務的問題上非常具有挑戰(zhàn)性[6]。
研究了CAN總線協(xié)議以及安全需求后,設計提出了一種車輛控制局域網的安全服務協(xié)議(SSCAN)。SSCAN包括兩個模塊,一是對通信數(shù)據(jù)加密的EM模塊,二是對連接在CAN總線上的節(jié)點認證身份的IAM模塊。保護了消息的機密性,保證了節(jié)點的可靠性。為驗證SSCAN協(xié)議的有效性,在基于飛思卡爾MC9S12XS128MAL開發(fā)板上,搭建了相應的仿真平臺,驗證了SSCAN能夠提供有效的安全服務。
1? ?車載CAN總線安全需求分析
1.1? ?CAN總線協(xié)議
CAN總線協(xié)議是由博世公司(BOSCH)發(fā)明的一種基于消息廣播模式的串行通信總線,最初應用于實現(xiàn)汽車內電子控制單元(Electrical Control Unit,ECU)之間的可靠通信,后因為其可靠性、靈活性、實時性等特點而廣泛地應用在工業(yè)自動化、船舶等其他領域中。CAN總線是一種多主控的總線系統(tǒng),其消息是以明文的形式廣播的,即在同一時刻網絡中所有的節(jié)點監(jiān)聽到的數(shù)據(jù)是相同的。
CAN總線的通信標準分為兩個部分,即CAN2.0A和CAN2.0B[7]。在CAN2.0A中,使用的ID標識符為11位的標準幀格式;在CAN2.0B中,它會向下兼容CAN2.0A的數(shù)據(jù)幀格式,并且同時使用了擴展幀的數(shù)據(jù)幀格式,使得ID標識符增加到了29位,即可以為更多的ECU節(jié)點分配ID。圖1即為CAN總線協(xié)議中的標準幀與擴展幀格式[8]。
1.2? ?CAN總線潛在的安全風險
車載CAN總線存在如下一些問題:
1)廣播型總線網絡
廣播型總線網絡是CAN總線最大的特征之一。對于連接在CAN總線上的各個ECU來說,每個ECU節(jié)點都能向CAN總線發(fā)送數(shù)據(jù),每個ECU節(jié)點也都能從CAN總線接收數(shù)據(jù)。當攻擊者控制了任何一個ECU節(jié)點,并向總線中發(fā)送危險的具有惡意的信息,就有可能造成車輛關鍵部件作用的喪失,使駕駛者處于危險的境地[9]。
2)協(xié)議中沒有安全機制
CAN總線成為汽車工業(yè)中的標準時,汽車并沒有對外的接口。封閉的環(huán)境使得CAN總線協(xié)議在設計之初并沒有考慮相關的安全性問題。但是隨著互聯(lián)網、物聯(lián)網等技術的發(fā)展,汽車對外的接口越來越多,導致協(xié)議中存在了許多的安全漏洞,缺乏自我保護的能力。
1.3? ?CAN總線安全服務設計分析
在設計CAN總線網絡的安全機制時,自然能考慮到將現(xiàn)有以太網的安全機制移植應用到CAN總線上。但是,CAN總線自身的一些特點[10],與以太網等傳統(tǒng)網絡的差別很大,具體體現(xiàn)在:
1)ECU節(jié)點的計算能力
本質上ECU就是一個嵌入式設備,其計算能力會受到相當程度上的限制。在傳統(tǒng)網絡為,為了提高信息的機密性,通常會采用加密算法將信息加密;為了獲得更好的保密效果,更加復雜、計算開銷更大的加密算法得以應用。面對復雜的加密算法,大型的計算機、服務器甚至是個人的智能手機有足夠的能力來應對,但對于汽車的ECU來說,過于復雜的加密算法反而會成為掣肘,無法滿足相關系統(tǒng)的實時性要求。
2)CAN總線通信協(xié)議的差異
與傳統(tǒng)的以太網相比,車載CAN總線的通信協(xié)議并不相同[11]。如前文介紹的那樣,在數(shù)據(jù)幀的數(shù)據(jù)長度、標識、周期等方面都存在差異;此外,CAN總線協(xié)議在不同的應用場景下會選擇不同的總線帶寬,一般總線帶寬為500 kbps,最高可達到1 000 kbps,遠小于諸如以太網等網絡。這些差異導致我們并不能照搬原有網絡的安全機制,應有更因地制宜的方式方法來設計CAN總線自身的安全機制。
3)CAN總線通信的實時性要求
對于部分在CAN總線上傳輸?shù)腅CU消息,系統(tǒng)對其傳輸有實時性要求。在引入安全服務后,傳輸?shù)臅r間開銷必然增大。
2? ?SSCAN協(xié)議設計與分析
通過對CAN總線安全服務需求及初步算法的設計,本文在CAN總線協(xié)議的基礎上,設計了在汽車點火啟動階段使用的安全服務模塊IAM協(xié)議,以及在使用過程中通信階段的安全服務模塊EM協(xié)議[12],組成了保障汽車在點火啟動及使用過程安全性的SSCAN協(xié)議。IAM協(xié)議采用基于公開密鑰密碼系統(tǒng)和數(shù)字簽名的身份認證技術,保證了CAN總線上各個通信節(jié)點身份的真實性,并為接下來通信階段的安全服務提供保障;EM協(xié)議利用通信加密、消息驗證碼等技術,保證了通信數(shù)據(jù)在節(jié)點之間傳輸時的數(shù)據(jù)機密性及新鮮性。
2.1? ?IAM協(xié)議
IAM協(xié)議為沒有安全服務的CAN總線協(xié)議引入了身份認證的功能,并為后續(xù)通信階段的安全服務提供保障。IAM協(xié)議通過采用公開密鑰系統(tǒng)和數(shù)字簽名技術,在車輛點火啟動時對網關節(jié)點及ECU節(jié)點進行初始化身份認證。身份認證的過程只在點火啟動階段進行一次,并會適時更新相應的密鑰。
在車輛點火啟動后,連接在CAN總線上的所有ECU節(jié)點均向控制網關發(fā)生身份認證請求;認證通過后,由網關向各個ECU節(jié)點發(fā)送相應的動態(tài)口令,為后續(xù)EM協(xié)議中數(shù)據(jù)加密及消息認證服務做準備。
在本方案中,采用了ECC非對稱加密算法。相較于傳統(tǒng)的RSA非對稱加密算法,ECC加密算法有抗攻擊能力強、計算開銷小等特點,適合用于車輛電子控制單元這類能力有限的嵌入式設備中[14]。身份認證過程具體分為以下四個步驟,其中E是加密函數(shù),D是解密函數(shù):
步驟1:車輛點火啟動后,編號為Ni的ECU節(jié)點查詢本地映射表確定需要與之通信的ECU節(jié)點編號{Nm,Nm+1,…,Nn},按一定的編碼規(guī)則ER,組成靜態(tài)口令SPi;利用網關節(jié)點G的公鑰KGU對靜態(tài)口令SPi進行加密形成密文C1i;利用Hash函數(shù)對靜態(tài)口令SPi作消息摘要得到MS,并利用節(jié)點Ni的私鑰KiU對其加密形成數(shù)字簽名C2i。將加密密文C1i與數(shù)字簽名C2i組合形成加密消息Ci發(fā)生給網關G。
步驟2:網關G獲取到編號為Ni的節(jié)點發(fā)送來的認證消息Ci,查詢信任列表確定節(jié)點Ni是否為已信任節(jié)點。若節(jié)點已通過認證,則廣播警報幀;若未通過認證,則根據(jù)規(guī)則將其拆分為C1i和C2i兩個部分。利用網關的私鑰KGR對C1i進行解密,得到靜態(tài)口令SPi,對比網關節(jié)點存儲的映射信息確認口令是否正確。若靜態(tài)口令相同,則對其作消息摘要處理得到MS1;若靜態(tài)口令不同,則發(fā)送警報幀,節(jié)點Ni身份認證失敗。
步驟3:利用節(jié)點Ni的公鑰KiU對C2i進行解密得到消息摘要MS,對比步驟2 中得到的摘要MS1。若兩個消息摘要相同,則節(jié)點Ni身份認證通過,加入網關G的信任列表中;若不相同,則發(fā)送警報幀,節(jié)點Ni身份認證失敗。
步驟4:在各個ECU節(jié)點向網關G完成身份認證后,網關G向需要通信的節(jié)點對{Ni,Nj}加密發(fā)送動態(tài)口令Dij和Dji作為認證結果的反饋,其中Dij = Dji,為后續(xù)通信過程中EM協(xié)議提供保障。
由于車輛啟動后即進入工作狀態(tài),因此對CAN總線上各個節(jié)點的初始化身份認證過程有時間限制。對于超時認證,網關G將不再應答。
至此,連接在CAN總線網絡上的所有節(jié)點與網關的初始化認證階段結束。網關確認了待通信節(jié)點的身份信息,并為其分配了通信階段需要的動態(tài)口令DP。
2.2? ?EM協(xié)議
通過IAM協(xié)議,車輛在點火啟動階段完成了各個節(jié)點的初始化身份認證,并分配了通信階段需要的動態(tài)口令DP。在通信階段,第p次通信都是基于動態(tài)口令DP p完成的,完成后會更新得到新的動態(tài)口令DP p+1,為第p+1次通信做準備。
發(fā)送方Ni向接收方Nj作第p次通信時,將消息數(shù)據(jù)Mp與動態(tài)口令DP pij進行異或運算得到加密的消息MpE,并利用Hash函數(shù)計算得到消息認證碼(Message authentication code,MAC)MAC p,再將動態(tài)口令DP pij進行Hash函數(shù)計算得到下一次通信所需的動態(tài)口令P p+1ij? ? ?。
對于運行在CAN總線之上的汽車電子系統(tǒng)來說,消息幀有實時性條件約束,若將加密的消息MpE和消息認證碼MAC p分開傳輸,必然增加了總線傳輸?shù)臅r間開銷,導致消息幀超時。通過研究發(fā)現(xiàn),ECU在傳遞消息時一般只使用大概3-4字節(jié)的空間,相對于CAN總線協(xié)議標準的8字節(jié)數(shù)據(jù)空間,還有富余。因此在傳輸過程中,定義消息幀的前7個字節(jié)用于傳輸加密的消息MpE,最后一個字節(jié)傳輸消息認證碼MAC p,降低通信傳輸過程中的開銷。
接收方Nj在接收到加密消息MpE和消息認證碼MAC p后,利用本次通信的動態(tài)口令DP pij解析出消息明文M p,并利用Hash函數(shù)計算得到消息認證碼MAC p與接收得到的消息認證碼進行比對。若消息認證碼相同,則接受明文消息M p,并利用Hash函數(shù)計算得到下次通信使用的動態(tài)口令DP p+1ij? ? ?;若消息認證碼不同,則放棄消息,并向CAN總線上廣播警告幀。
3? ?實驗與性能分析
3.1? ?實驗設計
為驗證本文提出的安全服務應用方法,實驗采用2個飛思卡爾的CAN總線開發(fā)板(型號為MC9S12XS128MAL),來構建實驗仿真平臺。利用一個USBCAN-II S模擬一個攻擊節(jié)點A。USBCAN-II S使用其自帶的軟件CANTest,實現(xiàn)在PC端監(jiān)控獲取和發(fā)送CAN總線消息幀。
為了驗證本文提出的應用方法有效性,實驗模擬了兩種不同的應用場景,即車輛點火啟動時各節(jié)點初始化認證場景和通信階段場景。針對不同階段不同場景的攻擊,在分析出節(jié)點身份異常及消息可疑時,會廣播特定格式的警報幀報警,實現(xiàn)系統(tǒng)安全服務的功能。
為了驗證本文提出的安全服務協(xié)議是否滿足系統(tǒng)實時性要求,利用OMNet++搭建了仿真環(huán)境,確定安全服務協(xié)議的引入對CAN總線負載及消息時延的影響。
3.2? ?啟動階段身份認證分析
每次車輛點火啟動后,各ECU節(jié)點和網關節(jié)點上電后要進行初始化身份認證,保證CAN總線上所有通信節(jié)點身份的真實性和有效性,避免攻擊者利用虛假身份信息對CAN總線發(fā)動相應的攻擊。
對于啟動階段的身份認證分析,實驗模擬了4種不同的應用場景,驗證了IAM協(xié)議的有效性。
場景1? ?假定攻擊節(jié)點A在車輛啟動前已經連接在CAN總線上。車輛點火啟動后,需要各節(jié)點與網關節(jié)點進行身份認證。由于攻擊節(jié)點A沒有保存在本地的網關公鑰KGU,也沒有根據(jù)需要通信節(jié)點編號形成的靜態(tài)口令SPi,無法形成有效的加密認證消息,無法通過身份認證。
場景2? ?攻擊節(jié)點A在節(jié)點身份認證的過程中,通過竊聽總線消息,獲得了普通節(jié)點b的認證消息幀(第2幀),篡改后發(fā)送到CAN總線上。如表1第5號幀所示。由于消息篡改后,消息的數(shù)字簽名將會發(fā)生變化,使得節(jié)點的認證無法通過。網關G向CAN總線廣播警告幀(第6幀)。
場景3? ?攻擊節(jié)點A在節(jié)點身份認證的過程中,通過竊聽總線消息,獲得了普通節(jié)點c的認證消息幀(第8幀)。并對消息幀不做處理再次發(fā)送到CAN總線上,如表1中第10號幀所示。此時,網關G在查詢其信任列表后發(fā)現(xiàn)節(jié)點c已完成認證,將會直接廣播警報幀。
場景4? ?攻擊節(jié)點 存儲了上一次節(jié)點c的認證消息幀,在下一次啟動時搶先發(fā)布,如表2中第2號幀所示。網關G正常返回節(jié)點 認證通過的消息。節(jié)點b利用私鑰KbR解密得到通信用的動態(tài)口令DP,而攻擊節(jié)點A由于沒有私鑰KbR,無法解密認證消息,也就無法獲得通信用的動態(tài)口令DP。同時,節(jié)點c正常發(fā)送的認證請求會被網關G認為是可疑請求而廣播警報幀。
3.3? ?通信階段的安全性分析
在初始化身份認證階段結束后,所有認證通過的ECU節(jié)點都獲取了相應的通信動態(tài)口令D。此時,攻擊者仍能通過相關接口偽造或篡改一些通信消息幀來達到攻擊的目的。本階段,設置了3種不同的場景,驗證了EM協(xié)議的有效性。
場景1:攻擊節(jié)點A直接偽造了一條消息向節(jié)點 發(fā)送,如表3第2號消息幀所示。由于攻擊者沒有節(jié)點i相應的動態(tài)口令,在節(jié)點i檢驗消息驗證碼時無法得到正確的相同的消息驗證碼,因此節(jié)點i將直接向CAN總線中廣播警告幀。
場景2:攻擊節(jié)點A在CAN總線上監(jiān)聽到一個由節(jié)點m發(fā)送到節(jié)點n的消息幀。竊取后不做任何修改直接廣播到CAN總線上,如表3第6號幀所示。此時,由于節(jié)點m和節(jié)點n之間的正常通信已經結束,其各自的動態(tài)口令DP p? ?mn和DP p? ?nm已經作廢,取而代之的是更新后的動態(tài)口令DP p+1mn? ? ?和
DP p+1nm? ? ?。顯然,利用D p? ?nm得到的消息驗證碼MAC p不會和利用D p+1nm? ? 得到的消息驗證碼MAC p+1相同。因此,節(jié)點n會廣播警告幀。
場景3:攻擊節(jié)點A在CAN總線上監(jiān)聽到一個由節(jié)點m發(fā)送到節(jié)點n的消息幀。竊取后篡改內容后廣播到CAN總線上,如表3第10號幀所示。同場景2中類似,接收節(jié)點n不可能得到兩個相同的消息驗證碼,因此仍會向CAN總線中廣播警告幀。
4.4? ?總線負載及消息時延仿真
本節(jié)將討論本文所提出的安全服務協(xié)議SSCAN對CAN總線負載以及消息時延的影響。本文使用OMNet++仿真軟件搭建CAN總線環(huán)境,總線帶寬設置為500 kbps,設置了5個ECU節(jié)點和1個網關節(jié)點,采用一個包含49條消息的消息集進行試驗。計算總線負載以及消息平均時延。
如表4,仿真實驗中,當各節(jié)點之間既無身份認證,又無消息加密機制,總線負載為324.58 kbps,消息平均時延為8.265 ms;當引入本文所提出的安全服務協(xié)議后,總線負載提高了1.38%,至329.05 kbps,消息平均時延提高了2.50%,至8.472 ms。引入安全服務協(xié)議后對總線負載及消息影響有限。
在EM協(xié)議中,本文只利用了1個字節(jié)8個比特的空間來存放消息驗證碼(MAC)。正如前文所述,ECU在傳遞消息時一般只使用大概3-4字節(jié)的空間,因此還有至多3個字節(jié)的空間可用于存放消息認證碼。理論上,使用空間越大,加密等級越高,安全性能就越好。
在對原有消息集消息長度進行處理后進行仿真實驗得到如表5的結果。當MAC字節(jié)數(shù)為0時,即為未引入安全服務。表中總線負載和消息平均時延的數(shù)據(jù)是與為引入安全服務時兩者表現(xiàn)的比值。MAC字節(jié)數(shù)越高,總線負載和消息平均時延皆有所上升,但上升幅度不大。
本節(jié)主要討論了SSCAN協(xié)議對總線負載及消息時延的影響,并沒有設定相應的閾值判定其是否有效。應用中應根據(jù)實際需要來確定協(xié)議的應用及應用的等級。
4? ?結? ?論
針對CAN總線協(xié)議缺乏安全服務應用的現(xiàn)狀,提出了一種車載控制局域網安全服務應用協(xié)議SSCAN,該協(xié)議包括驗證通信節(jié)點身份真實性的IAM協(xié)議和保障通信消息的機密性、完整性的EM協(xié)議。通過搭建仿真平臺,驗證了SSCAN協(xié)議在車輛點火啟動階段和通信階段能提供有效的安全保障,系統(tǒng)實時性要求也基本能得到滿足。
參考文獻
[1]? ? LIN C W,ZHENG B,ZHU Q,et al. Security-aware design methodology and optimization for automotive systems[J]. ACM Transactions on Design Automation of Electronic Systems,2015,21(1):1—26.
[2]? ? LIN C W,ZHU Q,PHUNG C,et al. Security-aware mapping for CAN-based real-time distributed automotive systems[C]// IEEE ACM International Conference on Computer-Aided Design. ACM,2013.
[3]? ?LIN C W,ZHU Q,SANGIOVANNI-VINCENTELLI A . Security-aware modeling and efficient mapping for CAN-based real-time distributed Automotive Systems[J]. IEEE Embedded Systems Letters,2015,7(1):11—14.
[4]? ? LIN C W,SANGIOVANNIVINCENTELLI A . Cyber-security for the controller area network (CAN)communication protocol[C]// International Conference on Cyber Security. IEEE Computer Society,2012.
[5]? ?NILSSON D K,LARSON U E,JONSSON E . Efficient in-vehicle delayed data authentication based on compound message authentication codes[C]// Vehicular Technology Conference, VTC 2008-Fall. IEEE 68th. IEEE,2008.
[6]? ? GROZA B,MURVAY S,HERREWEGE A V,et al. LiBrA-CAN:a lightweight broadcast authentication protocol for controller area networks[C]// International Conference on Cryptology and Network Security,2012.
[7]? ? BOSCH,CAN Specification[M],version 2.0,1991.
[8]? ? 張鷗. 智能網聯(lián)汽車安全網關技術的研究與實現(xiàn)[D]. 成都:電子科技大學,2018.
[9]? ? CHAKRABORTY S,F(xiàn)ARUQUE M A,CHANG W,et al. Automotive cyber-physical systems:a tutorial introduction[J]. IEEE Design & Test,2016:1—1.
[10]? SZILAGYI C J . Low cost multicast network authentication for embedded control systems[J]. Dissertations & Theses - Gradworks,2012.
[11]? XIE G,CHEN Y,LIU Y,et al. Minimizing development cost with reliability goal for automotive functional safety during design phase[J]. IEEE Transactions on Reliability,2017:1—16.
[12]? 吳尚則,秦貴和,劉顏,等. 車載控制器局域網絡總線的動態(tài)口令身份認證方法[J]. 西安交通大學學報,2017,51(6):97—102.
[13] VIJAYALAKSHMI N,SASIKUMAR R . An id-based privacy preservation for VANET[C]// International Conference on Computing & Communications Technologies. IEEE,2015.
[14]? SCHNEIER B,施奈爾,吳世忠,et al. 應用密碼學[M]. 北京:機械工業(yè)出版社,2014.