よく使われるネットワーク認証方式は,IDとパスワードを使う平文認証とチャレンジ・レスポンス,非対称鍵暗号を使ったディジタル署名の3種類である。とはいえ,実際のネットワーク認証でどの技術をどうやって使っているかは千差万別。Part2では,それぞれの方式が,具体的にどんな形で使われているのか順番に見ていく。
Part1で見てきたように,よく使われるネットワーク認証の方式は,IDとパスワードを使う平文認証とチャレンジ・レスポンス,非対称鍵暗号を使ったディジタル署名の3種類である。特にIDとパスワードを使う場合はおおむね,前の二つのどちらかが使われる。
とはいえ,実際のネットワーク認証でどの技術をどうやって使っているかは千差万別だ。Part2ではそれぞれの方式が,具体的にどんな形で使われているのか,代表的なネットワーク認証を順番に見ていくことにする。
電子メールやPPPのデフォルト設定は危険
まずは身近なところから話を始めよう。電子メールの受信時と,電話回線やADSL経由でプロバイダにアクセスするときに使うPPPで,それぞれ認証がどう使われているかを見ていこう。
電子メールは平文認証が標準
電子メールを受信するときのプロトコルで一番多く使われているのはPOP3(ポップスリー)である。POP3では通常,メール・サーバーにアクセスするのにIDとパスワードを使う。この認証は裏側ではどう動いているのだろうか?
電子メール・ソフトの設定パネルを開いてみよう(図1)。写真はBecky!(ベッキー)Internet Mailのものだが,認証方式の設定で「標準」か「APOP(エーポップ)」が選べるようになっているのがわかるだろう。ほとんどのユーザーはここで「標準」を選んでいるのではないだろうか。
でも,実はこちらを選ぶとメーラーは平文認証を使う。つまりPOP3では平文認証がデフォルトの設定になっており,このままの状態で使うとパスワードがそのままネットワークを流れてしまう。電子メールの認証でチャレンジ・レスポンスを使うには,設定でAPOPを選ぶ必要がある。
サーバーの歓迎メッセージで判断
メーラーは,サーバーにアクセスするとまずサーバーからバナーと呼ばれるメッセージを受け取る(図2)。このとき,サーバーがAPOPに対応していれば,メッセージの末尾に<>(かっこ)でくくられた文字列が付いてくる。実はこれがチャレンジになる。
設定が標準になっていると,メーラーはチャレンジ値を無視してログイン要求と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の通信が始まると,双方で「使いたい認証方式」を通知し合い,双方が使える認証方式を選ぶしくみになっている。
例えば,Windws XPのPPPクライアント機能では,認証方式としてPAP,SPAP(エスパップ),CHAP,MS-CHAP(エムエスチャップ),MS-CHAPv2が使える(図3中の詳細設定パネル参照)。ここで,設定パネルで安全性の低いPAPやSPAPのチェックを外しておけばセキュリティ強度を上げられる。というのは,こういう設定にしておけば,PPPのネゴシエーションの過程でサーバーがPAPの利用を提案してきても拒否するので,必ずPAP以外の認証方式が選ばれるようになるからだ。
では,PPPのCHAPのプロセスを見ておこう。認証のプロセスが始まるとまずサーバー側からチャレンジ値が送られてくる。これを受けたクライアントはチャレンジ値,ユーザーID,パスワードの三つをこの順番につなげた文字列を作り,MD5ハッシュに掛けてレスポンスを作成する。このレスポンスをユーザーIDと共にアクセス・サーバーへ送付して認証を求めるわけだ。
APOPと異なり,レスポンスを作成するためにユーザーIDが加えられているのは,セキュリティを高めるためだ。単純にチャレンジとパスワードをつなげるより,ハッシュに掛ける文字列の文字数やバリエーションを増やせるので,安全性が高くなるという理屈である。