2

私はサイドプロジェクトの1つに2要素認証システムを実装しており、Googleが2要素認証に使用しているのと同じように、いくつかの「ワンタイムコード」を導入したいと考えています。

私の質問は、これらのコードをサーバーに保存する最も安全な方法は何でしょうか?それらはデータベースで暗号化する必要がありますか?パスワードをハッシュするのと同じ方法でbcryptのようなものを使用しますか?攻撃者が各ハッシュが6桁の数字を表し、ブルートフォース時間をほとんどゼロにすることを知っていることを考えると、それはやり過ぎかもしれないと思います。

4

2 に答える 2

3

ワンタイム コード (OTC) をパスワードと考えてください。パスワードを管理するためのセキュリティのベスト プラクティスを使用するようになりました。

また、OTC として 6 桁の数字を使用しないでください。私が言ったように、これらは (同等の) パスワードであり、これらのパスワードを弱くしたくはありません。

パスワードを安全に保管する方法の詳細については、パスワード保管チート シートを参照してください。

于 2012-08-24T07:54:27.440 に答える
1

質問は少し曖昧ですが、ここにいくつかの指針があります:

  1. 認証の少なくとも 1 つの部分を別のマシンに保存すると、両方の部分が一緒に危険にさらされるリスクが軽減されます。
  2. あなたのハッシュを塩漬けにしましょう!ソルトは、検証したいときに再作成できる限り、サイトに固有のものでも、ユーザーに固有のものでもかまいません。
    • なぜ塩?文字列の md5hash123456e10adc3949ba59abbe56e057f20f883e- あなたが言ったように、簡単にブルートフォースされます。しかし、ユーザーの ID を追加するとどうなるでしょうか。それをハッシュに追加して再ハッシュするか、元のテキストに追加することができます: md5hash of 123456aneroidis 74821b76b332b28532136eb58e1b7f40.
    • 他の追加の塩も使用できます。この SO 投稿を参照してください: https://stackoverflow.com/a/5482545/1431750
  3. データベースはこれらのソルト付きハッシュを保存する必要があります。
  4. あなたのソルトの 1 つは、2 番目の資格情報から派生する可能性があります。
  5. ハッシュは複数回再ハッシュできます。
于 2012-08-23T18:01:26.880 に答える