Encryption
TLS 1.3 使用哪種分組密碼操作模式?
TLS 1.3 使用哪種分組密碼操作模式?我假設它是一種提供身份驗證的分組密碼模式(如 GCM)。
TLS 1.3 在失敗後進行了大量清理。我們在 TLS 1.3 中只有5 個密碼套件,它們的 ID:
{0x13,0x01}
- TLS_AES_256_GCM_SHA384{0x13,0x02}
- TLS_CHACHA20_POLY1305_SHA256{0x13,0x03}
- TLS_AES_128_GCM_SHA256{0x13,0x04}
- TLS_AES_128_CCM_8_SHA256{0x13,0x05}
- TLS_AES_128_CCM_SHA256從目前的RFC 8446開始:
符合 TLS 的應用程序必須實現 TLS_AES_128_GCM_SHA256
$$ GCM $$密碼套件並且應該實現 TLS_AES_256_GCM_SHA384$$ GCM $$和 TLS_CHACHA20_POLY1305_SHA256$$ RFC8439 $$密碼套件
所有這些密碼套件都使用 CTR 模式,AES 是 Pseudo-Random Permutation (PRP),Chacha20 是 Pseudo-Random Function (PRF);因此,ChaCha20 像任何 PRF 一樣更適合 CTR 模式。
AES-256 是 NIST 批准的黃金標準,它是量子安全的(Grover 算法)(ChaCha 對 QC 也是安全的)。AES 具有稱為 Intel 的 AES-NI 的 CPU 指令。英特爾還在
PCLMULQDQ
2014 年添加了指令以提高 GCM 的性能,因此我們會比其他人看到更多。
- GCM(伽羅瓦計數器模式)是最常用的一種*。
- CCM是一種首選模式受限環境。
- ChaCha20-Poly1305 是Google的首選,它在設計上不受定時攻擊。
請注意,在軟體方面,ChaCha20 優於 AES,這並不奇怪,因為它被設計為對 CPU 友好。
- GCM 很難正確使用,有很多陷阱。