ある日のこと

あるサイトで会員登録をしたときに、アカウント復旧のための質問に対する回答を設定する必要がありました。
質問内容としては下記の3つがありました。

久しぶりに見た秘密の質問たち
初めて飼ったペットの名前は?
あなたの生まれた街はどこ?
初めて行ったコンサートは何だった?

思い返してみればこのような「秘密の質問」に遭遇したのは久しぶりでした。
久しぶりに見かけたということは、最近のシステム開発では使わなくなってきているということだと思います。

少し気になったので、今回はなぜ「秘密の質問」が認証の方法として採用されていたのか、なぜ認証の方法として使われなくなってきたのかをまとめてみたいと思います。

「秘密の質問」の歴史

Wikipediaの記載によれば20世紀初頭の銀行で顧客による署名を補うものとして秘密の質問が利用されていたようです。

また、2000年初頭からインターネット上で利用者が自身の手でパスワードを変更する手段として広く利用されるようになりました。

ちなみに、忍者の合言葉として知られる「山」「川」は秘密の質問には当てはまらないのか?とClaudeに聞いてみたところ、異なるとの回答が返ってきました。
秘密の質問は本人の経歴・生活史という既存の事実であるのに対し、「山」「川」は事前に取り決めた任意の文字列であるため、どちらかというとパスワードに分類されるようです。
なので、認証方法として秘密の質問が使われ始めたのは20世紀初頭という記載は正しそうです。

「秘密の質問」はなぜ使われなくなったのか

では、「秘密の質問」は認証手段としてなぜ使われなくなったのでしょうか。

元々、その脆弱性についてはインターネットでの認証手段として使われ始めた当初から指摘がありました。
大まかにまとめると下記の通りです。

  • 調べる / 推測することができる
  • 変更ができず、使い回される

ただ、秘密の質問は、容易に思い出すことができ(るとされていました)、本人であることを確かめられるため、その利便性から認証方法として使われてきました。

では、そのような状況が転換したのはなぜでしょうか。

端的にまとめると、秘密の質問を採用する前提が崩れ、また代替手段が登場したからでした。

2015年にGoogleが実施した調査で、「秘密の質問」に対する数億件の回答を分析した結果、対象となった利用者のうち40%が自分の回答を思い出せていなかったことがわかりました。一方、同調査によればSMSリセットコードによる復旧成功率は80%超と高い結果になりました。

また、スマートフォンの普及によってSMSによる認証が一般的になり、秘密の質問を採用しなくとも確度の高い本人認証を行うことができるようになりました。

このような状況があり、システム開発において秘密の質問を使う必然性は消失した、と言っても良いでしょう。

NISTによる言及

2017年にはNIST(米国国立標準技術研究所)が公開したSP 800-63B: Authentication and Lifecycle Managementというガイドラインにおいて、秘密の質問の利用が明確に禁止されます。

原文

Memorized secret verifiers SHALL NOT permit the subscriber to store a “hint” that is accessible to an unauthenticated claimant. Verifiers SHALL NOT prompt subscribers to use specific types of information (e.g., “What was the name of your first pet?”) when choosing memorized secrets.

パスワード(記憶シークレット)を検証する側は、未認証の相手が閲覧できる「ヒント」を利用者に保存させてはならない。また、パスワードを決める際に、特定の種類の情報(例:「最初に飼ったペットの名前は?」)を答えさせる形にしてはならない。

NISTの公表するガイドラインは世界中から注目されています。
事実として、IPAではNISTの公表するガイドラインのうち、重要なものについては翻訳して公開しています。

これは推測ですが、この言及が世界的に広まっていったことにより、日本でも秘密の質問の採用が減っていったのではないかと思います。

まとめ

秘密の質問はインターネット上で認証手段として使われ始めた当初よりその脆弱性が指摘されてきましたが、その利便性から使われ続けてきました。

現代においてもSMSによるOTPやメールによる復旧リンクなどの認証手段も同様の状況にありますが、代替手段がないため使われ続けています。

今では当たり前に使っている認証方法がある日を境に非推奨となるかもしれないので、セキュリティ周りの話題も追っていきたいと思います。

こちらの記事も面白かったです!

「秘密の質問」のベストプラクティス - Qiita
認証要素の一つとして時折使われる「秘密の質問」、皆さんは使っていますか? 以前よりは見かけなくなってきたように思いますが、まだ様々なところで使われているこの認証要素、開発者としても利用者としても大変な曲者です。 本記事ではその危険性と向き合い対策するためのベストプラクティス...