密碼套件
外觀
此條目翻譯自其他語言維基百科,需要相關領域的編者協助校對翻譯。 |
密碼套件(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]
算法示例
[編輯]- 密鑰交換/協商
- RSA、Diffie–Hellman、DHE、ECDH、ECDHE、SRP、PSK
- 身份驗證
- RSA、DSA、ECDSA
- 塊密碼/流密碼
- AES、Camellia、IDEA、ChaCha20、3DES、DES、RC4。在舊版本的SSL中,RC2也被使用過。
- 消息驗證
- 對於TLS來說,訊息鑑別碼使用SHA或MD5散列算法。對於SSL,則SHA、MD5、MD4及MD2都可使用。
TLS 1.3
[編輯]在TLS 1.3中,密碼套件表示一個帶關聯數據的加密認證加密算法和一個訊息鑒別碼。[1]例如,TLS_AES_128_GCM_SHA256。非AEAD加密算法(諸如AES_128_CBC)不允許使用。
密鑰交換和身份驗證則另外協商,如X25519、RSA、ECDSA。
編程參考
[編輯]在編程層面,密碼套件被引用為:
- CipherSuite cipher_suites
- 客戶端支持的加密選項的列表[11]
- CipherSuite cipher_suite
- 服務器從客戶端的cipher_suites以及相關ServerHello消息中選定的加密套件[12]
參考資料
[編輯]- ^ 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>
標籤用不同內容定義了多次 - ^ RFC 5246
- ^ TLS Cipher Suite Registry. [2016-12-24]. (原始內容存檔於2016-12-21).
- ^ RFC 5246, p. 37
- ^ 5.0 5.1 RFC 5246, p. 40
- ^ CipherSuites and CipherSpecs. IBM. [20 November 2009].
- ^ Cipher Suites in Schannel. Microsoft MSDN. [20 November 2009]. (原始內容存檔於2016-04-23).
- ^ RFC 5246, p. 47
- ^ 9.0 9.1 RFC 5246, p. 17
- ^ RFC 5246, p. 16-17, 26
- ^ RFC 5246, p. 41
- ^ RFC 5246, p. 42-43, 64