CHAP 【Challenge-Handshake Authentication Protocol】 チャレンジハンドシェイク認証プロトコル
概要
CHAP(Challenge-Handshake Authentication Protocol)とは、PPPなどで利用される認証方式の一つ。パスワードを原文(平文)のまま送るのではなく、ハッシュ化して送ることで伝送路上での盗み見、漏洩を防止する。PPP(Point-to-Point Protocol)は通信回線で繋がれた一対の機器の間で伝送路を確立し、継続的に通信を行うことができるようにするための手順を定めたプロトコル(通信規約)の一つで、インターネット接続事業者が利用者からの接続を受け付ける際などに用いられる。PPPではいくつかの認証手順を用意しており、CHAPはその一つとなる。
CHAPではまず、サーバ側からクライアント(利用者)側へ「チャレンジ」(challenge)と呼ばれるランダムな短いデータを送信する。クライアントはパスワードとチャレンジを組み合わせたデータを元に、「ハッシュ関数」と呼ばれる計算手順により「ハッシュ値」を算出し、これをサーバに送り返す。
サーバ側では手元に保管されているその利用者のパスワードとチャレンジから同じ手順でハッシュ値を算出する。クライアントから送られてきたハッシュ値と一致すれば、確かにクライアントは同じパスワードを知っていることが確認でき、認証成功となる。接続確立後も新しいチャレンジを生成して何度もこの手順を繰り返す。
パスワードをそのまま伝送する認証手順では、通信内容を悪意の第三者が傍受するとパスワードが知られてしまうが、CHAPでは送られるのはハッシュ値であるため、パスワードを逆算することは困難となる。パスワードのみをハッシュ化すると盗み取ったハッシュ値を用いて本人になりすます「反射攻撃」が可能となってしまうため、毎回異なるチャレンジ値によってハッシュ値も毎回変わるようになっている。
(2024.1.19更新)