Cipher suite

Cipher suite is a concept used in Transport Layer Security (TLS) / Secure Sockets Layer (SSL) network protocol. Before TLS version 1.3, a cipher suite is a named combination of authentication, encryption, message authentication code (MAC) and key exchange algorithms used to negotiate the security settings. The format of cipher suites is modified since TLS 1.3. In the current TLS 1.3 draft document, cipher suites are only used to negotiate encryption and HMAC algorithms.[1]

The structure and use of the cipher suite concept is defined in the documents that define the protocol.[2] A reference for named cipher suites is provided in the TLS Cipher Suite Registry.[3]

Use

When a TLS connection is established, a handshaking, known as the TLS Handshake Protocol, occurs. Within this handshake, a client hello (ClientHello) and a server hello (ServerHello) message are passed.[4] First, the client sends a list of the cipher suites that it supports, in order of preference. Then the server replies with the cipher suite that it has selected from the client's list.[5] To test which TLS ciphers a server supports, an SSL/TLS Scanner may be used.

Detailed description

In TLS 1.0 - 1.2

Each named cipher suite, e.g. TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256, defines a key exchange algorithm, a bulk encryption algorithm, a message authentication code (MAC) algorithm, and a pseudorandom function (PRF).[5][6][7]

Examples of algorithms used

Key exchange/agreement
RSA, Diffie–Hellman, ECDH, SRP, PSK
Authentication
RSA, DSA, ECDSA
Block ciphers
RC4, Triple DES, AES, IDEA, DES, or Camellia. In older versions of SSL, RC2 was also used.
Message authentication
For TLS, a hash-based message authentication code using MD5 or one of the SHA hash functions is used. For SSL, SHA, MD5, MD4, and MD2 are used.

In TLS 1.3 (draft)

In TLS 1.3, a cipher suite represents an AEAD encryption algorithm and a hash algorithm used in HKDF.[1] For example, TLS_AES_128_GCM_SHA256 indicates AES_128_GCM is used to encrypt messages, and SHA256 is the underlying hash algorithm in HKDF. Non-AEAD encryption algorithms (such as AES_128_CBC) are not allowed to be used.

Since the structure of TLS 1.3 cipher suites is different from that in previous versions, cipher suites defined for TLS 1.3 cannot be used in TLS 1.2, and vice versa.

Key exchange algorithms are negotiated using TLS extensions.

Programming references

Programatically, a cipher suite is referred to as:

CipherSuite cipher_suites
a list of the cryptographic options supported by the client[11]
CipherSuite cipher_suite
the cipher suite selected by the server from the client's cipher_suites and revealed in the ServerHello message[12]

References

  1. 1 2 E. Rescorla (November 4, 2016). "The Transport Layer Security (TLS) Protocol Version 1.3". Retrieved 2016-11-11.
  2. RFC 5246
  3. TLS Cipher Suite Registry
  4. RFC 5246, p. 37
  5. 1 2 RFC 5246, p. 40
  6. "TLS CipherSuites and CipherSpecs". IBM. Retrieved 16 May 2017.
  7. "Cipher Suites in Schannel". Microsoft MSDN. Retrieved 20 November 2009.
  8. RFC 5246, p. 47
  9. 1 2 RFC 5246, p. 17
  10. RFC 5246, p. 16-17, 26
  11. RFC 5246, p. 41
  12. RFC 5246, p. 42-43, 64
This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.