チャレンジ・レスポンスではパスワードが送られるか?
2004年10月7日(木曜日)
チャレンジ・レスポンスではパスワードが送られるか?
「腕試し!10分でできるネットワーク実力診断テスト (itpro.nikkeibp.co.jp)」の中にチャレンジ・レスポンス方式に関する問題がありました。
チャレンジ・レスポンス方式というのは、簡単に言うと、サーバから「チャレンジ」と呼ばれるその場限りのキーが送られてきて、手元のパスワードとそのキーを合わせてハッシュしたものを送るという方式です。「チャレンジ」の値は毎回異なり、生成されるハッシュ値も異なりますので、これが盗聴されても問題ないわけです。このハッシュ値はその場で生成された一度きりのパスワードと考えることもでき、従ってこれはワンタイムパスワード方式の一種であるとも言えます。
さて、そのチャレンジ・レスポンス方式について述べているものの中で正しいのはどれかという問題だったのですが、その選択肢は事実上以下の二択になっていました。
- パスワードはサーバーに送らない
- パスワードを暗号化してサーバーに送る
※ほかにも二つ選択肢がありましたが論外なので。
さあ困りました。
送られているのはパスワードとチャレンジから生成されたハッシュ値だったりするわけですが、これは「暗号化されたパスワード」なのか、それとも「パスワードではない何か」なのか。「ワンタイムパスワードを送る」とかいう選択肢があればそれで良いと思うのですが、そんな選択肢はないのです。
前者ですが、確かに生のパスワードは送っていません。しかしその場で生成したワンタイムパスワードを送っていると言えますので、パスワードを送らないというのは言い過ぎでしょう。後者ですが、チャレンジと一緒にハッシュしたものを「暗号化」と呼んで良いのかという問題になります。これは、たとえば「/etc/shadow にはパスワードが暗号化されて格納されている」などという言い方を聞きますし、そんなに間違っていないような気がします。
というわけでどちらかといえば後者かなと思って回答したのですが……正解は前者の方でした。えーっ、ワンタイムパスワード送ってるじゃん、と思ったわけですが、回答を良く見ると、なんと後者の方の選択肢が……
クライアントがパスワードを暗号化して送り、サーバーが受信データを複合する
っておいおい、問題に出てたのと選択肢の内容が違ってるし! この選択肢だったら「サーバがデータを復号する」(複合は変換ミスでしょう) 部分が明らかに誤りなので、悩まずに選択肢を絞り込めますね。
瀬戸際で修正して、しかし問題文の方を修正し忘れたのかしら……。
- 「チャレンジ・レスポンスではパスワードが送られるか?」へのコメント (1件)
- 前(古い): ASP.NET の脆弱性?
- 次(新しい): ASP.NET の脆弱性!