CHAP
PPPで使う認証方式の1つ。サーバが送る乱数(チャレンジ)とパスワードからハッシュ値を計算して返すことで、パスワードそのものを送らずに認証する。
イマシルちゃんの解説
合言葉を確かめたいとき、合言葉をそのまま大声で言ったら、周りの人にも聞こえちゃうよね。
そこでCHAPは、サーバが毎回ちがう「お題」を出して、
クライアントは「お題」と「合言葉」を混ぜて計算した答えだけを返すんだ。
これなら合言葉そのものは一度も口に出さないから、盗み聞きされても安心なんだよ!
より深い解説
定義
CHAP(Challenge Handshake Authentication Protocol)は、RFC 1994で定められた、PPPの認証プロトコルである。PPPフレームのプロトコルフィールドの値は0xC223。チャレンジレスポンス方式の認証の代表例である。
認証の流れ
CHAPは3回のやり取り(3ウェイハンドシェイク)で認証する。
- 認証する側(サーバ)が、毎回異なる乱数(チャレンジ)を Challenge で送る
- 認証される側(クライアント)が、識別子、共有している秘密(パスワード)、チャレンジをつなげたもののハッシュ値(標準ではMD5)を計算し、Response で返す
- サーバも同じ計算をして一致すれば Success、しなければ Failure を返す
PAPより安全な理由
| 特徴 | 効果 |
|---|---|
| パスワードを送らない | 盗聴されても、パスワードそのものは知られない |
| チャレンジが毎回変わる | 盗聴したResponseを後で再送しても通らない(リプレイ攻撃に強い) |
| 通信中に再認証できる | 接続の途中でも、何度でもチャレンジを送り直して確かめられる |
弱点と注意点
- サーバは計算のために、パスワードを元に戻せる形(平文など)で持っている必要がある。サーバのデータが漏れると被害が大きい
- 盗聴したチャレンジとResponseの組から、辞書攻撃で弱いパスワードを割り出される可能性がある
- ハッシュに使うMD5は現在では弱いとされる
Microsoftによる拡張のMS-CHAPv2は、無線LANの企業向け認証(PEAP)の内部などでも使われてきたが、同じく辞書攻撃などの弱点が指摘されている。
チャレンジレスポンス認証の広がり
「相手が出した乱数と秘密の情報から計算した値を返す」という考え方は、PPPに限らず、HTTPのダイジェスト認証やワンタイムパスワードなど、多くの認証方式に使われている。