目次
概要
前提条件
要件
使用するコンポーネント
表記法
CHAP の設定
単方向認証と双方向認証
CHAP 設定コマンドとオプション
トランザクションの例
コール
チャレンジ
応答
CHAP の確認
結果
CHAP のトラブルシューティング
Cisco サポート コミュニティ - 特集対話
関連情報
概要
Challenge Handshake Authentication Protocol(CHAP; チャレンジ ハンドシェイク認証プロトコル)(RFC 1994
で定義)は、スリー ウェイ ハンドシェイクによりピアの身元を確認します。CHAP では、次の一般的な手順が実行されます。
-
Link Control Protocol(LCP; リンク コントロール プロトコル)フェーズが完了し、両方のデバイス間で CHAP がネゴシエートされた後、認証側はチャレンジ メッセージをピアに送信します。
-
ピアは、一方向ハッシュ関数(Message Digest 5 [MD5])で計算された値で応答します。
-
認証側は、その応答が自分の計算した予測ハッシュ値と一致するかどうかをチェックします。値が一致する場合、認証は成功します。一致しない場合、接続が終了されます。
この認証方式は、認証側とピアだけが知る「秘密鍵」に依存します。この秘密鍵は、リンク上を送信されることはありません。認証は単方向にすぎませんが、相互認証に同じ秘密鍵セットを使用すると、双方向に CHAP をネゴシエートできます。
CHAP の長所と短所の詳細は、RFC 1994
を参照してください。
前提条件
要件
このドキュメントの読者は次の項目に関する知識が必要です。
-
encapsulation ppp コマンドにより、インターフェイスで PPP を有効にする方法
-
debug ppp negotiation コマンドの出力。詳細は、『debug ppp negotiation の出力について』を参照してください。
-
Link Control Protocol(LCP; リンク制御プロトコル)フェーズがオープン状態ではない場合のトラブルシューティング能力。これは、PPP 認証フェーズは、LCP フェーズが完了してオープン状態になるまで開始されないためです。debug ppp negotiation コマンドで LCP がオープンであると示されない場合、先に進む前に、この問題のトラブルシューティングを行う必要があります。
注:このドキュメントでは、MS-CHAP(バージョン 1 またはバージョン 2)は取り上げていません。MS-CHAP の詳細は、『MS-CHAP サポート』および『MSCHAP バージョン 2』を参照してください。
使用するコンポーネント
このドキュメントは、特定のソフトウェアやハードウェアに限定されるものではありません。
表記法
ドキュメント表記の詳細は、『シスコ テクニカル ティップスの表記法』を参照してください。
CHAP の設定
CHAP を設定する手順はとても簡単です。たとえば、図 1 に示すように、left と right という、ネットワークで接続された 2 台のルータがあるとします。
図 1:ネットワークで接続された 2 台のルータ

CHAP 認証を設定するには、次の手順を実行します。
-
インターフェイスで、encapsulation ppp コマンドを発行します。
-
両方のルータで ppp authentication chap コマンドを使用して、CHAP 認証の使用を有効にします。
-
ユーザ名とパスワードを設定します。これには、username <username> password <password> コマンドを発行します。<username> はピアのホスト名です。次の点を確認します。
注:デフォルトでは、ルータはピアに対する自身の特定に、自分のホスト名を使用します。ただし、この CHAP ユーザ名は、ppp chap hostname コマンドで変更できます。詳細は、『ppp chap hostname コマンドおよび ppp authentication chap callin コマンドを使用する PPP 認証』を参照してください。
単方向認証と双方向認証
CHAP は、単方向の認証方式として定義されています。ただし、双方向認証を作成するには、両方の方向で CHAP を使用します。したがって、双方向の CHAP では、個別の スリー ウェイ ハンドシェイクがそれぞれの側で開始されます。
Cisco の CHAP 実装では、デフォルトでは、(認証が完全にオフにされない限り)着信側が発信側を認証する必要があります。このため、着信側によって開始される単方向の認証が最低限の認証です。ただし、発信側も着信側の身元を確認できるため、双方向の認証になります。
単方向認証は、Cisco 以外のデバイスに接続するときに必要になる場合がよくあります。
単方向認証の場合は、発信側ルータで ppp authentication chap callin コマンドを設定します。
表 1 に、callin オプションを設定する場合を示します。
表 1:callin オプションを設定する場合
|
認証タイプ |
クライアント(発信側) |
NAS(着信側) |
|
単方向 |
ppp authentication chap callin |
ppp authentication chap |
|
双方向 |
ppp authentication chap |
ppp authentication chap |
単方向認証を実装する方法の詳細は、『ppp chap hostname コマンドおよび ppp authentication chap callin コマンドを使用する PPP 認証』を参照してください。
CHAP 設定コマンドとオプション
表 2 に、CHAP コマンドとオプションをリストします。
表 2:CHAP コマンドとオプション
|
コマンド |
説明 |
|
ppp authentication {chap | ms-chap | ms-chap-v2 | eap |pap} [callin] |
このコマンドは、リモート PPP ピアのローカル認証を、指定したプロトコルで有効にします。 |
|
ppp chap hostname username |
このコマンドは、インターフェイス固有の CHAP ホスト名を定義します。詳細は、『ppp chap hostname コマンドおよび ppp authentication chap callin コマンドを使用する PPP 認証』を参照してください。 |
|
ppp chap password password |
このコマンドは、インターフェイス固有の CHAP パスワードを定義します。 |
|
ppp direction callin | callout | dedicated |
このコマンドは、コールの方向を強制的に設定します。
このコマンドは、コールが着信か発信かに関してルータが混乱している場合(たとえば、バックツーバックで接続されていたり、リース回線で接続され、Channel Service Unit or Data Service Unit [CSU/DSU] または ISDN Terminal Adapter [TA; ターミナル アダプタ] がダイヤル接続用に設定されている場合)に使用します。 |
|
ppp chap refuse [callin] |
このコマンドは、ピアによるリモート認証を無効にします(デフォルトでは有効)。このコマンドにより、CHAP 認証がすべてのコールに対して無効にされます。つまり、すべてのユーザに CHAP を使用して認証させようとするピアによる試みがすべて拒否されることを意味します。
callin オプションにより、ルータはピアから受信する CHAP 認証チャレンジへの応答を拒否するけれど、ピアに対しては、ルータの送信する CHAP チャレンジへの応答をまだ要求することが指定されます。 |
|
ppp chap wait |
このコマンドは、発信側が最初に認証する必要があることを指定します(デフォルトで有効)。
このコマンドは、ピアがルータに対して自身を認証するまで、ルータは CHAP 認証を要求するピアに対して認証を行わないことを指定します。 |
|
ppp max-bad-auth value |
このコマンドは、認証のリトライの許容回数を指定します(デフォルト値は 0)。
このコマンドは、認証が失敗した直後に自身をリセットするのではなく、指定した回数認証をリトライできるように、ポイントツーポイント インターフェイスを設定します。 |
|
ppp chap splitnames |
この隠しコマンドを使用すると、CHAP チャレンジと応答に対して異なるホスト名を使用できます(デフォルト値は無効)。 |
|
ppp chap ignoreus |
この隠しコマンドは、ローカル名を持つ CHAP チャレンジを無視します(デフォルト値は有効)。 |
トランザクションの例
このセクションの図は、2 台のルータ間の CHAP 認証中に起きる一連のイベントを示しています。これらは、debug ppp negotiation コマンドの出力に実際に表示されるメッセージを表しているわけではありません。詳細は、『debug ppp negotiation の出力について』を参照してください。
コール
図 2:コールの到達

図 2 に、これらの手順を示します。
-
コールが 3640-1 に到着します。着信インターフェイスは、ppp authentication chap コマンドで設定されています。
-
LCP は CHAP および MD5 をネゴシエートします。これを決定する方法の詳細は、『debug ppp negotiation の出力について』を参照してください。
-
3640-1 から発信側ルータへの CHAP チャレンジが、このコールで必要になります。
チャレンジ
図 3:CHAP チャレンジ パケットの作成

図 3 は、2 台のルータ間の CHAP 認証における次の手順を示しています。
-
CHAP チャレンジ パケットが次の特性で作成されます。
-
ID 値と random 値は、着信側ルータで保持されます。
-
チャレンジ パケットが発信側ルータに送信されます。未解決のチャレンジのリストが維持されます。
応答
図 4:ピアからのチャレンジ パケットの受信と MD5 処理

図 4 は、どのようにピアからチャレンジ パケットが受信され、処理(MD5)されるかを示しています。ルータは、着信 CHAP チャレンジ パケットを次のように処理します。
-
ID 値が MD5 ハッシュ ジェネレータに入力されます。
-
random 値が MD5 ハッシュ ジェネレータに入力されます。
-
名前 3640-1 が、パスワードの参照に使用されます。ルータは、チャレンジ内のユーザ名に一致するエントリを検索します。この例で検索される内容は、次のとおりです。
username 3640-1 password pc1
-
パスワードが MD5 ハッシュ ジェネレータに入力されます。
結果は、MD5 ハッシュ処理済みの単方向の CHAP チャレンジとなり、CHAP 応答で返送されます。
応答(続き)
図 5:認証者に送信される CHAP 応答パケットの作成

図 5 は、認証者に送信される CHAP 応答パケットがどのように作成されるかを示しています。この図に、これらの手順を示します。
-
応答パケットは、次の構成要素で構成されます。
-
02 = CHAP 応答パケット タイプの識別子。
-
ID = チャレンジ パケットからコピーされた ID。
-
hash = MD5 ハッシュ ジェネレータからの出力(チャレンジ パケットからハッシュ処理された情報)。
-
766-1 = このデバイスの認証名。これは、ピアが身元の確認に必要なユーザ名およびパスワードのエントリを検索するために必要です(詳細は「CHAP の確認」セクションで説明されています)。
-
次に、応答パケットがチャレンジャに送信されます。
CHAP の確認
このセクションでは、設定の確認方法に関するヒントを説明します。
図 6:チャレンジャによる応答パケットの処理

図 6 は、チャレンジャが応答パケットを処理する方法を示しています。CHAP 応答パケットが(認証側で)処理される際に行われる手順を次に示します。
-
ID は、元のチャレンジ パケットを検索するために使用されます。
-
ID が MD5 ハッシュ ジェネレータに入力されます。
-
元のチャレンジによるランダムな値が、MD5 ハッシュ ジェネレータに入力されます。
-
名前 766-1 は、次のソースのうちの 1 つからパスワードを検索するために使用されます。
-
パスワードが MD5 ハッシュ ジェネレータに入力されます。
-
応答パケットで受信されたハッシュ値は、MD5 ハッシュの計算値と比較されます。計算されたハッシュ値と受信されたハッシュ値が等しい場合、CHAP 認証は成功します。
結果
図 7:発信側ルータに送信される成功メッセージ

図 7 は、発信側ルータに送信される成功メッセージを示しています。この手順には、次のステップが含まれています。
-
認証が成功した場合、CHAP 成功パケットが次の構成要素から作成されます。
-
認証が失敗した場合、CHAP 失敗パケットが次の構成要素から作成されます。
-
次に、成功または失敗パケットが、発信側ルータに送信されます。
注:この例は、単方向認証を示しています。双方向認証では、この処理全体が繰り返されます。ただし、発信側ルータが最初のチャレンジを開始します。
CHAP のトラブルシューティング
問題のトラブルシューティング方法についての詳細は、『PPP 認証のトラブルシューティング』を参照してください。
Cisco サポート コミュニティ - 特集対話
Cisco サポート コミュニティでは、フォーラムに参加して情報交換することができます。現在、このドキュメントに関連するトピックについて次のような対話が行われています。
関連情報