Skip to main content

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实现, 建议:

  1. 必须实现 (MUST):

    • TLS_RSA_WITH_AES_128_CBC_SHA
  2. 应该实现 (SHOULD):

    • TLS_RSA_WITH_AES_256_CBC_SHA
    • TLS_DHE_RSA_WITH_AES_128_CBC_SHA256
    • TLS_DHE_RSA_WITH_AES_256_CBC_SHA256
  3. 可以实现 (MAY):

    • 其他密码套件根据应用需求
  4. 不应实现 (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的完整文本.