基本介紹
歷史,使用,詳細描述,在TLS 1.0 - 1.2中,在TLS 1.3(草案)中,編程參考,漏洞,
歷史
密碼的使用自創建以來一直是安全套接字層(SSL)傳輸協定的一部分。對於大多數用途,SSL已成功通過TLS。但是,原始的SSL草案並未使用名稱密碼套件。相反,客戶端和伺服器從一小組密碼中選擇以確保其連線的能力稱為密碼選擇。直到SSL v3(SSL的最後一個版本)才使用名稱密碼套件。自TLS以來,每個版本都在其標準化中使用了密碼套件。密碼套件的概念和目的自該術語首次被提出以來並沒有改變。它已經並且仍然被用作描述機器支持的算法的結構,以便兩台機器決定使用哪些算法來保護它們的連線。改變的是密碼套件中支持的算法版本。每個版本的TLS都增加了對更強版本算法的支持,並移除了對已識別為不安全算法版本的支持。
擬議的TLS 1.3草案標誌著密碼套件在機器間的協調方式發生了變化。為兩台通信機選擇的密碼套件由握手過程決定。在TLS 1.3草案中對握手過程進行了修改,以減少需要傳送的訊息數量。與歷史版本和當前版本的TLS相比,這樣可以減少處理,減少數據包流量並提高效率。
使用
在創建一個TLS連線後,一次也稱TLS握手協定的握手發生。在這個握手,一條ClientHello和一條ServerHello訊息被發出。首先,客戶端按照偏好的順序傳送它支持的密碼套件的列表。然後伺服器回復它從客戶端的列表中選擇的密碼套件。要測試伺服器支持的TLS密碼套件,可以使用SSL/TLS掃描器軟體。
詳細描述
在TLS 1.0 - 1.2中
每個密碼套件的名稱(例如TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256)定義一個密鑰交換算法、一個批量加密算法、一個訊息認證碼(MAC)算法,以及一個偽隨機函式(PRF)。
- 密鑰交換算法,例如ECDHE_RSA,用於決定客戶端與伺服器之間在握手時如何身份驗證。
- 批量加密算法,例如AES_128_GCM,用於加密訊息流。它還包括密鑰大小及顯式和隱式初始化向量(密碼學隨機數)的長度。
- 偽隨機函式,例如TLS 1.2的偽隨機函式使用MAC算法的散列函式來創建一個主密鑰——連線雙方共享的一個48位元組的私鑰。主密鑰在創建會話密鑰(例如創建MAC)時作為一個熵來源。
算法示例
在TLS 1.3(草案)中
在TLS 1.3中,密碼套件表示一個AEAD加密算法和一個用在HKDF中的散列算法。例如,TLS_AES_128_GCM_SHA256表示使用AES_128_GCM加密訊息,SHA256是HKDF中的底層散列算法。非AEAD加密算法(諸如AES_128_CBC)不允許使用。
因為TLS 1.3密碼套件的結構不同於以前的版本,為TLS 1.3定義的密碼套件不能在TLS 1.2中使用,反之亦然。
密鑰交換算法使用TLS擴展協商。
編程參考
在編程層面,密碼套件被引用為:
CipherSuite cipher_suites:客戶端支持的加密選項的列表;
CipherSuite cipher_suite:伺服器從客戶端的cipher_suites以及相關ServerHello訊息中選定的加密包。
漏洞
密碼套件與其包含的算法一樣安全。如果密碼套件中的加密或認證算法的版本存在已知漏洞,那么密碼套件和TLS連線就容易受到攻擊。因此,針對TLS和密碼套件的常見攻擊稱為Down Grade Attack。當現代客戶端連線到使用舊版TLS或SSL的舊伺服器時,會發生TLS降級。
當開始握手時,現代客戶端將提供它支持的最高協定。如果連線失敗,它將自動再次使用較低協定(如TLS 1.0或SSL 3.0)重試,直到與伺服器握手成功。降級的目的是使新版本的TLS與舊版本兼容。但是,攻擊者可能會利用此功能並使其成為客戶端自動降級到支持密碼套件的TLS或SSL版本,其中的算法以弱安全性和漏洞而聞名。這導致了諸如POODLE之類的攻擊。
避免此安全漏洞的一種方法是禁用伺服器或客戶端能夠降級到SSL3.0的能力。這個修復的缺點是它會使一些傳統硬體無法被新硬體訪問。如果傳統硬體需要SSL 3.0支持,則有一個經過批准的TLS_FALLBACK_SCSV密碼套件,用於驗證是否因惡意意圖而觸發降級。