Lably
Skip to content

CRAM-MD5

Network protocol(CRAM)

  • 3 min read
  • 5 chapters

Related on Lably

Through Post Office Protocol, Bracket and User (computing)

When such software requires authentication over unencrypted connections, CRAM-MD5 is preferred over mechanisms that transmit passwords "in the clear," such as LOGIN and PLAIN. However, it can't prevent derivation of a password through a brute-force attack, so it is less effective than alternative mechanisms that avoid passwords or that use connections encrypted with Transport Layer Security (TLS).

Protocol

The CRAM-MD5 protocol involves a single challenge and response cycle, and is initiated by the server:

  1. Challenge: The server sends a base64-encoded string to the client. Before encoding, it could be any random string, but the standard that currently defines CRAM-MD5 says that it is in the format of a Message-ID email header value (including angle brackets) and includes an arbitrary string of random digits, a timestamp, and the server's fully qualified domain name.
  2. Response: The client responds with a string created as follows.
    1. The challenge is base64-decoded.
    2. The decoded challenge is hashed using HMAC-MD5, with a shared secret (typically, the user's password, or a hash thereof) as the secret key.
    3. The hashed challenge is converted to a string of lowercase hex digits.
    4. The username and a space character are prepended to the hex digits.
    5. The concatenation is then base64-encoded and sent to the server
  3. Comparison: The server uses the same method to compute the expected response. If the given response and the expected response match, then authentication was successful.

Sign in to keep reading

4 more chapters are free with a Lably account.

More in Computing and communication