章嘉彥,李 飛,李如翔,李亞林,宋佳琦,周啟揚(yáng)
(成都信息工程大學(xué)網(wǎng)絡(luò)空間安全學(xué)院,成都 610225)
近年來,隨著汽車行業(yè)的不斷發(fā)展,汽車與互聯(lián)網(wǎng)技術(shù)開始相結(jié)合,形成了車聯(lián)網(wǎng)。車聯(lián)網(wǎng)的構(gòu)建,除了互聯(lián)網(wǎng)技術(shù),還須借助于各種傳感器技術(shù)、無線通信技術(shù)和自動(dòng)控制技術(shù)等。由于上述技術(shù)存在著不安全性,使車聯(lián)網(wǎng)中的車輛節(jié)點(diǎn)比傳統(tǒng)網(wǎng)絡(luò)中的網(wǎng)絡(luò)節(jié)點(diǎn)面臨著更多不安全的因素,例如,Douceur提出的Sybil攻擊[1],在這種攻擊中由于實(shí)體缺少身份認(rèn)證,使一個(gè)實(shí)體可表現(xiàn)出多重身份而可能對系統(tǒng)進(jìn)行惡意控制,進(jìn)而造成嚴(yán)重的交通事故。Thing等[2]提出的In-Vehicle Spoofing攻擊,由于對相應(yīng)設(shè)備缺乏身份認(rèn)證,使對手可能通過用非法的模塊組件來代替合法的車內(nèi)模塊組件以至于車輛在進(jìn)行操作時(shí)通過注入惡意的信息從而達(dá)到對車輛整體的控制,導(dǎo)致重大事故的發(fā)生。2013年在拉斯維加斯的黑客大會(huì)上,著名的白帽黑客博士Miller和Valasek通過一定方式對一輛處于高速行駛狀態(tài)下的豐田普銳斯發(fā)起攻擊,使車輛在高速行駛時(shí)發(fā)生制動(dòng)失靈或突然制動(dòng)等異常行為[3]。2014年在黑帽子大會(huì)上Miller和Valasek公布了一份市場上針對20余款汽車車型的信息安全評估所提出的報(bào)告,同年國內(nèi)的奇虎360車聯(lián)安全評估小組也首次公布特斯拉汽車所對應(yīng)的汽車應(yīng)用程序所存在的響應(yīng)安全漏洞,黑客可通過該漏洞對汽車執(zhí)行遠(yuǎn)程控制并對車輛進(jìn)行解鎖、閃光和在車輛處于駕駛的狀態(tài)下開啟天窗等操作,同時(shí)360團(tuán)隊(duì)還通過毫米波雷達(dá)和超聲波雷達(dá)來實(shí)現(xiàn)對自動(dòng)駕駛汽車的欺騙操作[4-8],同樣被世界公認(rèn)為汽車安全元年的2015年也先后發(fā)生多起汽車被攻擊的事件,如雪佛蘭系列車型的車載診斷系統(tǒng)(OBD)漏洞使黑客能通過手機(jī)短信獲得對應(yīng)車型的最高權(quán)限以此來對汽車控制指令進(jìn)行修改。Samy Kamkar也利用安吉星對4家車企的所對應(yīng)的車聯(lián)網(wǎng)APP進(jìn)行控制,從而獲得對應(yīng)車輛網(wǎng)上所有用戶的具體信息[3]。另外由于車聯(lián)網(wǎng)是無中心節(jié)點(diǎn)網(wǎng)絡(luò)且沒有對應(yīng)的體系架構(gòu),加上車輛自身的計(jì)算資源有限[9],也使成熟的傳統(tǒng)網(wǎng)絡(luò)防御方案不能應(yīng)用在車聯(lián)網(wǎng)當(dāng)中[10]。
針對上面車聯(lián)網(wǎng)所面臨的威脅和其自身架構(gòu)特殊問題,許多學(xué)者和研究人員提出了許多對應(yīng)的安全解決方案,其中身份認(rèn)證作為外來用戶進(jìn)行車聯(lián)網(wǎng)的第一道“防火墻”,是整個(gè)車聯(lián)網(wǎng)系統(tǒng)通過利用特定的加密體系對于操作實(shí)體進(jìn)行身份有效性和合法性認(rèn)證;從而確定其是否有權(quán)限訪問對應(yīng)的相關(guān)資源,最終能很好地實(shí)現(xiàn)對系統(tǒng)資源的訪問控制和對應(yīng)的權(quán)限管理,防止黑客冒充合法用戶對整個(gè)網(wǎng)絡(luò)系統(tǒng)發(fā)起攻擊[11]。因此,身份認(rèn)證方案對應(yīng)加密體系的選擇對于整個(gè)車聯(lián)網(wǎng)系統(tǒng)的安全性扮演著至關(guān)重要的角色。目前普遍利用公鑰基礎(chǔ)設(shè)施(public key infrastructure,PKI)技術(shù)[12]來實(shí)現(xiàn)實(shí)體完整性和合法性的驗(yàn)證,借助于公鑰基礎(chǔ)設(shè)施技術(shù),車聯(lián)網(wǎng)中的車輛可方便地與通信運(yùn)營服務(wù)商(telemetics service provider,TSP)和其他車聯(lián)網(wǎng)的通信單元進(jìn)行可信交互,防止雙方身份假冒和通信信息篡改[13-16]。
RSA是目前使用最廣泛的一種公鑰加密算法,其常用密鑰長度在1 024-4 096 bit之間,其計(jì)算對所需軟硬件的能力提出了更高的要求;與RSA相似,另一種公鑰加密算法,即數(shù)字簽名算法(digital signature algorithm,DSA)密鑰長度在512-2 048 bit之間,被視為是安全、可以接受的;橢圓曲線加密算法(elliptic curve cryptography,ECC),其密鑰長度在106-210 bit之間。由于汽車自身計(jì)算能力和存儲(chǔ)能力有限,使RSA和DSA算法在汽車身份認(rèn)證領(lǐng)域中的應(yīng)用變得不現(xiàn)實(shí)?,F(xiàn)有研究中常見公鑰加密體系對比如表1所示[17]。
表1 ECC、DSA和RSA安全等級(jí)的比較
近年來隨著國內(nèi)于2004年研制成功基于ECC的SM2國標(biāo)加密算法,并于2012年3月將其規(guī)定為我國商用密碼標(biāo)準(zhǔn);與RSA相比,基于ECC的公鑰加密體系密鑰長度短、存儲(chǔ)空間需求小、傳輸帶寬低和所需邏輯門電路數(shù)量少[18],開始逐漸獲得國人的關(guān)注和廣泛的應(yīng)用,其性能對比如表2所示。
表2 ECC、RSA加密體系的比較
由于汽車本身的計(jì)算資源較少,無法應(yīng)付大計(jì)算量的計(jì)算,故本文中提出了一種基于ECC的公鑰加密體系,并將其應(yīng)用到智能網(wǎng)聯(lián)車升級(jí)系統(tǒng)中,以期在升級(jí)過程中能很好地抵御攻擊,并有效保證數(shù)據(jù)包的完整性和發(fā)送方的合法認(rèn)證。
車聯(lián)網(wǎng),其通信場景主要由車—車、車—路、車—人和車—云4部分組成,其具體通信場景如圖1所示。
圖1 車聯(lián)網(wǎng)通信場景示意圖
車聯(lián)網(wǎng)中的汽車節(jié)點(diǎn)由于自身具有一定的計(jì)算與存儲(chǔ)能力,所以車聯(lián)網(wǎng)又可被稱為車載自組織網(wǎng)絡(luò)(vehicular ad-hoc network,VANET),車聯(lián)網(wǎng)通信場景中的節(jié)點(diǎn)由于具有高速移動(dòng)性和瞬時(shí)性,所以車聯(lián)網(wǎng)的網(wǎng)絡(luò)拓?fù)鋭?dòng)態(tài)性較強(qiáng)。車聯(lián)網(wǎng)的身份認(rèn)證體系常由以下部分組成。
(1)認(rèn)證機(jī)構(gòu)(certificated authority,CA)
為確保車聯(lián)網(wǎng)組織架構(gòu)的正常運(yùn)行,通常須引入第三方可信認(rèn)證機(jī)構(gòu)CA,該認(rèn)證機(jī)構(gòu)通過存儲(chǔ)對應(yīng)區(qū)域內(nèi)所有用戶的身份信息,并對其所屬區(qū)域的路側(cè)單元(road-side units,RSU)進(jìn)行管理;能很好地實(shí)現(xiàn)對汽車與RSU交互真實(shí)性和完整性的保證。通常CA所須完成的是對區(qū)域內(nèi)RSU的管理和車輛節(jié)點(diǎn)加入時(shí)對其進(jìn)行分發(fā)/撤銷證書的管理;CA通常保存有區(qū)域內(nèi)所有經(jīng)過認(rèn)證車輛節(jié)點(diǎn)的具體信息,負(fù)責(zé)維護(hù)整個(gè)網(wǎng)絡(luò)拓?fù)浞秶鷥?nèi)的通信安全。
(2)路側(cè)基礎(chǔ)單元
該設(shè)備通過無線通信的方式與車輛節(jié)點(diǎn)或CA進(jìn)行信息的交互;在汽車到CA處進(jìn)行注冊時(shí),CA會(huì)將對應(yīng)的公共參數(shù)和其自身的數(shù)字證書(如ID信息、公私鑰對、身份信息和屬性信息等)加載到RSU的存儲(chǔ)模塊中;RSU在接收到路面行駛車輛所發(fā)送來的認(rèn)證或服務(wù)信息時(shí),通過內(nèi)部存儲(chǔ)模塊所存儲(chǔ)的公私鑰對和其計(jì)算模塊來實(shí)現(xiàn)對汽車的身份信息進(jìn)行對應(yīng)的計(jì)算認(rèn)證[19-20]。在通過合法性驗(yàn)證后,RSU則會(huì)向?qū)?yīng)的汽車節(jié)點(diǎn)提供相應(yīng)的服務(wù)。每個(gè)RSU都?xì)w屬于區(qū)域內(nèi)的CA進(jìn)行管理。設(shè)定RSU,大大降低了CA的通信負(fù)載量。
(3)車載單元(on-board units,OBU)
每輛汽車上都裝有一個(gè)OBU,用來存儲(chǔ)其對應(yīng)的數(shù)字證書(如ID信息、公私鑰對、身份信息和屬性信息等),然后汽車在行駛時(shí)利用OBU中存儲(chǔ)每輛車的數(shù)字證書和對應(yīng)的通信協(xié)議來實(shí)現(xiàn)與RSU的數(shù)據(jù)交換。目前基于車聯(lián)網(wǎng)的通信協(xié)議通常是采用802.11p的專用短距離通信技術(shù)(dedicated short range communications,DSRC)和車間通信長期演進(jìn)(long term evolution-vehicle,LTE-V)來實(shí)現(xiàn)。
本文中所使用的公式參數(shù)和車輛相關(guān)詳細(xì)參數(shù)定義如表3所示。
表3 方案中所用符號(hào)
CA負(fù)責(zé)生成系統(tǒng)參數(shù),選定一個(gè)大素?cái)?shù)p,F(xiàn)p為階為p的一個(gè)有限域;CA在有限域上定義一個(gè)橢圓曲線 c,其中曲線方程為 y2=x2+ax+b(mod p),選擇參數(shù) a,b,x,y∈Fp,且 a與 b要滿足 4a3+27b2≠0(mod p);E為域Fp的所有有理點(diǎn)所構(gòu)成的加法群,n為該加法群的階數(shù);G為橢圓曲線的基點(diǎn),并選擇兩個(gè)安全的 Hash函數(shù) H1{0,1}→Z*;H2{0,1}→Z*。CA會(huì)隨機(jī)選取r∈[1,p-1]作為自己的私鑰,并計(jì)算Ppub=r·G作為自己的公鑰;最后,CA會(huì)公布自己的參數(shù){E,n,Ppub,G,H1,H2},并將該參數(shù)分發(fā)至對應(yīng)的路邊單元RSU中。
CA通過安全的通信協(xié)議為其管理區(qū)域的每個(gè)RSU分配對應(yīng)的公私鑰對:Sr=r·H1(IDr)和 Pr=r·G·H1(IDr),并以廣播的形式對外公布其參數(shù)。
由于汽車在與RSU或其他汽車進(jìn)行通信之前,須使用相應(yīng)的公鑰數(shù)字證書認(rèn)證后才能完成相應(yīng)的通信過程,而公鑰數(shù)字證書是由CA頒發(fā)的,所以下面分別對汽車的參數(shù)初始化過程及其與CA之間的交互認(rèn)證過程進(jìn)行描述,如圖2所示。
圖2 汽車初始化認(rèn)證
(1)汽車→CA
Engv||Pv-pub||IDEng||TS1:車輛在行駛之前需要到CA處進(jìn)行注冊;通過下載到對應(yīng)CA的參數(shù)。在對應(yīng)有限域Fp上隨機(jī)的選取一個(gè)素?cái)?shù)s∈[1,p-1]作為自己的私鑰,并在有限域上Fp選擇對應(yīng)的一個(gè)基點(diǎn)G′,通過計(jì)算Pv-pub=s·G′來生成汽車對應(yīng)的公鑰,并計(jì)算IDEng=Es[H1(Engv)]。此時(shí),汽車將自己的發(fā)動(dòng)機(jī)號(hào)Engv、自己的公鑰Pv-pub、臨時(shí)汽車身份標(biāo)識(shí)IDEng和一個(gè)時(shí)間戳TS1通過安全的信道發(fā)送給CA。
(2)CA→汽車
EPv[RIDv||Certv||Ksession||TS2]:CA首先驗(yàn)證Tsec-TS1<ΔT,其中 Tsec為消息接收到的時(shí)間,ΔT為對應(yīng)車聯(lián)網(wǎng)中最大的傳輸時(shí)延。若驗(yàn)證通過,CA利用H1對汽車的發(fā)動(dòng)機(jī)號(hào)進(jìn)行計(jì)算,若比較H1(Engv)與IDEng相等,則根據(jù)對汽車的發(fā)動(dòng)機(jī)號(hào)進(jìn)行計(jì)算 RIDv=H2(Pv-pub‖Engv),生成汽車的真實(shí)身份RIDv。CA生成對應(yīng)的臨時(shí)簽名密鑰z并用相應(yīng)的參數(shù)進(jìn)行簽名運(yùn)算Signv來生成對應(yīng)汽車的數(shù)字證書,同時(shí)生成一個(gè)會(huì)話密鑰Ksession,然后用自己的私鑰r對證書進(jìn)行加密,連同時(shí)間戳TS2發(fā)送給對應(yīng)的汽車。
(3)汽車接收到CA消息并對消息進(jìn)行驗(yàn)證
汽車在接收到來自CA的消息后,會(huì)使用自己的私鑰對消息解密,并對消息中包含的時(shí)間戳TS2進(jìn)行驗(yàn)證計(jì)算。通過驗(yàn)證后,汽車用CA的公鑰對簽名信息解密,獲得會(huì)話密鑰Ksession;并對簽名消息進(jìn)行有效性驗(yàn)證;驗(yàn)證通過后存儲(chǔ)相應(yīng)的證書、會(huì)話密鑰Ksession和車輛的真實(shí)身份RIDv。
汽車在進(jìn)行對應(yīng)RSU所屬區(qū)域時(shí),若需獲得對應(yīng)區(qū)域的服務(wù)時(shí),須與區(qū)域內(nèi)的RSU進(jìn)行通信來進(jìn)行消息的交互。在通信之前先需要與RSU進(jìn)行如下的身份認(rèn)證過程,如圖3所示。
圖3 汽車與RSU之間的認(rèn)證過程
(1)汽車→RSU
RIDv||Pv-pub||Certv||TS1:汽車進(jìn)行對應(yīng) RSU所管轄的區(qū)域內(nèi),先將由CA所頒發(fā)的RIDv、自己的公鑰Pv-pub、相應(yīng)的證書Certv和時(shí)間戳TS1發(fā)送給對應(yīng)的RSU。
(2)RSU→CA
RIDv||Certv||Pv-pub||Pr||TS2:對應(yīng)的 RSU在接收到對應(yīng)汽車A所發(fā)送過來的認(rèn)證消息后,首先驗(yàn)證時(shí)間戳TS1是否滿足可接受時(shí)延以抵抗重放攻擊,驗(yàn)證通過后,RSU會(huì)將汽車的RIDv、CA簽發(fā)的證書Certv、汽車公鑰Pv-pub、時(shí)間戳TS2和自己的公鑰Pr發(fā)送給CA。
(3)CA→RSU
EPr[Pv-pub||Pr||Ksession||Certv||RIDv||TS3||EPv-pub(Pr||Ksession||Certv)]:CA接收到由 RSU所發(fā)送過來的數(shù)據(jù)包后,首先驗(yàn)證時(shí)間戳TS2是否滿足可接受時(shí)延以抵抗重放攻擊,驗(yàn)證通過后,CA會(huì)對汽車的身份RIDv和證書Certv的有效性進(jìn)行驗(yàn)證,驗(yàn)證通過后,CA會(huì)產(chǎn)生一個(gè)會(huì)話密鑰Ksession,生成對應(yīng)的數(shù)據(jù)包:EPr[Pv-pub||Pr||Ksession||Certv||RIDv||TS3||EPv-pub(Pr||Psession||Certv)]發(fā)送給 RSU。
(4)RSU→汽車
EPv-pub(Pr||TS4||Ksession||Certv):RSU在接收到CA發(fā)來的消息后,用自己的私鑰解密數(shù)據(jù)包,首先驗(yàn)證時(shí)間戳TS3是否滿足可接受時(shí)延以抵抗重放攻擊,通過驗(yàn)證后完成了RSU對于汽車的認(rèn)證,并將對應(yīng)的 Kv-pub、Ksession、RIDv和 Certv進(jìn)行保存,并將EPv-pub(Pr||TS4||Ksession||Certv)轉(zhuǎn)發(fā)給汽車。
(5)汽車接收到RSU消息并對消息進(jìn)行驗(yàn)證
汽車接收到RSU發(fā)來的數(shù)據(jù)包后,首先驗(yàn)證時(shí)間戳TS4是否滿足可接受時(shí)延以抵抗重放攻擊,驗(yàn)證通過后用自己的私鑰對數(shù)據(jù)包進(jìn)行解密,獲取到RSU的公鑰 Pr和對應(yīng)的會(huì)話密鑰 Ksession,完成對RSU的認(rèn)證。
汽車之間的通信認(rèn)證過程如圖4所示。
圖4 汽車之間的通信認(rèn)證過程
(1)汽車A→汽車B
PA||TS1||Certv:汽車 A與 B之間進(jìn)行通信時(shí),首先需要到CA處下載對應(yīng)的系統(tǒng)參數(shù),通過選定一隨機(jī)數(shù)sA做為自己的私鑰,并計(jì)算PA=sA·G作為自己的公鑰,而消息發(fā)送方的汽車A通過將自己的公鑰PA、時(shí)間戳TS1和由CA所頒發(fā)的證書Certv發(fā)送給消息接收方的汽車B。
(2)汽車B→汽車A
PB||TS2||Certv:汽車 B同時(shí)也通過利用 CA獲得對應(yīng)的系統(tǒng)參數(shù),在接收到來自汽車A所發(fā)來的信息時(shí),首先驗(yàn)證是否滿足Tsec-TS1<ΔT,驗(yàn)證通過后汽車B通過使用CA的公鑰Ppub對證書的有效性進(jìn)行驗(yàn)證。在通過驗(yàn)證后,汽車B將汽車A的公鑰PA進(jìn)行保存,同時(shí)按照步驟(1)生成自己的私鑰sB和對應(yīng)公鑰PB,然后將自己的公鑰PB、時(shí)間戳TS2和由CA所頒發(fā)的證書Certv發(fā)送給汽車A。
(3)汽車A→汽車B
Es-A[EPs(M)||K]||TS3:汽車 A接收到來自汽車B所發(fā)送的信息后,同樣首先驗(yàn)證是否滿足Tsec-TS2<ΔT,驗(yàn)證通過后使用CA的公鑰Ppub對證書的有效性進(jìn)行驗(yàn)證,通過驗(yàn)證后汽車A會(huì)將汽車B的公鑰PB進(jìn)行保存。在汽車A需要發(fā)送消息M給對應(yīng)的車輛時(shí),利用協(xié)商好的摘要函數(shù)和會(huì)話密鑰生成算法分別計(jì)算消息M的摘要值和生成對應(yīng)的會(huì)話密鑰Ksession;本文中采用的是MD5算法計(jì)算其摘要值m:m=Hash(M),并用會(huì)話密鑰對消息M進(jìn)行加密,然后用自己的私鑰對會(huì)話密鑰和摘要值進(jìn)行加密;最后將加密后的數(shù)據(jù)包和時(shí)間戳TS3發(fā)送給汽車B。
(4)汽車B→汽車A
Es-B[E||TS4]:汽車 B接收到來自汽車 A發(fā)送的消息后,先驗(yàn)證是否滿足Tsec-TS3<ΔT,通過驗(yàn)證后,利用約定好的會(huì)話密鑰生成算法生成對應(yīng)的會(huì)話密鑰Ksession,利用汽車A的公鑰PA和會(huì)話密鑰Ksession對消息進(jìn)行解密,獲取消息實(shí)體M和摘要值m,汽車B同樣利用MD5算法對消息進(jìn)行計(jì)算,將結(jié)果與摘要值m進(jìn)行計(jì)算,若相等,則接受消息M并回復(fù)汽車A以一個(gè)答復(fù)E和時(shí)間戳TS4,其中E=Es-B[Ack]。
(5)汽車A接收到汽車B的消息并對消息進(jìn)行驗(yàn)證
汽車A接收到汽車B發(fā)送的消息后,用汽車B的公鑰PB解密消息,先驗(yàn)證是否滿足Tsec-TS4<ΔT,通過驗(yàn)證后獲得確認(rèn)答復(fù)。完成消息的傳輸過程。
綜上所述,基于ECC的公鑰加密體系利用完全指數(shù)級(jí)的運(yùn)算實(shí)現(xiàn)了在密鑰長度較短的情況下達(dá)到與當(dāng)前所流行的RSA公鑰加密體系同樣的安全等級(jí)。為驗(yàn)證實(shí)驗(yàn)是否達(dá)到預(yù)期,在某汽車的車載遠(yuǎn)程信息處理器(telematics box,T-Box)中進(jìn)行了相應(yīng)的加密時(shí)間評估實(shí)驗(yàn)。
由實(shí)驗(yàn)結(jié)果可知,在RSA加密體系下要實(shí)現(xiàn)與ECC相同的安全等級(jí),由于密鑰長度過大,需要花費(fèi)6 s的加密時(shí)間;而用ECC來實(shí)現(xiàn)對應(yīng)同樣安全等級(jí)由于所需的密鑰長度較短,所以其加密時(shí)間僅為1.1 s;可知用ECC來實(shí)現(xiàn)加密認(rèn)證時(shí)間比RSA公鑰加密體系更容易被用戶所接受。此外,通過利用信息摘要技術(shù),能有效保證數(shù)據(jù)的完整性和有效性,并抵御篡改攻擊和偽造攻擊等;同時(shí),為每條信息加上時(shí)間戳,能有效抵抗重返攻擊等常見攻擊??傊?,將基于ECC的公鑰加密體系應(yīng)用于車聯(lián)網(wǎng)中,能實(shí)現(xiàn)以較高的效率和速率完成身份認(rèn)證過程,并能很好地應(yīng)對車聯(lián)網(wǎng)中常見的攻擊。
隨著車聯(lián)網(wǎng)的普及,它在給人們帶來方便和舒適的同時(shí),也給人們帶來了極大的安全隱患。因此車聯(lián)網(wǎng)用戶的合法性越來越受到汽車使用者的關(guān)注,基于本文所提出的基于ECC的車聯(lián)網(wǎng)身份認(rèn)證技術(shù),能以較高的安全性保證汽車通信雙方的合法性,同時(shí)也能在一定程度上解決車聯(lián)網(wǎng)中常見的假冒攻擊和重放攻擊等其他攻擊。既保證了通信雙方的合法性,又保障了汽車使用者的生命安全。