Appendix C. Cipher Suite Definitions (密码套件定义)
本附录定义了TLS 1.2中新增和更新的密码套件.
C.1. AES密码套件
以下密码套件使用AES算法:
CipherSuite TLS_RSA_WITH_AES_128_CBC_SHA = { 0x00,0x2F };
CipherSuite TLS_DH_DSS_WITH_AES_128_CBC_SHA = { 0x00,0x30 };
CipherSuite TLS_DH_RSA_WITH_AES_128_CBC_SHA = { 0x00,0x31 };
CipherSuite TLS_DHE_DSS_WITH_AES_128_CBC_SHA = { 0x00,0x32 };
CipherSuite TLS_DHE_RSA_WITH_AES_128_CBC_SHA = { 0x00,0x33 };
CipherSuite TLS_DH_anon_WITH_AES_128_CBC_SHA = { 0x00,0x34 };
CipherSuite TLS_RSA_WITH_AES_256_CBC_SHA = { 0x00,0x35 };
CipherSuite TLS_DH_DSS_WITH_AES_256_CBC_SHA = { 0x00,0x36 };
CipherSuite TLS_DH_RSA_WITH_AES_256_CBC_SHA = { 0x00,0x37 };
CipherSuite TLS_DHE_DSS_WITH_AES_256_CBC_SHA = { 0x00,0x38 };
CipherSuite TLS_DHE_RSA_WITH_AES_256_CBC_SHA = { 0x00,0x39 };
CipherSuite TLS_DH_anon_WITH_AES_256_CBC_SHA = { 0x00,0x3A };
C.2. AES密码套件 with SHA-256
TLS 1.2引入了使用SHA-256的AES密码套件:
CipherSuite TLS_RSA_WITH_AES_128_CBC_SHA256 = { 0x00,0x3C };
CipherSuite TLS_DH_DSS_WITH_AES_128_CBC_SHA256 = { 0x00,0x3E };
CipherSuite TLS_DH_RSA_WITH_AES_128_CBC_SHA256 = { 0x00,0x3F };
CipherSuite TLS_DHE_DSS_WITH_AES_128_CBC_SHA256 = { 0x00,0x40 };
CipherSuite TLS_RSA_WITH_AES_256_CBC_SHA256 = { 0x00,0x3D };
CipherSuite TLS_DH_DSS_WITH_AES_256_CBC_SHA256 = { 0x00,0x68 };
CipherSuite TLS_DH_RSA_WITH_AES_256_CBC_SHA256 = { 0x00,0x69 };
CipherSuite TLS_DHE_DSS_WITH_AES_256_CBC_SHA256 = { 0x00,0x6A };
CipherSuite TLS_DHE_RSA_WITH_AES_256_CBC_SHA256 = { 0x00,0x6B };
CipherSuite TLS_DH_anon_WITH_AES_128_CBC_SHA256 = { 0x00,0x6C };
CipherSuite TLS_DH_anon_WITH_AES_256_CBC_SHA256 = { 0x00,0x6D };
其中, TLS_DHE_RSA_WITH_AES_128_CBC_SHA256的密码规范参数如下:
- 密钥交换: DHE_RSA
- 批量加密算法: AES_128_CBC
- MAC算法: HMAC-SHA256
- 伪随机函数: PRF (SHA-256)
C.3. NULL密码套件
以下密码套件使用NULL加密 (仅用于测试目的, 生产环境不应使用):
CipherSuite TLS_RSA_WITH_NULL_SHA256 = { 0x00,0x3B };
C.4. 密码套件命名约定
TLS密码套件名称遵循以下格式:
TLS_{密钥交换}_{身份验证}_WITH_{加密算法}_{MAC算法}
例如:
TLS_DHE_RSA_WITH_AES_128_CBC_SHA256- 密钥交换: DHE (Ephemeral Diffie-Hellman)
- 身份验证: RSA
- 加密算法: AES_128_CBC
- MAC算法: SHA256
C.5. 实现建议
对于TLS 1.2实现, 建议:
-
必须实现 (MUST):
- TLS_RSA_WITH_AES_128_CBC_SHA
-
应该实现 (SHOULD):
- TLS_RSA_WITH_AES_256_CBC_SHA
- TLS_DHE_RSA_WITH_AES_128_CBC_SHA256
- TLS_DHE_RSA_WITH_AES_256_CBC_SHA256
-
可以实现 (MAY):
- 其他密码套件根据应用需求
-
不应实现 (SHOULD NOT):
- 匿名 (DH_anon) 密码套件 (除非特定应用场景需要)
- NULL加密密码套件 (除非仅用于测试)
C.6. 安全考虑
选择密码套件时应考虑:
- 前向保密性 (Forward Secrecy): 优先选择DHE或ECDHE密码套件
- 密钥长度: AES-256优于AES-128
- MAC强度: SHA-256或更强优于SHA-1
- 避免弱算法: 避免RC4, DES, MD5等已知有弱点的算法
注意: 完整的密码套件定义和详细说明, 请参考RFC 5246附录C的完整文本.