web-dev-qa-db-ja.com

pbkdf2 + scrypt + bcryptを使用するのが最適ではありませんか?

遅い方が優れており、キーストレッチングは、エントロピーが低い可能性のあるパスワードよりもセキュリティを向上させる優れた方法であるため、3つすべてを使用しても意味がありませんか?

明確に言うと、これはソフトウェアにキーストレッチアーキテクチャを実装することです。どちらが最善かについて多くの論争が見られますが、それは私には思えます-3つすべてを使用してください。

2
Blaze

PBKDF2、scrypt、bcryptはすべて構成可能です;彼らはあなたが望むだけ遅くすることができます。限界点はコンピュータではなく、ユーザーの忍耐力です。

たとえば、パスワードの処理(アーカイブファイルのロック解除など)に6秒以上かかると、ユーザーが怒りを感じるとします。 bcryptのみを使用する場合は、マシンで6秒かかるように調整できます。ただし、PBKDF2とscryptとbcryptを連続して使用する場合、それらは6秒の予算に収まる必要があります。つまり、実際には、より少ない反復回数でそれらを構成します。それぞれ2秒。その観点からすると、3つのアルゴリズムを連続して使用することは1つに勝る​​ものではありません。 合計時間は重要です。

この構成可能な低速のポイントは、攻撃者にとって事態が困難になることです。攻撃者が各パスワードをできるだけ高価に推測できるアルゴリズムを選択したいとします。攻撃者は必ずしもあなたと同じハードウェアを持っているわけではないため(たとえば、彼はおそらくGPUを使用しようとするでしょう)、各アルゴリズムは多かれ少なかれ「良い」かもしれません。攻撃者はいつでもあなたのようなPCを購入できるため、6秒で何をするかを6秒で行うことができます。ただし、攻撃者は、その特定のタスクのためにあなたよりも優れたより専門的なハードウェアを購入する場合があります。これは特にPBKDF2とGPUの場合です。ディフェンダーとして、あなたはそのような状況を避けたいです。したがって、一部のアルゴリズムは他のアルゴリズムよりも優れており、PBKDF2/bcrypt/scryptトライアドでは、1つのアルゴリズムが上記で説明した意味で「より強力」であると想定できます。

したがって、そのアルゴリズムだけを使用し、許容できる限りの時間がかかるようにその構成を調整して使用するのが最適です。定義により、3つすべてのアルゴリズムを連続して使用することは、その独自のアルゴリズムだけの場合ほど強力にはなりません。実際には、これはbcryptを使用する必要があることを意味します。PBKDF2に費やす予算はセキュリティを浪費します。これは、マシンでの同じCPU使用量に対して、bcryptがより多くの抵抗を提供するためです( this bcryptとscryptの詳細、および一般的なパスワードハッシュの詳細については that )。

10
Thomas Pornin

そうすることは実際には非常に危険です。強みを加えていると言えるかもしれませんが、実際には弱みを積み重ねています。たとえば、PBKDF2はGPUに対する保護がありません。つまり、ユーザー/プロセスが待機する必要があるが、bcrypt(またはscrypt)ほどセキュリティに貢献しない、サーバー上の無駄な労力です。 BcryptにはFPGAに対する保護機能がありません。 Scryptは両方に耐えるように構築されています。したがって、最強の機能を使用するのが最善です。

そうは言っても、NISTは技術的に最も弱いPBKDF2にアドバイスしていると述べていますが、おそらくそれで十分です。しかし、彼らは常にbcryptに対して好意的でした。 Scryptはブロックの新しい子供であり、そのため他のものほど証明されていません。

1
Caen

非常に依存しています。ある時点以降、暗号化は価値がなくなります。どれほど安全であってもそれを作ることができます。技術Xは、データが盗まれた場合に技術Yよりも安全であるという理由だけで、データに対する恐ろしい議論です。そもそも、最初に盗まれないようにするための適切なセキュリティが必要だったからです。それは、完全に無関係な別の問題に答えることによって問題を解決しようとしていることを意味します。

セキュリティベクトルが「ハードドライブが盗まれた場合、その内容が安全であることをどのように確認しますか?」実際の答えはハードウェア暗号化キーストアをオフにして、ハードドライブを含むハードウェアを盗んだとしても、キーを推測しない限り解読できないようにすることです。暗号化がちょうど十分なレベルのレベルである場合、宇宙はそのときまでに死ぬでしょう。これは、タンデムで2つでも使用しない場合がほとんどです。

infinity可能なキーがあることに注意してください。妥当な時間枠で無限の推測を推測できる場合、私は本当に感動します。

0
Robert Mennell