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