質問: お世話になります。 単純な質問になってしまいますが、 二段階認証を強制すれば、例えパスワードが流出しても水際で不正ログインを防ぐことができるので、 パスワードハッシュ時のソルトやストレッチングは必要無いのでないかと思うのですが、いかがでしょうか。 もちろん二段階認証が絶対ではなく、SNS認証などを行っている場合にスマートフォンが盗難に遭えば不正ログインが出来てしまいますが、 そういった問題とは別にお答えいただければありがたいです。 今のところ考えられるのは、自サイト以外で流出したパスワードが使用される危険性があるとかでしょうか。 よろしくお願いいたします。
回答: こんにちは。 見ていて思ったことがあるので補足的に回答してみます。 まず、パスワードハッシュ+ソルト+ストレッチングは、DB に格納している「データ」から「生パスワード」の復元を可能な限り困難にするためのものです。 生パスワードそのまま保管はもちろん論外ですが、パスワードハッシュのみではレインボーテーブルなどにより生パスワードが復元されてしまう危険性が高いです。これを同等のサービスレベルを保ちつつ「まず復元するのは不可能だろう」というレベルにまで強固にするためのテクニックがソルト+ストレッチングなのです。 つまりどういうことかというと、 もし仮に、自サービスがハッキングを受けて個人情報流出事故に発展したとして、パスワードハッシュ+ソルト+ストレッチングが徹底されていれば「お客様のパスワードは流出していません(キリッ)」という体裁を保つことができるのです。 決してハッキングを受けることがないのであれば、生パスワードをそのまま保存していたとしても絶対に安全です。何故なら、ハッキングされないからです。 現実ではそんなことはありえませんね。