Challenge-handshake authentication protocol

From Wikipedia, the free encyclopedia

In computing, the Challenge-Handshake Authentication Protocol (CHAP) authenticates a user to an Internet access provider.

RFC 1994: PPP Challenge Handshake Authentication Protocol (CHAP) defines the protocol.

CHAP is an authentication scheme used by Point to Point Protocol (PPP) servers to validate the identity of remote clients. CHAP periodically verifies the identity of the client by using a three-way handshake. This happens at the time of establishing the initial link, and may happen again at any time afterward. The verification is based on a shared secret (such as the client user's password).

  1. After the completion of the link establishment phase, the authenticator sends a "challenge" message to the peer.
  2. The peer responds with a value calculated using a one-way hash function, such as an MD5 checksum hash.
  3. The authenticator checks the response against its own calculation of the expected hash value. If the values match, the authenticator acknowledges the authentication; otherwise it should terminate the connection.
  4. At random intervals the authenticator sends a new challenge to the peer and repeats steps 1 through 3.

CHAP provides protection against playback attack by the peer through the use of an incrementally changing identifier and of a variable challenge-value. CHAP requires that the client make the secret available in plaintext form.

Microsoft has implemented the Challenge-handshake authentication protocol as MS-CHAP.

Contents

[edit] Working Cycle

  • Challenge Packet (System to User)
  • Response Packet (User to System)
  • Success or failure packet (System to User)

[edit] CHAP Packets

Description 1 byte 1 byte 2 bytes 1 byte Variable variable
Challenge Code = 1 ID Length Challenge length Challenge value Name
Response Code = 2 ID Length Response Length Response value Name
Success Code = 3 ID Length Message
Failure Code = 4 ID Length Message

CHAP packet embedded in a PPP frame. The protocol field has a value of C223(hex)

Flag Address Control Protocol (C223(hex)) Payload (table above) FCS Flag

[edit] See also

[edit] References