密碼套件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]

參考資料

Wikiwand in your browser!

Seamless Wikipedia browsing. On steroids.

Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.

Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.