The Secure Sockets Layer, SSL, is a protocol proposed by Netscape Communications to provide authentication, confidentiality and integrity services for Internet communications. Version 3.0 of the protocol still has the status of Internet Draft and has thus not yet been finalized. However, Netscape Communications have already incorporated support for the protocol into their products.
SSL is a client/server protocol that is designed to be interspersed immediately above the transport layer in the IP protocol suite, as illustrated by figure 7.1. An advantage of SSL is that higher-level protocols, and applications based on them, need not be aware of the existence of SSL.
Figure 7.1: Relative placement of SSL in the IP protocol suite.
The SSL protocol is in itself layered, the Record Layer interfaces SSL to an underlying stable transport protocol, such as TCP. Higher-level protocols within SSL exist to establish and use SSL sessions.
Communications utilizing SSL take place in connections. Associated with each connection is a number of attributes that describe the current connection state. State information is kept at both end points. Connections between two entities are always established within the context of an SSL session. The state attributes associated with a session apply to all connections within that session. Several sessions may be active at the same time.
A record that is to be transmitted through SSL is first compressed and then protected. Protection is afforded by the addition of a sequence number and a message authentication code (MAC) to each record before it is encrypted.
To compute a MAC, MD5 or SHA can be used. For encryption either a stream cipher or a block cipher can be applied. The supported stream cipher is RC4 and supported block ciphers are RC2, DES, and FORTEZZA (see section 6.1.3 for information on algorithms).
The session state contains information about which method should be used in each of these transformation stages. Any or all of the transformations can be the identity transformation. In the latter case no protection is offered.
Connection state attributes contain parameters, such as cryptographic keys, that are used when applying the transformations specified in the session state.
The SSL specification defines a number of protocols internal to SSL that exist on top of the record layer. These protocols are
In addition to the hello messages, the handshake protocol also specifies how certificates and session keys are to be exchanged.
A client may send a client hello message upon request from a server, or on its own initiative to establish or re-negotiate the parameters for a session.