kakuyonの日記

Webアプリやセキュリティに関する事を書いていけたらと考えています。

「秘密の質問」の危険性と対策について考えてみる

パスワードを初期化する時などに、本人確認の代わりとして用いられる「秘密の質問」は相当な曲者だと思ってます。
最近、アカウント登録を行うシステムを作っていた際に、この仕組みについて感じたことを書いていきます。

秘密の質問のダメなところ

例えば「登録したパスワードの内容を忘れてしまった!」という人がいた場合に、
秘密の質問に答えられたら再設定できる、というシステムがあるとする。
そうすると、こういった問題点が出てくることは無いでしょうか?

・質問の答えが予測されやすい

もしここで質問を設定する際に、

「初めて訪れた海外の国は?」

という質問を再設定に利用するとしたらどうでしょう?

例え全く知らない人間のことでも、ある程度答えに見当がつきませんか?
とりあえず韓国とか台湾とか入力したらあっさり通るかもしれない、
というか実際にこんな感じでアカウントを弄られてた人も身近に居ました。

とにかく、質問に対する答えがある程度予測できてしまう点は、大きなデメリットだと思います。
「母親の旧姓」や「ペットの名前」も、文字の種類や文字数は大体把握できてしまいます。

・質問の答えは忘れやすい

秘密の質問は通常のパスワードと違って、毎回入力するわけではありません。
大抵はパスワードを忘れた時のように、本人確認が困難となった場合にのみ、使われるものです。

そもそも秘密の質問の内容自体、滅多なことでは見ないでしょう。
ついでに全角や半角の区別も完璧に覚えておく必要があります。
パスワードを忘れた人が、果たしてそんなものを覚えていられるでしょうか?

ならばどう対策するべきなのか

よく使われている手段として、次のものがあります。

・見当もつかない言葉を答えに設定する

確かに、これなら見当がつけられない分、危険性は減ると思います。
実際、設定するならこうするべきでしょう。
ただ、これによって更に質問の答えを忘れる可能性が上がると思います。
なにより、こうなるともはや秘密の質問が質問として役割を果たしていません。パスワード初期化用のパスワードを登録してるようなものです。

・いっそのこと初めから第二のパスワードとして設定する

中途半端に脆弱な、忘れやすい言葉を設定するくらいなら、いっそのこと本格的に強力なパスワードを設定するのもいいと思います。
これなら他人に秘密の質問を突破されることはまず無くなるでしょうが、結局答えを忘れる危険は残ったままです。


簡単な答えを設定すると他人にバレやすく、
難しい答えだと自分が忘れやすい…

うまいこと、自分が見たらすぐ答えを思い出せて、他人からは見られても分からないような、そんな質問に設定できればいいのですが…

☆そもそもこんな方法で本人確認を行わない

思考放棄してるようなものかもしれませんが、実際この仕組みを利用していくのは結構無理があるのではないかと思います。

現在はメールアドレスによる認証が一般的ですが、今後はメール認証 + 生体認証の2要素認証が主流になっていくのではないかなぁと思っています。
もしかしたらメール認証は無くなるかもしれませんが、所持情報 + 生体情報の組み合わせでの認証は確実に利用されるでしょう。

まとめ

利用者側は、他人に予測されにくい + 自分が忘れることのないワードをなるべく設定するように心掛けておき、
提供者側は、この脆弱な認証方式を少しでも早く淘汰するのが最適解ではないでしょうか。