Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

CHAP(チャップ)とは | 意味や読み方など丁寧でわかりやすい用語解説

CHAP(チャップ)の意味や読み方など、初心者にもわかりやすいように丁寧に解説しています。

作成日: 更新日:

読み方

日本語表記

チャレンジハンドシェイク認証プロトコル (チャレンジハンドシェイクニンショウプロトコル)

英語表記

CHAP (チャップ)

用語解説

CHAPは、Challenge-Handshake Authentication Protocolの略であり、主にネットワーク接続時にユーザーやデバイスを認証するためのプロトコルの一つである。その名の通り、「チャレンジ(挑戦)」と「ハンドシェイク(合意形成)」によって認証を行うのが最大の特徴である。具体的には、ユーザーがネットワークへ接続を試みる際、ユーザーが本当にそのユーザーであるか、あるいはデバイスが正当なものであるかを、サーバー側が提示する「チャレンジ」に対して、クライアント側が「レスポンス」を返すことで確認する。この仕組みにより、認証で最も重要な秘密情報であるパスワードがネットワーク上を直接流れることなく認証が完了するため、盗聴のリスクを大幅に低減できる。特に、インターネットサービスプロバイダへのダイヤルアップ接続やVPN接続などで利用されるPPP(Point-to-Point Protocol)における認証プロトコルとして広く採用されてきた。

CHAPの認証プロセスは、いくつかのステップを経て行われる。まず、クライアントがネットワークへの接続を要求すると、認証を行うサーバー側から「チャレンジ」と呼ばれる情報がクライアントに送信される。このチャレンジは、通常、予測不可能なランダムな値(乱数)と、サーバー自身のID(識別子)を組み合わせたものである。クライアントはこのチャレンジ情報を受け取ると、あらかじめクライアントとサーバーの間で共有されている秘密の情報、具体的にはパスワードなどの認証情報と、受け取ったチャレンジ情報を用いて、特定のハッシュ関数と呼ばれる計算処理を実行する。ハッシュ関数とは、任意の長さのデータを入力として受け取り、固定長の短いデータ(ハッシュ値、またはメッセージダイジェスト)を出力する一方向性の関数である。この関数は、同じ入力からは常に同じ出力が得られるが、出力されたハッシュ値から元の入力を逆算することは非常に困難であるという特性を持つ。

クライアントは、パスワードとチャレンジ値をハッシュ関数に入力し、その計算結果であるハッシュ値を「レスポンス」としてサーバーに送り返す。このレスポンスには、クライアント自身のIDも含まれる場合がある。サーバー側では、クライアントからレスポンスが届くと、自身の持つクライアントのパスワードと、以前クライアントに送信した同じチャレンジ値を使って、自身も同じハッシュ関数で計算を実行する。そして、クライアントから送られてきたレスポンス(ハッシュ値)と、自身が計算したハッシュ値とを比較する。この二つのハッシュ値が完全に一致すれば、クライアントは正しいパスワードを知っていると判断され、認証は成功となる。もしハッシュ値が一致しなければ、認証は失敗し、接続は拒否される。

この一連の認証プロセスにおいて、重要な点は、パスワードそのものがネットワーク上を一度も流れないことである。ネットワーク上を流れるのは、ランダムなチャレンジ値と、パスワードから生成されたハッシュ値のみであるため、仮にこれらの情報が第三者に盗聴されたとしても、そこから元のパスワードを特定することは極めて難しい。これは、パスワードを平文(暗号化されていない状態)で送信するような認証方式に比べて、セキュリティ上の大きな利点となる。

また、CHAPには認証セッション中に定期的にチャレンジを再送し、再認証を行う機能も備わっている。これは、一度認証が成功した後も、サーバーが継続的にチャレンジを送信し、クライアントが再度適切なレスポンスを返すことを要求する仕組みである。これにより、万が一、認証後に通信相手が別の悪意のある主体にすり替わったとしても、定期的な再認証によってそれを検出し、接続を切断するといった対応が可能となる。この機能は、通信中のなりすまし攻撃(セッションハイジャック)に対する一定の防御策となる。

CHAPで利用されるハッシュ関数としては、MD5(Message-Digest Algorithm 5)が広く知られている。しかし、MD5は現在では計算能力の向上などにより、セキュリティ上の脆弱性が指摘されているため、より強力なハッシュ関数(例えばSHAシリーズなど)の利用が推奨される場合もある。CHAP自体のセキュリティは、使用されるハッシュ関数の強度に大きく依存するため、最新のセキュリティ要件に合わせて適切なハッシュ関数を選択することが重要となる。

一方で、CHAPにも限界や課題は存在する。まず、クライアントとサーバーが事前に同じ秘密情報(パスワード)を共有している必要があるため、中央集権的な認証サーバーが存在しない環境や、大規模な分散環境での利用には限界がある。また、CHAPはチャレンジ値を乱数として利用することでリプレイアタック(以前盗聴した認証情報を再利用して認証を試みる攻撃)に対して耐性を持つが、完全に防ぎきれるわけではない。例えば、ハッシュ関数の計算結果であるレスポンスそのものが何らかの方法で盗聴され、それがそのままリプレイされるような状況では、タイムスタンプなどの追加情報がない限り、認証が成功してしまう可能性もゼロではない。そのため、より高度なセキュリティが求められる場合には、CHAP単独ではなく、IPsec(IP Security)やTLS(Transport Layer Security)といった他のセキュリティプロトコルと組み合わせて利用されることが多い。

CHAPは、そのシンプルな仕組みと、パスワードを直接流さないというセキュリティ上の利点から、特にPPPベースのネットワーク接続において長らく標準的な認証方式として利用されてきた。現代のネットワーク環境では、より高度な認証プロトコル(例: EAP-TLSなど)も普及しているが、CHAPの基本的な思想であるチャレンジ-レスポンス認証は、多くの認証技術の基盤となっており、その理解はネットワークセキュリティの基礎を学ぶ上で非常に有益である。

関連コンテンツ

関連IT用語