作者 |蘇少博 上??匕部尚跑浖?chuàng)新研究院汽車網(wǎng)絡(luò)安全組
來源 |鑒源實(shí)驗(yàn)室
社群 |添加微信號(hào)“TICPShanghai”加入“上??匕?1fusa安全社區(qū)”
01
背 景
隨著車聯(lián)網(wǎng)的迅猛發(fā)展,汽車已經(jīng)不再是傳統(tǒng)的機(jī)械交通工具,而是智能化、互聯(lián)化的移動(dòng)終端。然而,隨之而來的是對(duì)車輛通信安全的日益嚴(yán)峻的威脅。在車聯(lián)網(wǎng)生態(tài)系統(tǒng)中,車輛通過無線網(wǎng)絡(luò)與其他車輛、基礎(chǔ)設(shè)施以及云端服務(wù)進(jìn)行廣泛通信,這種高度互聯(lián)的狀態(tài)也使得車輛系統(tǒng)更容易受到各種潛在的威脅和攻擊。
通信安全問題在車聯(lián)網(wǎng)中尤為突出,可能面臨諸如數(shù)據(jù)竊取、信息篡改、惡意注入以及拒絕服務(wù)等多種威脅。黑客可能試圖獲取車輛傳感器和控制單元的敏感信息,篡改車輛間的通信數(shù)據(jù),甚至遠(yuǎn)程控制車輛執(zhí)行危險(xiǎn)操作。這些潛在的威脅對(duì)駕駛安全、車輛保障以及交通管理都構(gòu)成了巨大的挑戰(zhàn)。
為了有效應(yīng)對(duì)這些安全威脅,通信安全加密成為車聯(lián)網(wǎng)中的關(guān)鍵環(huán)節(jié)。在這一背景下,傳輸層安全協(xié)議(TLS)作為一種通用的安全通信協(xié)議,為車輛通信提供了可靠的安全保護(hù)。通過強(qiáng)化數(shù)據(jù)的保密性、完整性和身份驗(yàn)證,TLS在車聯(lián)網(wǎng)中發(fā)揮著至關(guān)重要的作用,有效應(yīng)對(duì)通信安全所面臨的復(fù)雜挑戰(zhàn)。
02
TLS 基本原理
2.1 基本介紹
傳輸層安全協(xié)議(TLS)是一種加密通信協(xié)議,用于確保在網(wǎng)絡(luò)上的數(shù)據(jù)傳輸過程中的安全性和隱私保護(hù)。TLS的前身是安全套接層協(xié)議(SSL),后來在標(biāo)準(zhǔn)化過程中發(fā)展成為TLS。TLS協(xié)議的主要目標(biāo)是通過加密和認(rèn)證機(jī)制,保護(hù)網(wǎng)絡(luò)通信的機(jī)密性、完整性和身份驗(yàn)證,以抵御可能的網(wǎng)絡(luò)攻擊和竊聽。
TLS協(xié)議主要通過以下方式實(shí)現(xiàn)安全通信:
加密(Encryption):使用加密算法對(duì)傳輸?shù)臄?shù)據(jù)進(jìn)行加密,確保在傳輸過程中數(shù)據(jù)不被未授權(quán)的第三方讀取或修改。
認(rèn)證(Authentication):通過數(shù)字證書等機(jī)制驗(yàn)證通信雙方的身份,確保通信的對(duì)端是合法的,并防止中間人攻擊。
完整性保護(hù)(Integrity Protection):使用消息摘要算法(如哈希函數(shù))來驗(yàn)證數(shù)據(jù)在傳輸過程中是否被篡改,以保障數(shù)據(jù)的完整性。
TLS協(xié)議廣泛應(yīng)用于互聯(lián)網(wǎng)通信中,尤其在Web瀏覽器與服務(wù)器之間的安全通信中扮演關(guān)鍵角色。當(dāng)用戶訪問使用“https://”協(xié)議的網(wǎng)站時(shí),TLS協(xié)議就會(huì)啟動(dòng),確保用戶與網(wǎng)站之間的數(shù)據(jù)傳輸是安全可信的。TLS協(xié)議的不斷升級(jí)和改進(jìn)也反映了對(duì)網(wǎng)絡(luò)安全不斷演進(jìn)的需求。
2.2 TLS握手過程
2.2.1 TLS 1.2 握手過程
TLS(Transport Layer Security)握手過程是確保安全通信的關(guān)鍵步驟,它涉及到協(xié)商加密算法、驗(yàn)證通信雙方的身份,并生成用于加密通信的會(huì)話密鑰,通常包含以下幾個(gè)流程:
客戶端發(fā)出請(qǐng)求(ClientHello)。在此流程中,客戶端會(huì)提供如下信息:
客戶端生成一個(gè)隨機(jī)數(shù),稱為ClientRandom,這個(gè)隨機(jī)數(shù)的目的是在握手過程中引入熵(entropy),增加通信的隨機(jī)性,提高安全性;
客戶端會(huì)列舉支持的加密算法、摘要算法以及密鑰交換算法等。這是為了告知服務(wù)器它可以使用哪些算法來保護(hù)通信;
客戶端會(huì)提供其他通信參數(shù),例如支持的壓縮算法等。這些參數(shù)提供了有關(guān)客戶端支持的通信設(shè)置的信息。
使用Wireshark打開包含TLS ClientHello數(shù)據(jù)的流量包時(shí),通??梢钥吹饺缦聝?nèi)容:
ClientHello:
Random: [隨機(jī)數(shù)]
CompressionMethods: [支持的壓縮算法列表]
Extensions: [其他擴(kuò)展,例如SNI(Server Name Indication)]
圖1 ClientHello示意圖
ClientHello的目標(biāo)是為服務(wù)器提供足夠的信息,以便服務(wù)器能夠做出響應(yīng),并在握手過程中建立一個(gè)安全的通信通道。服務(wù)器將使用這些信息來選擇合適的加密算法、生成自己的隨機(jī)數(shù)、以及執(zhí)行其他必要的步驟來協(xié)商出一個(gè)安全的連接。
服務(wù)器回應(yīng)(SeverHello)。在此流程中,服務(wù)器會(huì)回復(fù)以下信息:
服務(wù)器會(huì)生成一個(gè)隨機(jī)數(shù),稱為ServerRandom。類似于ClientRandom,它增加了握手過程的熵,提高了通信的隨機(jī)性和安全性;
服務(wù)器從客戶端提供的加密算法列表中選擇一個(gè)算法,用于后續(xù)的通信加密;
服務(wù)器確認(rèn)客戶端提供的其他通信參數(shù),例如TLS版本、壓縮算法等;
如果服務(wù)器支持會(huì)話緩存和復(fù)用,還會(huì)生成一個(gè)Session ID發(fā)送給客戶端??蛻舳丝梢栽谖磥淼奈帐种惺褂迷揝ession ID來恢復(fù)先前的會(huì)話狀態(tài),以加速握手過程。
使用Wireshark打開包含TLS ServerHello數(shù)據(jù)的流量包時(shí),通常可以看到如下內(nèi)容:
ServerHello:
Random: [隨機(jī)數(shù)]
CipherSuite: [選擇的加密算法]
CompressionMethod: [選擇的壓縮算法]
Session ID: [會(huì)話標(biāo)識(shí),如果支持會(huì)話復(fù)用]
Extensions: [其他擴(kuò)展,例如支持的應(yīng)用層協(xié)議(ALPN)]
圖2 ServerHello示意圖
客戶端回應(yīng)。在此流程中,客戶端會(huì)回復(fù)以下信息:
客戶端和服務(wù)器使用已經(jīng)在之前握手步驟中交換的隨機(jī)數(shù)生成一個(gè)預(yù)主密鑰,稱為Pre-Master Secret,并使用服務(wù)器的公鑰進(jìn)行加密,發(fā)送給服務(wù)器。
服務(wù)器再次回應(yīng)。在此流程中,服務(wù)器會(huì)回復(fù)以下信息:
服務(wù)器收到客戶端傳輸?shù)募用苄畔⒑螅褂闷渌借€解密并獲得 Pre-Master Secret。
服務(wù)器和客戶端使用已經(jīng)交換的隨機(jī)數(shù)和 Pre-Master Secret 生成一個(gè) Master Secret(主密鑰)。
隨后,客戶端發(fā)送ChangeCipherSpec消息給服務(wù)器,通知服務(wù)器從此時(shí)開始使用新生成的密鑰加密通信內(nèi)容,服務(wù)器同樣給出回應(yīng),至此,整個(gè)握手階段全部結(jié)束。
圖3 ChangeCipherSpec示意圖
2.2.2 TLS雙向認(rèn)證
單向認(rèn)證和雙向認(rèn)證是TLS常用的兩種身份驗(yàn)證機(jī)制,它們的主要區(qū)別在于驗(yàn)證的參與方和方式。
單向認(rèn)證是指單向認(rèn)證僅驗(yàn)證一方的身份,通常是客戶端驗(yàn)證服務(wù)器的身份,確??蛻舳诉B接到合法的服務(wù)器。流程與上述握手過程相同。單向認(rèn)證適用于大多數(shù)互聯(lián)網(wǎng)服務(wù),服務(wù)提供商或服務(wù)的擁有者驗(yàn)證其身份,而客戶端無需提供身份驗(yàn)證。
雙向認(rèn)證是指通信過程中需要驗(yàn)證兩方的身份??蛻舳苏?qǐng)求連接服務(wù)器,服務(wù)器提供數(shù)字證書,客戶端驗(yàn)證服務(wù)器的身份;同時(shí),客戶端也會(huì)發(fā)出CertificateRequest請(qǐng)求,要求客戶端也提供數(shù)字證書,服務(wù)器發(fā)送Certificate驗(yàn)證至客戶端的身份,至此,雙向認(rèn)證完成。雙向認(rèn)證通常用于對(duì)通信安全性要求較高的場(chǎng)景,例如在線支付、云服務(wù)、金融應(yīng)用等,確保通信的雙方都是合法的。
圖4 Certificate示意圖
2.3 TLS 1.3
2.3.1 握手過程
TLS 1.3在握手過程上進(jìn)行了一些改進(jìn),提高安全性和性能。在上述的TLS 1.2握手過程中,通常需要進(jìn)行ClintHello、ServerHello、兩次密鑰交換,共兩個(gè)來回的完整握手過程,而在TLS 1.3中將Hello和密鑰交換過程進(jìn)行了合并,有效減少了握手次數(shù)。
圖5 TLS 1.3中ServerHello直接進(jìn)行了密鑰交換
2.3.2 其他改進(jìn)
1)刪除不安全算法支持:
TLS 1.3棄用了一些不安全或弱密碼算法,進(jìn)一步提高了安全性。例如,去除了對(duì)MD5、SHA-1、RC4等算法的支持。
2)使用HKDF進(jìn)行密鑰派生:
TLS 1.3使用基于HMAC的密鑰派生函數(shù)(HKDF)來派生密鑰材料,增強(qiáng)了密鑰派生的安全性。
3)提供前向保密:
TLS 1.3使用Diffie-Hellman密鑰交換算法的TLS 1.3握手過程中,提供了前向保密性,保證即使服務(wù)器的長(zhǎng)期私鑰泄漏,以前的通信也不會(huì)受到影響。
4)支持0-RTT恢復(fù):
TLS 1.3引入了支持0-RTT(零輪往返時(shí)間)的特性,允許客戶端在第一次連接時(shí)發(fā)送數(shù)據(jù),從而進(jìn)一步提高性能。
03
結(jié) 語(yǔ)
通過以上對(duì)TLS的介紹,希望大家能夠?qū)LS原理有更清晰的認(rèn)識(shí),能夠使用wireshark對(duì)TLS流量包進(jìn)行簡(jiǎn)單的分析。如今TLS在車聯(lián)網(wǎng)中扮演著關(guān)鍵的角色,通過加密、身份驗(yàn)證和完整性保護(hù)等機(jī)制,為車輛之間和車輛與基礎(chǔ)設(shè)施之間的通信提供了可靠的安全保障。這對(duì)確保車輛網(wǎng)絡(luò)的穩(wěn)定性、用戶隱私和遠(yuǎn)程控制的安全性都至關(guān)重要。
-
Wireshark
+關(guān)注
關(guān)注
0文章
49瀏覽量
6491 -
TLS
+關(guān)注
關(guān)注
0文章
44瀏覽量
4227
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論