よく使われるネットワーク認証方式は,IDとパスワードを使う平文認証とチャレンジ・レスポンス,非対称鍵暗号を使ったディジタル署名の3種類である。とはいえ,実際のネットワーク認証でどの技術をどうやって使っているかは千差万別。Part2では,それぞれの方式が,具体的にどんな形で使われているのか順番に見ていく。

 Part1で見てきたように,よく使われるネットワーク認証の方式は,IDとパスワードを使う平文認証とチャレンジ・レスポンス,非対称鍵暗号を使ったディジタル署名の3種類である。特にIDとパスワードを使う場合はおおむね,前の二つのどちらかが使われる。

 とはいえ,実際のネットワーク認証でどの技術をどうやって使っているかは千差万別だ。Part2ではそれぞれの方式が,具体的にどんな形で使われているのか,代表的なネットワーク認証を順番に見ていくことにする。

電子メールやPPPのデフォルト設定は危険

 まずは身近なところから話を始めよう。電子メールの受信時と,電話回線やADSL経由でプロバイダにアクセスするときに使うPPPで,それぞれ認証がどう使われているかを見ていこう。

電子メールは平文認証が標準

 電子メールを受信するときのプロトコルで一番多く使われているのはPOP3(ポップスリー)である。POP3では通常,メール・サーバーにアクセスするのにIDとパスワードを使う。この認証は裏側ではどう動いているのだろうか?

 電子メール・ソフトの設定パネルを開いてみよう(図1)。写真はBecky!(ベッキー)Internet Mailのものだが,認証方式の設定で「標準」か「APOP(エーポップ)」が選べるようになっているのがわかるだろう。ほとんどのユーザーはここで「標準」を選んでいるのではないだろうか。

図1●メーラー標準の認証方式は平文認証だ<br>写真はBecky! Internet Mailの設定画面。認証方式で「標準」を選ぶと平文認証になってしまう。APOPは電子メールの取得の際にチャレンジ・レスポンス認証を行うモードだ。
図1●メーラー標準の認証方式は平文認証だ
写真はBecky! Internet Mailの設定画面。認証方式で「標準」を選ぶと平文認証になってしまう。APOPは電子メールの取得の際にチャレンジ・レスポンス認証を行うモードだ。
[画像のクリックで拡大表示]

 でも,実はこちらを選ぶとメーラーは平文認証を使う。つまりPOP3では平文認証がデフォルトの設定になっており,このままの状態で使うとパスワードがそのままネットワークを流れてしまう。電子メールの認証でチャレンジ・レスポンスを使うには,設定でAPOPを選ぶ必要がある。

サーバーの歓迎メッセージで判断

 メーラーは,サーバーにアクセスするとまずサーバーからバナーと呼ばれるメッセージを受け取る(図2)。このとき,サーバーがAPOPに対応していれば,メッセージの末尾に<>(かっこ)でくくられた文字列が付いてくる。実はこれがチャレンジになる。

図2●メーラーはサーバーの最初のメッセージでAPOPが使えるかどうか判断する<br>メーラーはメール・サーバーから送られてくる最初のメッセージ(バナーと呼ばれる)にチャレンジ値が付加されていればAPOPが使える。APOP認証はこれにパスワードをつなげた値にMD5ハッシュ計算を行って,IDと一緒に送る。一方,平文認証の場合はまずIDを送り,次にパスワードを送るという2段階になる。
図2●メーラーはサーバーの最初のメッセージでAPOPが使えるかどうか判断する
メーラーはメール・サーバーから送られてくる最初のメッセージ(バナーと呼ばれる)にチャレンジ値が付加されていればAPOPが使える。APOP認証はこれにパスワードをつなげた値にMD5ハッシュ計算を行って,IDと一緒に送る。一方,平文認証の場合はまずIDを送り,次にパスワードを送るという2段階になる。
[画像のクリックで拡大表示]

 設定が標準になっていると,メーラーはチャレンジ値を無視してログイン要求とIDを送る。するとサーバーがパスワードを求めてくるので,そのままパスワードを送る。パスワードが合っていれば通信が始まる。

 一方,APOPを使う場合は,バナーに付いてきたチャレンジ値とパスワードをつなげたものをMD5ハッシュ関数に掛けてレスポンスを作る。これをIDと共にAPOPコマンドで送る。この値がサーバー側で計算したものと合っていれば通信がスタートする。

 ただし,APOPを設定していても無意味なケースがある。実際にはAPOPを使っていないことがあるからだ。いくつかのメーラーは,APOPに対応していないメール・サーバーにアクセスしたときに,自動的に平文認証に切り替えてしまうのである。

 APOP対応のメーラーは,サーバーから戻ってきたバナー・メッセージでAPOPが使えるかどうか判別できる。もしAPOPが使えなければ何らかのエラー・メッセージを出すべき。でも,そうしないで,そのまま平文認証に切り替えてログイン・プロセスを進めてしまうメーラーがあるのだ。

 平文認証に切り替わるからメールは問題なく受信される。逆に言うとユーザーはパスワードがそのままネットワークに流れていることに気付かない。ちょっと危ない仕様といえる。

PPPでは使わない認証機能をオフに

 次にPPPの認証を見てみよう。PPPは電話線経由でプロバイダのアクセス・ポイントにつなぐときに使うプロトコルだ。NTT東西のようなADSL事業者ではADSLモデム経由でプロバイダに使うためにPPPを使っている

 PPPはモジュール構造のプロトコルで,認証の機能は標準の方式以外にもいろいろ使える。そのため標準で使えるPAP(パップ),CHAP(チャップ)といった方式のほか,独自に拡張したプロトコルを使うこともある。ただ,ダイヤルアップで主に使うのはPAPとCHAPである。前者は平文認証,後者がチャレンジ・レスポンス認証になる。

 PPPの認証機能でユニークなのはどの認証方式を使うかを通信の途中でお互いに交渉(ネゴシエーション)する機能がある点だ(図3)。PPPの通信が始まると,双方で「使いたい認証方式」を通知し合い,双方が使える認証方式を選ぶしくみになっている。

図3●ダイヤルアップの認証は方式を双方で交渉して決める<br>PPPの認証プロセスの特徴は最初に平文認証を使うか,チャレンジ・レスポンスを使うかを双方で交渉するプロセスがある点だ。サーバー側が平文認証を要求してきてもクライアント側の設定で認証方式を絞っておけば,セキュリティを高められる。
図3●ダイヤルアップの認証は方式を双方で交渉して決める
PPPの認証プロセスの特徴は最初に平文認証を使うか,チャレンジ・レスポンスを使うかを双方で交渉するプロセスがある点だ。サーバー側が平文認証を要求してきてもクライアント側の設定で認証方式を絞っておけば,セキュリティを高められる。
[画像のクリックで拡大表示]

 例えば,Windws XPのPPPクライアント機能では,認証方式としてPAP,SPAP(エスパップ),CHAP,MS-CHAP(エムエスチャップ),MS-CHAPv2が使える(図3中の詳細設定パネル参照)。ここで,設定パネルで安全性の低いPAPやSPAPのチェックを外しておけばセキュリティ強度を上げられる。というのは,こういう設定にしておけば,PPPのネゴシエーションの過程でサーバーがPAPの利用を提案してきても拒否するので,必ずPAP以外の認証方式が選ばれるようになるからだ。

 では,PPPのCHAPのプロセスを見ておこう。認証のプロセスが始まるとまずサーバー側からチャレンジ値が送られてくる。これを受けたクライアントはチャレンジ値,ユーザーID,パスワードの三つをこの順番につなげた文字列を作り,MD5ハッシュに掛けてレスポンスを作成する。このレスポンスをユーザーIDと共にアクセス・サーバーへ送付して認証を求めるわけだ。

 APOPと異なり,レスポンスを作成するためにユーザーIDが加えられているのは,セキュリティを高めるためだ。単純にチャレンジとパスワードをつなげるより,ハッシュに掛ける文字列の文字数やバリエーションを増やせるので,安全性が高くなるという理屈である。