web-dev-qa-db-ja.com

Argon2idパラメータをデータベースに保存しますか?

ユーザーのパスワードをデータベースに格納するためにArgon2idを使用することにしました。 2つの質問があります。

  1. 出力結果に影響を与える可能性のあるいくつかの入力パラメーター(並列処理、反復など)があるので、これらのパラメーターをデータベースに格納することは良いアイデアだと思います。保存されているパスワードの横の列。どういうわけかセキュリティを下げることができますか?
  2. 私たちのアプリケーションを使用するユーザーは別のコンピューター(私たちのアプリケーションは自分の側で実行されています。それはWindowsアプリです)を使用できるため、計算能力も異なります。これらのパラメータを修正して、ユーザーにとって十分に安全であるが遅くなりすぎないようにするにはどうすればよいですか?推奨設定はありますか?または、アプリを初めて実行する前にパフォーマンステストを実行し、それに従ってパラメータを選択するのが最善の方法です(たとえば、ハッシュパスワードの計算は300〜500ミリ秒にする必要があります)。
2

質問1

すべての情報を保存する必要がありますが、それは 単一の列 でエンコードして保存する必要があります。おそらくあなたはすでにハッシュライブラリからエンコードされた出力を取得しています。次のようになります( source ):

$argon2i$v=19$m=65536,t=2,p=4$c29tZXNhbHQ$RdescudvJCsgt3ub+b+dWRWJTmaaJObG

異なる部分の意味を理解するには、 この質問 を参照してください。

質問2

パスワードハッシュはサーバー側で行う必要があるため、気にする必要のあるクライアントマシンではないことに注意してください。しかし、これは、パフォーマンスの異なるサーバーで実行される可能性のあるサーバーソフトウェアの一種であると思います。

これを構成可能にして、一部のマシンでは遅くなる可能性がある場合でも、強力で安全なデフォルトを設定することをお勧めします。ベストプラクティスが進化し、ハードウェアが改善するため、将来のバージョンでもこれらのデフォルトを更新する必要があります。 (それが2020年のArgon2にどのような意味があるのか​​はわかりません。)

パフォーマンスの問題に遭遇した人々を助けるために、なぜこの問題があり、低い設定を使用することが危険なのかを説明する優れたドキュメントを作成することを目指します。

弱いデフォルトを設定したり、パフォーマンステストを実行したりすると、人々が無意識に安全でない設定を使用するリスクが伴います。私は、ユーザーに誤った安心感を与えるのではなく、この問題について考えるように強制したいと思います。

2
Anders