コンピューティングにおいて、チャレンジ・ハンドシェイク認証プロトコル(CHAP)は、もともとポイントツーポイントプロトコル(PPP)でユーザー認証に使用されていた認証プロトコルです。CHAPは、 RADIUSやDiameterなどの他の認証プロトコルでも使用されています。
ほぼすべてのネットワークオペレーティングシステムはCHAPを使用したPPPをサポートしており、ほとんどのネットワークアクセスサーバーも同様です。CHAPはPPPoEでも使用され、DSLユーザーの認証に用いられます。
PPPはデータを暗号化せずに「平文」で送信するため、CHAPはPPPセッションを傍受できる攻撃者に対して脆弱です。攻撃者は、ユーザー名、CHAPチャレンジ、CHAPレスポンス、およびPPPセッションに関連付けられたその他の情報を見ることができます。攻撃者は、オフライン辞書攻撃を実行して元のパスワードを取得できます。PPPで使用される場合、CHAPは、通常はネットワークアクセスサーバーである認証器によって生成されるチャレンジを使用することで、ピアによるリプレイ攻撃に対する保護も提供します。
CHAPが他のプロトコルで使用される場合、平文で送信される場合もあれば、トランスポート層セキュリティ(TLS)などのセキュリティ層で保護される場合もあります。例えば、User Datagram Protocol (UDP)を使用してRADIUS経由でCHAPが送信される場合、RADIUSパケットを見ることができる攻撃者は、PPPの場合と同様に、オフライン辞書攻撃を仕掛けることができます。
CHAPでは、パスワード自体はネットワーク経由で送信されることはありませんが、クライアントとサーバーの両方がパスワードの平文を知っている必要があります。そのため、PPPで使用する場合、CHAPは、これらの両方の理由で脆弱なパスワード認証プロトコル(PAP)と比較して、より優れたセキュリティを提供します。
ピアがCHAPを送信すると、認証サーバーはそれを受信し、データベースから「既知の有効な」パスワードを取得してCHAP計算を実行します。生成されたハッシュが一致すれば、ユーザーは認証されたとみなされます。ハッシュが一致しない場合は、ユーザーの認証試行は拒否されます。
認証サーバーはパスワードを平文で保存する必要があるため、保存するパスワードに異なる形式を使用することは不可能です。攻撃者がパスワードのデータベース全体を盗み出した場合、データベース内のすべてのパスワードが平文で閲覧可能になります。
その結果、CHAPはPPPリンク上で使用する場合、PAPよりも安全である可能性がある一方で、PAPなどの他の方法よりも「静止状態」でのより安全な保存を妨げる。
MS-CHAPはCHAPに似ていますが、異なるハッシュアルゴリズムを使用し、各当事者が互いを認証できるようにします。
CHAP は、もともとPoint-to-Point Protocol (PPP) サーバーがリモート クライアントの身元を検証するために使用していた認証方式です。CHAP は、3 ウェイ ハンドシェイクを使用してクライアントの身元を定期的に検証します。これは、最初のリンク (LCP)を確立するときに発生し、その後いつでも再度発生する可能性があります。検証は、共有シークレット(クライアントのパスワードなど) に基づいています。[ 1 ]
ランダムチャレンジ用に選択されたIDは、対応するレスポンス、成功、および失敗パケットでも使用されます。新しいIDを使用した新しいチャレンジは、別のIDを使用した最後のチャレンジとは異なる必要があります。成功または失敗が失われた場合、同じレスポンスを再度送信することができ、同じ成功または失敗の表示がトリガーされます。ハッシュとしてMD5を使用する場合、レスポンス値はMD5(ID||secret||challenge)、ID、シークレット、およびチャレンジの連結のMD5です。[ 2 ]