密碼套件

命名为认证,加密和消息认证码算法的组合

密碼套件Cipher suite)是傳輸層安全(TLS)/安全通訊端層(SSL)網路協定中的一個概念。在TLS 1.3之前,密碼套件的名稱是以協商安全設定時使用的身分驗證加密訊息鑑別碼(MAC)和金鑰交換演算法組成。TLS 1.3僅能使用AEAD密碼套件。[1]

密碼套件概念的結構和使用在定義協定的文件中被定義。[2]TLS密碼套件登錄檔(TLS Cipher Suite Registry)中提供了密碼套件命名的參考表。[3]

使用

在建立一個TLS連接後,一次也稱TLS握手協定的握手發生。在這個握手,一條ClientHello和一條ServerHello訊息被發出。[4]首先,客戶端按照偏好的順序傳送它支援的密碼套件的列表。然後伺服器回覆它從客戶端的列表中選擇的密碼套件。[5]要測試伺服器支援的TLS密碼套件,可以使用SSL/TLS掃描器軟體。

詳細描述

TLS1.0至TLS1.2

每個密碼套件的名稱(例如TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256)定義一個金鑰交換演算法、一個批次加密演算法、一個訊息鑑別碼(MAC)演算法。[5][6][7]

  • 金鑰交換演算法,例如ECDHE_RSA,用於決定客戶端與伺服器之間在握手時如何身分驗證。[8]
  • 批次加密演算法,例如AES_128_GCM,用於加密訊息流。[9]
  • 訊息鑑別碼演算法,例如SHA256,用於建立密碼雜湊函式,訊息流每個資料塊加密雜湊[9]
  • 偽隨機函式,例如TLS 1.2的偽隨機函式使用MAC演算法的雜湊函式來建立一個主金鑰——連接雙方共享的一個48位元組的私鑰。主金鑰在建立對談金鑰(例如建立MAC)時作為一個來源。[10]

演算法範例

金鑰交換/協商
RSADiffie–HellmanDHEECDHECDHESRP英語Secure Remote Password protocolPSK英語Pre-shared key
身分驗證
RSADSAECDSA
塊密碼/流密碼
AESCamelliaIDEAChaCha203DESDESRC4。在舊版本的SSL中,RC2英語RC2也被使用過。
訊息驗證
對於TLS來說,訊息鑑別碼使用SHAMD5雜湊演算法。對於SSL,則SHA、MD5MD4MD2都可使用。

TLS 1.3

在TLS 1.3中,密碼套件表示一個帶關聯資料的加密認證加密演算法和一個訊息鑒別碼[1]例如,TLS_AES_128_GCM_SHA256。非AEAD加密演算法(諸如AES_128_CBC)不允許使用。

金鑰交換身分驗證則另外協商,如X25519RSAECDSA

編程參考

在編程層面,密碼套件被參照為:

CipherSuite cipher_suites
客戶端支援的加密選項的列表[11]
CipherSuite cipher_suite
伺服器從客戶端的cipher_suites以及相關ServerHello訊息中選定的加密套件[12]

參考資料

  1. ^ 1.0 1.1 E. Rescorla. The Transport Layer Security (TLS) Protocol Version 1.3. November 4, 2016 [2016-11-11]. (原始內容存檔於2016-01-04).  參照錯誤:帶有name屬性「tls13cipher」的<ref>標籤用不同內容定義了多次
  2. ^ RFC 5246
  3. ^ TLS Cipher Suite Registry. [2016-12-24]. (原始內容存檔於2016-12-21). 
  4. ^ RFC 5246, p. 37
  5. ^ 5.0 5.1 RFC 5246, p. 40
  6. ^ CipherSuites and CipherSpecs. IBM. [20 November 2009]. 
  7. ^ Cipher Suites in Schannel. Microsoft MSDN. [20 November 2009]. (原始內容存檔於2016-04-23). 
  8. ^ RFC 5246, p. 47
  9. ^ 9.0 9.1 RFC 5246, p. 17
  10. ^ RFC 5246, p. 16-17, 26
  11. ^ RFC 5246, p. 41
  12. ^ RFC 5246, p. 42-43, 64