Secure Sockets Layer

CS6204 - Java and the WWW
CS4244 - WWW: The Underlying Technology

Reference:


Introduction

Features

Current protocol version is 3.0.

Goals

Basic Properties

  1. No one can eavesdrop on connection. Encryption is used after an initial handshake to define cryptographic protocol. Secret-key cryptography is used for data encryption (e.g. DES, RC4, etc.).
  2. No one can modify messages sent over connection. Message transport includes message integrity check using secure hash functions (e.g. SHA, MD5).
  3. You can authenticate who you're connected to. Peer's identity can be authenticated using public-key cryptography (e.g., RSA, DSS).

Two Parts to SSL

  1. SSL Handshake Protocol establishes secure channel.
  2. SSL Application Data Protocol is used to exchange data over channel.


SSL Handshake Protocol

SSL creates an agreement between client and server on set of cryptographic protocols, algorithms and parameters used for communication between them.

The protocol consists of a sequence of steps:

1. Client Hello

Client sends to server the message:
    ClientHello(CipherSuite[], CompressionMethod[], ClientRandom)
    One CipherSuite defines three encryption protocols:
    1. key-exchange protocol: RSA, Diffie-Hellman
    2. secret-key encryption algorithm: null, RC4, RC2, DES, DES40, fortezza
    3. cryptographic hash algorithm: null, MD5, SHA
Note:  Use of random key helps prohibits an eavesdropping attacker from replaying past message.

2. Server Hello

    Server selects cipher suite and compression method, and informs client of decision by sending:
    ServerHello(CipherSuite, CompressionMethod, ServerRandom)
    Remaining protocol is used to agree on secret keys.

3. Key Exchange

Two cases:

4. Finished

Client and server send to each other the digest of all messages sent so far and master-secret:
    Client to Server:
    hash(AllMessagesSentByClient + MasterSecret)
    Server to Client:
    hash(AllMessagesSentByServer + MasterSecret)


SSL Application Data Protocol

  1. Client sends a request to server as follows:
  2. encrypt(ClientRequest + hash(ClientRequest+MasterSecret)) using ClientWriteKey
    Example:

    encrypt("Transfer $100 to my savings account" + hash("Transfer $100 to my savings account" + MasterSecret))
     

  3. Server decrypts request, prepares the response, and sends it to client as follows:
encrypt(ServerResponse + hash(ServerResponse)) using ServerWriteKey

Alternative: S-HTTP

Secure HTTP is an alternative to SSL.

SHTTP was proposed in 1994 by Enterprise Integration Technologies (EIT) and later adopted by CommerceNet, a coalition of businesses interested in commerce on the Internet.

SHTTP only works with HTTP, in contrast to SSL.

SHTTP is implemented in few (lesser known) browsers and servers.


Another Protocol:  S/MIME



Last modified by abrams@vt.edu on 13 November 2000.