CHAPとは

CHAPは、ネットワーク接続において通信相手の正当性を確認するために、パスワードを直接送信することなく認証を行うプロトコルのことです。

正式名称をChallenge Handshake Authentication Protocolと呼び、主にPPP(Point-to-Point Protocol)などのデータリンク層で利用されます。認証の過程で「チャレンジ」と呼ばれるランダムなデータを交換し、ハッシュ関数を用いることで、通信経路上の盗聴や再送攻撃(リプレイアタック)を効果的に防ぐ仕組みを指します。

CHAPの認証プロセス(3ウェイ・ハンドシェイク)

CHAPは、認証サーバーとクライアントの間で以下の3段階の手順を踏んで認証を行います。このプロセスは接続時のみならず、接続中にも定期的に繰り返されることがあり、高い信頼性を維持します。

1. チャレンジ(Challenge)

認証側(サーバー)が、ランダムに生成した数値(チャレンジ値)をクライアントへ送信します。この値はセッションごとに異なるため、一度限りの使い捨ての役割を果たします。

2. レスポンス(Response)

クライアントは、受け取ったチャレンジ値と自身が保持する共有パスワードを組み合わせ、MD5などのハッシュ関数を用いて計算した値を「レスポンス値」としてサーバーに返信します。この際、パスワード自体は通信路上を流れません。

3. 成功または失敗(Success/Failure)

サーバー側でも同様の計算を行い、クライアントから送られてきたレスポンス値と照合します。計算結果が一致すれば認証成功、不一致であれば切断処理を行います。

セキュリティ上の利点とPAPとの比較

CHAPは、前身となるPAP(Password Authentication Protocol)の脆弱性を克服するために開発されました。

比較項目PAPCHAP
パスワードの形式平文(そのまま送信)ハッシュ化(送信しない)
認証のタイミング接続時のみ接続時および接続中の随時
再送攻撃耐性なし(極めて低い)あり(チャレンジ値により防御)
セキュリティ上の利点とPAPとの比較

PAPではパスワードがそのままネットワークを流れるため、パケットの傍受によって情報が容易に流出しますが、CHAPではハッシュ計算を用いることで、パスワードの秘匿性を担保しています。

ハッシュ計算の概念

CHAPで使用されるハッシュ計算は、以下の概念式で表されます。

レスポンス値 R は、チャレンジ値を C 、共有パスワードを P 、ハッシュ関数を H とすると、以下のようになります。

R = H(C, P)

ハッシュ関数の性質上、R から P を逆算することは数学的に困難であるため、安全性が確保されます。

運用上の留意点

CHAPを導入する際には、以下の点に配慮する必要があります。

  • パスワードの保持形式: サーバーとクライアントの双方が、ハッシュ計算のために元のパスワード(平文)を保持している必要があります。これは、サーバー側でパスワードをハッシュ化して保存する一般的なウェブサービスの運用とは異なる点に注意が必要です。
  • MS-CHAPの存在: Microsoft社による拡張版であるMS-CHAP(およびv2)も広く普及しています。これらは相互認証機能(クライアントがサーバーの正当性を確認する機能)などが追加されています。

CHAPは、リモートアクセスVPNや広域イーサネットなど、機密性が求められるインフラ環境における認証の基盤技術として、現在も重要な役割を果たしています。

関連用語

PPP | 今更聞けないIT用語集
プロトコル | 今更聞けないIT用語集
クラウドソリューション

お問い合わせ

システム開発・アプリ開発に関するご相談がございましたら、APPSWINGBYまでお気軽にご連絡ください。

APPSWINGBYの

ソリューション

APPSWINGBYのセキュリティサービスについて、詳しくは以下のメニューからお進みください。

システム開発

既存事業のDXによる新規開発、既存業務システムの引継ぎ・機能追加、表計算ソフトによる管理からの卒業等々、様々なWebシステムの開発を行っています。

iOS/Androidアプリ開発

既存事業のDXによるアプリの新規開発から既存アプリの改修・機能追加まで様々なアプリ開発における様々な課題・問題を解決しています。


リファクタリング

他のベンダーが開発したウェブサービスやアプリの不具合改修やソースコードの最適化、また、クラウド移行によってランニングコストが大幅にあがってしまったシステムのリアーキテクチャなどの行っています。