簡単な答えは安全ではない
当然ではありますが、覚えやすい答えはあまり安全ではありません。簡単な答えは、一般によく知られていたり簡単に手に入る情報であったり、特定の文化圏では答えの選択肢が限られていたりするケースが多くあります。たとえば、ある特定の国で一般的な苗字は、ある程度限られています。
実際にわかったことをいくつかご紹介しましょう。
- 英語を使うユーザーの場合、「好きな食べ物は?」という質問の答えを一度で当てられてしまう可能性は 19.7% です (ちなみにその答えは「ピザ」です)。
- アラビア語のユーザーの場合、「はじめての先生の名前は?」という質問の答えを 10 回で当てられてしまう可能性はおよそ 24% です。
- スペイン語のユーザーの場合、「お父さんのミドルネームは?」という質問の答えが 10 回で当てられてしまう可能性は 21% です。
- 韓国語のユーザーの場合、「生まれた都市は?」という質問の答えが 10 回で当てられてしまう可能性が 39% で、好きな食べ物だと 43% にも上ります。
「電話番号は?」や「マイレージ番号は?」というような、本来ならかなり安全だろうと思うような秘密の質問でも、かなり多くのユーザーが同じ答えを設定していることもわかりました。さらに掘り下げてみると、37% のユーザーが、答えを推測されにくくするためにあえて嘘の答えを設定していることがわかりました。ところがこれはかえって逆効果になっています。嘘の答えを選ぼうとすると、同じような答えを選んでしまう人が多く、実際には攻撃者に付け入る隙を与えてしまうのです。
難しい答えは実用的ではない
これはちょっと驚きですが、母親が通った小学校や図書館カードの番号は実は忘れやすいのです。覚えにくい秘密の質問と答えでは、実際には使えないことが少なくありません。リサーチ結果をいくつかご紹介しましょう。
- アメリカで英語を使うユーザーの 40% が、必要なときに秘密の質問の答えを思い出すことができませんでした。一方、同じユーザーが、SMS のテキスト メッセージで送られていたパスワード再設定用のコードを入力できた割合は 80% を超え、電子メールでもほぼ 75% でした。
- 「図書館カードの番号は?」や「マイレージ番号は?」という質問は安全性が高そうですが、実際に思い出せた割合はそれぞれ 22% と 9% に留まりました。
- アメリカで英語を使うユーザーでは、「お父さんのミドルネームは?」という簡単な質問の正答率は 76% だったのに対し、もう少し安全性が高そうな質問、「最初の電話番号は?」の正答率は 55% に留まりました。
秘密の質問を増やしたら?
もちろん、質問の数が 2 つあるいはそれ以上に増えれば、1 問だけの場合より正解を当てるのが難しくなります。ところが、質問を増やせばリスクも上がります。アカウントを復旧できないユーザーの数が跳ね上がるでしょう。私たちはさらに分析を続け、これが正しいかどうかを検証しました(Google では実際に「秘密の質問」を複数使用したことはありません)。
データによると、最も簡単な質問と答えは「生まれた都市は?」で、ユーザーが答えを思い出せる確率は 79% を超えました。その次に簡単だったのは「お父さんのミドルネームは?」で、ユーザーが思い出す確率は 74% でした。攻撃者が 10 回繰り返せば、これらの質問の答えを割り出せる確率はそれぞれ 6.9% と 14.6% です。
しかし、ユーザーが両方の質問に回答しなければならないとなると、秘密の質問のセキュリティと利便性のかい離が広がります。攻撃者が 10 回で両方の質問に正しく回答できる可能性は 1% になりますが、同時にユーザーが両方の答えを思い出せる確率も 59% に落ち込みます。秘密の質問の数を増やすことは、ユーザーがアカウントを復旧しにくくなることにつながるため、よい方法とはいえません。
次の質問は「ではどうするか?」
オンライン サービスでの認証やアカウントの復旧には、秘密の質問が長い間大きな役割を果たしてきました。しかし、今回の結果を見ると、ユーザーもサイト管理者も改めて考えてみる必要があるでしょう。
Google ユーザーの皆様には、Google アカウントの復旧用の情報を常に最新の状態にしておくことを強くお勧めします。これは、
アカウント情報のページで簡単にできることです。Google では長い間、「秘密の質問」を、アカウントの復旧に SMS メッセージもバックアップ用のメールアドレスも使えない場合の最後の手段として使用してきました。そしてこれからも、アカウントの所有者であることを証明する方法として、「秘密の質問」を単独で使用することはありません。
同様にサイト管理者も、SMS メッセージや 2 つ目のメールアドレスを使ってバックアップ コードを送信するなど、ほかの認証手段を使ってユーザーがアカウントを復旧できるようにするのがよいでしょう。どちらも安全性が高く、ユーザーにとっても便利な手段です。
Posted by
Eiji Kitamura - Developer Relations Team