正答3
解説
正解は3です。
パスワードは、そのまま保存せず、ハッシュ値にして保存するのが基本です。
しかし、ハッシュ値が漏えいすると、総当たりや辞書を使ってパスワードを割り出される(パスワードクラック)おそれがあります。
ストレッチングは、ハッシュ値を求める計算に時間がかかるようにして、この解析を困難にする対策です。
【選択肢別解説】
1:× 普段と異なるログイン方法のときに追加で秘密の質問をするのは、リスクベース認証です。
不正ログインを防ぐ対策ですが、ハッシュ値の計算を工夫するストレッチングではありません。
2:× 一定回数パスワードを誤ったときにログインできなくするのは、アカウントロックです。
オンラインでの総当たり攻撃への対策で、ストレッチングとは異なります。
3:○ パスワードのハッシュ化を何千回、何万回と繰り返して照合用のハッシュ値を求めるのがストレッチングです。
1回の計算に時間がかかるので、攻撃者が大量の候補を試す時間も大きく増えます。
4:× 利用者IDごとに異なる文字列を付加してからハッシュ化するのは、ソルトの付加です。
同じパスワードでも異なるハッシュ値になり、レインボーテーブル攻撃を防ぎますが、ストレッチングとは別の対策です。
【ポイント】
ソルトは「同じパスワードから同じハッシュ値を作らせない」、ストレッチングは「1回の計算を重くする」対策です。
実際には両方を組み合わせて使うのが一般的です。