コンピュータネットワークにおいて、Challenge-Handshake Authentication Protocol (チャレンジ・ハンドシェイク・オーセンティケーション・プロトコル、CHAP) は、ユーザやネットワークホストに対する認証プロトコルである。例えば、この認証はインターネットサービスプロバイダによって行われる。

RFC 1994: PPP Challenge Handshake Authentication Protocol (CHAP) がこのプロトコルを定義している。

CHAP は Point-to-Point Protocol (PPP) が、リモートクライアントの正当性を確認するための認証方法として使用される。CHAP は3ウェイ・ハンドシェイクによって、定期的にクライアントの正当性を確認する。これは、最初のデータ通信リンクを確立するときに行われ、その後はいつでも行われる可能性がある。この確認は、 (例えばクライアントユーザのパスワード) に基づいている。

データリンク確立フェーズの後、認証者は "チャレンジ" メッセージを被認証者に送る。 被認証者は、MD5 チェックサムのハッシュ関数のような、一方向性関数を使って計算した値のレスポンス返送する。 認証者は、期待すべきハッシュ値の計算を自分で行い、レスポンス内容を確認する。もし、値が一致するならば、認証者は被認証者を正当な相手として承認する。 ランダムな間隔で、認証者は新しい "チャレンジ" を送り、ステップ 1 から 3 を繰り返す。

CHAP は、増加していく識別子と、可変の "チャレンジ" 値を用いることにより、相手からの反射攻撃に対する防御を提供する。 CHAP は、クライアントとサーバが秘密鍵の平文を知っていることを必要とするが、これがネットワークに対して送られることはない。

マイクロソフトは、 と呼ばれる CHAP のバリエーションを実装した。これは相手が秘密鍵の平文を知ることさえ要求しない。

動作 チャレンジ (Challenge) パケット (システムからユーザ) 応答 (Response) パケット (ユーザからシステム) 成功 (Success) /失敗 (Failure) パケット (システムからユーザ)

CHAP パケット 説明1 バイト1 バイト2 バイト1 バイト可変長可変長ChallengeCode = 1ID長さ"チャレンジ" の長さ"チャレンジ" の値名前ResponseCode = 2ID長さ応答の長さ応答の値名前SuccessCode = 3ID長さメッセージFailureCode = 4ID長さメッセージ CHAP パケットは PPPフレームに埋め込まれる。プロトコルフィールドの値は C223(16進数) である。 フラグアドレスコントロールプロトコル (C223(16進数))Payload (上記の表)FCSフラグ

関連項目 Point-to-Point Protocol Password Authentication Protocol

暗号学的ハッシュ関数

外部リンク

Divide and Conquer: Cracking MS-CHAPv2 with a 100% success rate カプセル化されていない MS-CHAP v2 認証により、情報漏えいが起こる MS-CHAP v2 の認証情報漏えいの問題に関する注意喚起