コンピュータネットワークにおいて、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 は、クライアントとサーバが秘密鍵の平文を知っていることを必要とするが、これがネットワークに対して送られることはない。
マイクロソフトは、MS-CHAP(英語版) と呼ばれる CHAP のバリエーションを実装した。これは相手が秘密鍵の平文を知ることさえ要求しない。
動作
- チャレンジ (Challenge) パケット (システムからユーザ)
- 応答 (Response) パケット (ユーザからシステム)
- 成功 (Success) /失敗 (Failure) パケット (システムからユーザ)
CHAP パケット
説明
|
1 バイト
|
1 バイト
|
2 バイト
|
1 バイト
|
可変長
|
可変長
|
Challenge
|
Code = 1
|
ID
|
長さ
|
"チャレンジ" の長さ
|
"チャレンジ" の値
|
名前
|
Response
|
Code = 2
|
ID
|
長さ
|
応答の長さ
|
応答の値
|
名前
|
Success
|
Code = 3
|
ID
|
長さ
|
|
メッセージ
|
|
Failure
|
Code = 4
|
ID
|
長さ
|
|
メッセージ
|
|
CHAP パケットは PPPフレームに埋め込まれる。プロトコルフィールドの値は C223(16進数) である。
フラグ
|
アドレス
|
コントロール
|
プロトコル (C223(16進数))
|
Payload (上記の表)
|
FCS
|
フラグ
|
関連項目
外部リンク