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:
-
MUST implement:
- TLS_RSA_WITH_AES_128_CBC_SHA
-
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
-
MAY implement:
- Other cipher suites based on application requirements
-
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.