秘密の質問 【secret question】 セキュリティ質問 / security question
概要
秘密の質問(secret question)とは、登録利用者の認証を行う方式の一つで、システム側から本人にまつわるパーソナルな質問を行い、事前に登録した回答を返せるかを確かめる手法。パスワードを忘れた際の本人確認などで用いられる。「ペットの名前は?」「母親の旧姓は?」といった個人的な質問に対する回答を利用者登録などの際にあらかじめ登録しておき、認証時には同じ質問を行って登録した通りの回答ができれば本人であるとみなす。
登録時には用意されたいくつかの質問の中から一つまたは数個を選んで回答を登録する方式が多いが、質問文自体を利用者が自由に考えて登録できるようにしている場合もある。回答に表記の揺れがあると同一性の判定が困難になるため、簡潔な単語で答えられる質問が多い。
秘密の質問は通常の認証手順には用いず、パスワードを忘れてしまい再設定したいと申し出があった際に申請者が利用者本人であることを確認する手段として用いたり、普段と異なる利用状況で認証が行われた際などになりすました他人ではないことを確認するために行われる(二段階認証/リスクベース認証)ことが多い。
秘密の質問には様々な問題点が指摘されている。利用者登録の手続きの際に質問と回答を登録するが、その情報は普段の認証時には使わないため、いざ必要になったときに「どの質問を選んだか忘れた」「登録時の回答の正確な表記を忘れた」といった状況が起きやすく利便性に欠ける。
また、任意の文字列を設定できるパスワードなどに比べ、既存の単語や固有名詞、あるいは「よくある名前」を登録することが多く、質問の設計によっては辞書攻撃などに対して脆弱である。例えば、「ペットの名前」は「モカ」「モモ」「マロン」などが多いであろうし、「母親の旧姓」は鈴木、山田、佐藤などが多くなり、これは本人には変更できない(わざと奇抜な架空の答えを登録することはできるが、それをずっと覚えていなければならない)。
さらに、こうした本人の属性にまつわる情報は身近な人ならそれとなく本人から聞き出すなどして割り出しやすく、全くの他人であっても本人のSNSアカウントを探し出して書き込みを分析するなどして割り出すことが可能な場合がある。パスワードを認証時以外にうっかりどこかに書いてしまうことは考えにくいが、ペットの名前をSNSに書き込むのは起きがちである。