PAP(RFC1334)/CHAP(RFC1994)

パスワード認証プロトコル(PAP)

 バスワード認証プロトコル(PAP:Password Authentication Protocol)は装置が相手を確認するための簡単な方法です。実際の手順が行われるのは最初のリンク確立段階が終了した後だけで,ツーウェイハンドシェークの形を取るようになっている。リンク確立段階が終了すると認証とパスワードの組み合わせを連続して送るが,応答確認の受信かリンクの終了までこれが続く。
 認証の要求にはLCPオプションを利用し,PAPではタイプフィールドの値は3,長さフィールドは4,16ビットの認証プロトコルフィールドの値はC023hになる。データフィールドは使用しない。次にPAPはPPPパケットで運ばれるが,このパケットのプロトコルフィールドの値はC023hです。PAPパケットの一般的なフォーマットを図10に示します。

PAPプロトコルの一般的なフォーマット
図10 PAPプロトコルの一般的なフォーマット

 コードフィールドの値は1,2,3のいずれかになり,それぞれ認証要求,肯定応答確認(ACK),否定応答確認(NAK)を示す。識別子フィールドに入るのは固有の8ビット数で,応答と要求を関連付けるために使う。16ビットの長さフィールドはPAPパケットの全長を示し,コード,識別,長さおよびデータの各フィールドがこれに含まれる。最後に,データフィールドは可変長のオクテットで,そのフォーマットは行うべきオペレーションで決まり,コードフィールドから導かれる。

■認証要求
 認証要求は,認証手順の開始に使用し,この手順では,自分のIDとパスワードを入れたPAP要求を一方のピア(要求側)が送る。これが一定間隔で繰り返され,有効な応答を受信するか,終了要求LCPパケットでリンクが終了するまで続く。PAP要求のフォーマットを図11に示す。

PAPの認証要求
図11 PAPの認証要求

 このパケットではコードフィールドは必ず1になる。識別子フィールドは固有の値に設定されるので,その後の応答をこの要求と照合することが可能。ピアID長フィールドとピアパスワード長フィールドは,それぞれIDとパスワードの長さを示す。長さフィールドはパケットの全長を示す。

■認証ACKと認証NAK
 PAP認証要求に対する応答は,肯定の認証ACKか否定の認証NAKになる。要求元が送ったIDとパスワードの組み合わせが受け入れ可能であれば,応答は肯定になる。IDかパスワードが受け入れ不能であれば,応答は否定で終了要求LCPパケットでリンクが終了します。
 この2つのパケットはどちらも同じフォーマットを使います。これを図12に示します。

PAPの認証ACKと認証NAK
図12 認証ACKと認証NAK

チャレンジハンドシェーク認証プロトコル(CHAP)

 パスワード認証プロトコル(PAP)と違って,単純な認証システムだけを提供するチャレンジハンドシェーク認証プロトコル(CHAP:Challenge Handshake Authentication Protocol)はもっと安全な体系を提供する。まず,CHAPが利用するスリーウェイハンドシェークは,関係するピアだけに分かるシークレットを使用する。また,リンクの継続中は,いつでも「チャレンジ」を出すことができる。シークレットの長さは最小1オクテットですが,16オクテットが望ましいとされる。これがリンクを使って送られることはない。
 PAPと同じように,認証の要求にはLCPオプションが使われる。CHAPでは,コードフィールドの値は3,長さフィールドは4,16ビットの認証プロトコルフィールドの値はC223hです。CHAP要求のデータフィールドには,使用する単向ハッシュ法を示す1オクテットが置かれます。このオクテットでは,0から4までの値は留保され,未使用となっている。値5は標準オプションだけの使用を希望することを示すが,この場合の標準はMD5です。
 図13に示すのは,CHAPの一般的なフォーマットです。これはPPPパケットで運ばれます。PPPパケットのプロトコルフィールドの値は,C223hになります。

CHAPの一般的なフォーマット
図13 CHAPの一般的なフォーマット

 コードフィールドの値は,チャレンジでは1,応答では2,成功では3,失敗では4になる。識別子フィールドはコマンドと応答の照合に使われ,長さフィールドがパケット長を示す。データフィールドは可変長で,コードが示すデータを運ぶ。

■チャレンジと応答
 CHAPは,ピアがチャレンジパケットを送ることで開始される(コードフィールドは1)。PAPと同じように,応答の受信かリンクの終了まで,チャレンジパケットは連続して送られる。認証段階で送られることもあるが,ピアとは異なり,ネットワーク段階でもいつでも送ることができる。
 チャレンジヘの応答はCHAP応答で,コードフィールドは2になる。どちらのパケットも,図14に示すフォーマットを使う。

CHAPのチャレンジと応答
図14 CHAPのチャレンジと応答

 チャレンジでは,コードフィールドは1になり,識別子フィールドの固有の数値は,応答とチャレンジの照合に使われる。長さフィールドはパケットの全長を,値の長さフィールドは値フィールドの長さを示す。値フィールドには可変数のオクテットが置かれ,名前フィールドのもつ装置固有のIDがパケットの送信元システムを示す。
 応答では,コードフィールドは2に設定され,識別子フィールドは,この応答と関連チャレンジの照合に使われ,長さ,名前,および値の長さの各フィールドは,チャレンジと同じ意味をもっている。値フィールドに入る単向ハッシュは,識別子にシークレットとチャレンジ値を連結したものから計算される。

■成功と失敗
 応答の値がチャレンジ側ピアの予測どおりであれば,CHAP成功パケットが送られ,予測と異なれば失敗が送られ,終了要求LCPパケットでリンクが終了するようになっている。つまり,成功パケットか失敗パケットが,スリーウェイハンドシェークの第3段階になる。この2つのパケットは,どちらも図15に示すフオーマットを使う。

CHAPの成功と失敗
図15 CHAPの成功と失敗

 成功の場合にはコードフィールドの値は3で,失敗の場合は4になり,いずれの場合も,識別子フィールドを使って,元の要求パケットと,成功または失敗パケットとの照合が行われる。可変長のメッセージフィールドには,実装ごとに異なる情報が置かれ,その長さは長さフィールドで決まる。

PPP WAN接続の定番を理解するへ

トップページへ