|
Secure Sockets LayerThe Secure Sockets Layer is an intermediate layer between the application and the transport protocol with the purpose of creating secure and reliable communication. The current version of the protocol (3.0) is defined in [IETF96]. The SSL Protocol provides connection security with three basic properties:
The Secure Sockets Layer Protocol has two parts. First, the SSL Handshake Protocol establishes the secure channel. Next, the SSL Application Data Protocol is used to exchange data over the channel. SSL Handshake ProtocolThe goal of the protocol is to create an agreement between a client and a server on a set of cryptographic protocols, algorithms and parameters used for communication between them. The protocol consists of a sequence of steps:
ClientHello(CypherSuite[], CompressionMethod[]) Argument CypherSuite defines three encryption protocols to constitute a suite:
ServerHello(CypherSuite, CompressionMethod) After these steps, the server and the client have agreed on the suite of cryptographic and compression algorithms. The next step is to decide on some parameters for the algorithms, of which the most important is the key used in the secret-key encryption. There are two alternatives for how the protocol continues depending on whether or not the server has a public key certificate. In the first alternative (e.g., the server has a public key certificate), the server sends the certificate to the client: ServerCertificate(Certificate) Then the client generates a master secret and sends it to the server, encrypted with the public key of the server: encrypt(ClientMasterSecret, ServerPublicKey) The master secret is the basis from which the partners derive the keys used in the cryptographic algorithms. It has 48 bytes (i.e., the current time plus random digits) and is used for one secure session. In the second alternative (the server does not have a certificate), the server initiates a Key Exchange Protocol using for example the Diffie-Hellman protocol. After the exchange of three messages, the server and the client have a master secret. Based on the master secret both parties create the keys used in communication. The client sends to the server hash(AllMessagesSentByClient+MasterSecret). The server sends to the client hash(AllMessagesSentByServer+MasterSecret). At the end of the handshake protocol both the client and the server are ready to communicate information in a secure way. They agreed on the cryptographic and compression algorithms and the parameters for the protocol. SSL Application Data ProtocolWhen the client wants to send to the server a message, he computes the digest, encrypts the message and the digest and sends them to the server: encrypt(ClientRequest + hash(ClientRequest+MasterSecret), ClientWriteKey); When the server receives the messages it decrypts the message using the agreed key and verifies the integrity using the same hash function. Then, the server responds to the client using the same cryptographic procedure: encrypt(ServerResponse + hash(ServerResponse), ServerWriteKey); This concludes the description of SSL. A number of aspects that were not presented above are worth mentioning:
The SSL Protocol is described in several documents available on the Internet. You can find out more details about SSL in [IETF96, CONS96, NETS96a]. |
Home Digital Certificates Firewalls Cryptography SSL JAVA |