web-dev-qa-db-ja.com

scrypt / bcryptパラメータを秘密にしておくべきですか?

RFCには明記されていませんが、これらの値が利用可能であった場合、攻撃者を助ける可能性があると思います。

たとえば、scryptの場合、ブロックサイズパラメーターr、CPU /メモリコストパラメーターN、および並列化パラメーターpの値が使用可能な場合、攻撃はどのブルートフォーシング時に使用する値。

何か案が?

5

コストパラメータは「実装の詳細」としてカウントされ、したがって、それらが非表示になることに依存することは obcursityによるセキュリティ になると思います。

それらを積極的に秘密に保つことは、それらをある種の低エントロピーのコショウとして使用するようなものです。まったく役に立たないわけではありませんが、ほとんどです。さらに、攻撃者が1つのパスワードを解読できれば、正しい要素を知ることができます。だからpassword1すべてのパスワードにいくつかの異なる要素を付ければ、完了です。パスワードを保護するために追加のシークレットが必要な場合は、通常のペッパーを使用するか、ハッシュを暗号化します。これらは、実際にこの問題を解決することを目的としたソリューションです。

理由がない限り、世界中に公開する必要があるという意味ではありません。もちろん、システムの安全性を自慢するように誰かに伝えたい場合は、すぐに進んでください。しかし、攻撃者を助長する可能性があるため特に低い場合は、私は自分のウェブページに掲載しませんでした。 (一方、「私たちはbcryptを使用します」と言うのは、フェンスに「犬に注意」という標識を置くようなものです。

ほとんどの人は、数セットのコスト要因の1つを使用します。推測が難しいものではなく、システムに適したものに基づいてコスト要素を選択することをお勧めします。

コストファクターはハッシュのすぐそこにあるので、これを実装するには文字列からアクティブにカットする必要があることに注意してください。しかし、私は気にしません。

やや関連する質問: 公開レポートで使用したパスワードハッシュ関数を共有できますか?

5
Anders