ある公共機関のWebサイトでは、秘密の質問を定期的に変更しなければならない。秘密の質問とは、パスワードを忘れてしまった場合にあらかじめ登録してあった秘密の質問と回答の組み合わせを用いて本人であることを確認する仕組みである。
秘密の質問は、以下の中から選ばなければならない。
- あなたの出身都道府県は?
- 母親の旧姓は?
- 買っているペットの名前は?
- 中学生の時のニックネームは?
- 好きな食べ物は?
- あなたの出身小学校は?
- 初めて買った車は?
- 初めて海外旅行に行った場所は?
- 尊敬する人物は?
- 中学生の時の部活動は?
ペットを飼っていない人もいるだろうし、海外旅行に行ったことがない人もいるので、すべての質問が使えない人もいる。さらに、事実に基づいて回答を作成するならば各項目ひとつになってしまう。好きな食べ物はすき焼きだと思っている人が、変更を指示されて本来好きでも嫌いでもない「らっきょ」にすることもできるが、パスワードを忘れてあわてているときにらっきょを思い出すのは容易ではない。
そもそも、password reminderを「秘密の質問」という呼び方をしているのだが、この日本語名が意味するのは「どの質問を選んだか」が秘密なのであり、回答は知り合いが知っていてもおかしくない内容である。あえて言うなら、すき焼きならば
- すきやき
- スキヤキ
- sukiyaki
など、どのような表記でも登録できるので、どの表記にしたかは秘密にできるが、認証というのは
- 本人とサイト運営者が共有している1要素
- ユーザーID
- 本人だけしか知り得ないか、他人には再現しにくい1要素以上
- パスワード*1、生体認証など
で行うべきで、秘密の質問はこれを満たしていていない不安定な仕組みである。
どのように秘密の質問を使えばよいか
秘密の質問は、パスワードのように定期的に変更するのが望ましいし、上記のように定期的に変更するよう要求するWebサイトも少なくない。
秘密の質問を登録する人にとって選べるのは、
- 質問の種類 (質問文はあらかじめサイト側は用意したものから選ぶ)
- 質問に対して正直に回答するかどうか
- 回答の表記法
この3つである。下から順番に考えていく。
回答の表記法
わたしたちはパスワードを管理するときに文字表記を統一することを慣れている。サイトAでは全角、サイトBでは半角のように使い分けていると、いよいよ記憶があいまいになるし、どこかに書き留めておいてもきちんと再現できるか疑わしい。回答の表記方法は統一しておいた方がいいと思う。全角文字が入力できないサイトは存在するが、半角文字が入力できないサイトは存在しないので、例えば
「パスワード」や「秘密の質問への回答」は、どこのサイトでも半角英数字しか使わない
と記憶しておく。これで、パスワードを忘れてあわてているときに「あれ、全角だっけ? 半角だっけ?」とくだらないことで悩まずに済む。ただし記憶力に相当自信があれば全角・半角を使い分けてもかまわない。
質問に対して正直に回答するかどうか
回答の表記法を統一してしまうと、正直に回答した結果は限られてしまう。例えばさきほどの「半角英数字しか使わない」のルールを使うと、アルファベットを大文字にするか小文字にするかの自由しかない。
そもそも大文字小文字は、秘密の質問の管理プログラムが区別しているかどうかもわからない。秘密の質問という中途半端な仕組みを提供している人たちは、なぜかこの重要な情報を開示していないことが多い。わたしたちが小手先の知恵で大文字小文字を使い分けてSUkiYAkiとしても、結局はどれでsukiyakiと入力しても同じと扱われてしまう可能性があるということだ。
なので、sukiyakiを変更しろと言われたら、rakkyoにするしかない、というのが現状のようである。あとで「すきやきだったかな、らっきょかもな」と悩むくらいならば、最初から真実に基づいた入力はしない、というのがよいみたいだ。
qiajfinxckzのようなパスワードのような意味のない文字列にする (この文字列はそのままコピーして使わないでください)
のが一番安全だが、それはあなたが普段パスワードを決めるときに使うロジックに従うのがよいだろう。
質問の種類
秘密の質問への回答を真実に基づかないのであれば、質問も上から順に選ぶとか、何かの法則に基づいて何番目かを選ぶというようにすればよい。ユーザーIDの先頭がcだったら、a,b,cなので上から3番目、3番目から変更するなら次は6番目、というようにするのもひとつの手であるが、ここに書いてしまったので別のルールを考案してほしい。
以上をまとめると、
秘密の質問: 買っているペットの名前は?
秘密の質問への回答: qiajfinxckz
覚えていなければいけないこと: 何番目を選んだか + 意味の文字列から作ったパスワード
となる。らっきょは覚えられそうだがqiajfinxckzは覚えられないということであれば、誰も読めない場所に書き留めておくか、らっきょをつかうしかないが、そのうち「すき焼きもらっきょもだめ」と指示されて新たなものを覚えなければならなくなる。
*1:パスワードは原文のまま保管しないようにするのが一般的であり、サイト運営者であっても保管してある情報からパスワードを再現することは困難である