正答3
解説
正解は3です。
ハッシュ関数を使った安全なパスワード認証の方法を問う問題です。
ハッシュ関数は、元の値から固定長の値を作り、その値から元の値を求めにくい一方向性を持ちます。
パスワードそのものではなくハッシュ値を保存すれば、保存データが漏れても元のパスワードを知られにくくなります。
【選択肢別解説】
1:× 登録してあるのは利用者IDのハッシュ値、比較するのは入力したパスワードのハッシュ値です。
異なるものどうしを比べるので、正しいパスワードでも一致せず認証できません。
2:× 利用者IDのハッシュ値どうしを比べているだけで、パスワードを全く確認していません。
利用者IDを知っていれば誰でも認証に通ってしまいます。
3:○ 登録時にパスワードのハッシュ値を保存し、認証時は入力されたパスワードを同じハッシュ関数で変換して比べます。
値が一致すれば正しいパスワードと判断でき、パスワード自体は保存しません。
4:× 登録してあるのはパスワードのハッシュ値、比較するのは利用者IDのハッシュ値です。
異なるものどうしを比べるので、正しく認証できません。
【ポイント】
同じパスワードから同じハッシュ値ができることを利用して照合します。
実際の運用では、ソルトと呼ばれるランダムな値を加えてからハッシュ化し、解析を難しくします。