Skip to main content

Appendix C. Cipher Suite Definitions

This appendix defines cipher suites that are new or updated in TLS 1.2.

C.1. AES Cipher Suites

The following cipher suites use the AES algorithm:

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 Cipher Suites with SHA-256

TLS 1.2 introduces AES cipher suites using SHA-256:

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 };

For example, the cipher specification parameters for TLS_DHE_RSA_WITH_AES_128_CBC_SHA256 are:

  • Key Exchange: DHE_RSA
  • Bulk Cipher: AES_128_CBC
  • MAC Algorithm: HMAC-SHA256
  • Pseudorandom Function: PRF (SHA-256)

C.3. NULL Cipher Suites

The following cipher suites use NULL encryption (for testing purposes only; SHOULD NOT be used in production environments):

CipherSuite TLS_RSA_WITH_NULL_SHA256 = { 0x00,0x3B };

C.4. Cipher Suite Naming Conventions

TLS cipher suite names follow this format:

TLS_{KeyExchange}_{Authentication}_WITH_{Cipher}_{MAC}

For example:

  • TLS_DHE_RSA_WITH_AES_128_CBC_SHA256
    • Key Exchange: DHE (Ephemeral Diffie-Hellman)
    • Authentication: RSA
    • Cipher: AES_128_CBC
    • MAC Algorithm: SHA256

C.5. Implementation Recommendations

For TLS 1.2 implementations, it is recommended:

  1. MUST implement:

    • TLS_RSA_WITH_AES_128_CBC_SHA
  2. SHOULD implement:

    • 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 implement:

    • Other cipher suites based on application requirements
  4. SHOULD NOT implement:

    • Anonymous (DH_anon) cipher suites (unless required for specific application scenarios)
    • NULL encryption cipher suites (except for testing purposes only)

C.6. Security Considerations

When selecting cipher suites, consider:

  • Forward Secrecy: Prefer DHE or ECDHE cipher suites
  • Key Length: AES-256 is preferred over AES-128
  • MAC Strength: SHA-256 or stronger is preferred over SHA-1
  • Avoid Weak Algorithms: Avoid algorithms with known weaknesses such as RC4, DES, MD5

Note: For complete cipher suite definitions and detailed specifications, please refer to the full text of RFC 5246 Appendix C.