質問
アカウントのパスワードをリセットするためにセキュリティの質問が使用されている場合、セキュリティの質問の回答で大文字と小文字の区別を処理するためのベストプラクティスと考えられるものは何ですか?
シナリオ
現在取り組んでいるアカウントパスワードのリセットプロセスは、3つのステップで機能します。最初のステップでは、ユーザー名、生年月日、識別番号など、3つの識別可能な情報を提供するようユーザーに要求します。そのチェックに合格すると、セキュリティの質問(以前に設定したもの)が尋ねられます。そのチェックに合格した場合は、新しいパスワードを設定します。
では、セキュリティの質問では大文字と小文字を区別する必要がありますか?社内での議論により、「いいえ」の方向に向かっている。私たちが思いついた理由の1つは、ユーザーが自分の身元を確認するためのチェックとして私たちを呼び出した場合、同じセキュリティの質問を使用したと言うことです。彼らが正しい答えを得れば、彼らは正しい答えを得ます。彼らは私たちへの答えのケースを口頭で綴っていません。それでは、Webフォームで実行する必要がありますか?
「業界標準」や「ベストプラクティス」が見当たらないようです。そのため、このプラクティスの経験がある人やセキュリティ問題の専門家からフィードバックを得たいと思っています。
「セキュリティの質問の回答」は、ユーザーが日常的に使用しない補助パスワードに似ています。ほとんど入力しないパスワードを覚えるのは難しいです。正確なケースを要求すると、ユーザーが適切に答えられなくなる可能性があります。
理論的な観点から見ると、「セキュリティの質問」はすでに大きな弱点であり、一部のユーザーwillがパスワードを忘れて、そのケースを可能な限り自動化して処理する必要があるため、これは許容されます。セキュリティに関する質問をしないと、セキュリティ面でさらに悪化します。したがって、セキュリティの質問の追加された値は、完全に開かれていないパスワードリセットプロセスを許可しますが、それでも自動的に、つまりサーバーの最小コストで実行できます。大文字と小文字を区別すると、その値の多くが削除されます。実際には、空白、句読点、アクセントを抑制して正規化することもお勧めします。
セキュリティの質問は基本的に別のパスワードです。したがって、理想的には、パスワードと同じプロパティを持つ必要があります。つまり、推測やブルートフォースを防ぐには、妥当な長さ(8文字を超える)が最も重要です。
この調査研究は、前の質問でここに投稿されました: https://docs.google.com/viewer?a=v&pid=sites&srcid=ZGVmYXVsdGRvbWFpbnxyZXVzYWJsZXNlY3xneDozNDcwNDhmMmE2MmJiMDkw
その結論は、複雑さはオンラインエントリに対してそれほど重要ではないということです。したがって、基本的な辞書の単語、ユーザー名などを確認し、十分な長さがあること、およびアカウントのロックアウトまたは指数バックオフを実装する場合、複雑さを要求することに大きな利点はありません。
もちろん、最良の方法は、秘密の質問を排除し、SMSワンタイムパスワードまたはメールワンタイムパスワード/リンクなど)の帯域外パスワードリセットメソッドを追加することです。または、パスワードの管理を完全に停止してサポートすることもできます。 OAuth(例:Facebook接続)またはOpen-ID(Googleなど)ベースの認証方法。
以前の両方の回答で述べたように、「セキュリティの質問」は単なるパスワードと偽装であり、そのように扱う必要があります。パスワードを簡単に推測できる値や公開されている値に設定しないので、なぜセキュリティの質問に使用するのですか?困ったことで、こうやって困った人を個人的に知っています。
私は常にセキュリティの質問に対する完全な回答を提供し、それらを実際のパスワードと同じように扱います。つまり、パスワード管理ソフトウェアを使用します。私は真剣に皆に同じことをすることを勧めます。