web-dev-qa-db-ja.com

解読をめちゃくちゃ難しくする場合、パスワードで暗号化されたものを公開しても安全ですか?

あなたが失いたくない非常に重要な秘密鍵を持っているとしましょう。あなたはそれを http://Pastebin.com/ に投稿することを考えていますが、それを解放して要点を解消します。つまり、暗号化は password key derivation を使用して考えますが、通常はそれだけでは不十分です。サーバー上のパスワードを保護するために同様のアルゴリズムが使用されており、それらのハッシュが漏洩した場合、パスワードはしばらくの間安全ですが、サーバーは引き続き全員にパスワードを変更するように指示します。これは、彼らが長期間公開されることは安全ではないことを意味します。

サーバーは通常、1秒程度しかかからないようにパスワードハッシュを要求します。これはリカバリ用のパスワードなので、少し時間がかかってもかまいません。たとえば、24時間など、非常に長い時間がかかる場合は問題ありません。

一般的なコンピューターで1日かかるなど、パスワードキーの導出に非常に長い時間がかかるように設定した場合、そのキーで暗号化されたコンテンツを公開して安全に公開できますか?それともあなたはまだブルートフォースに対して脆弱ですか?

6
PyRulez

キー強化の理由は、パスワードに期待されるほどエントロピーがパスワードにないためです。キーを壊すのにかかる時間は、可能なキーの数に比例します。パスワードに使用される強化アルゴリズムは、比例定数を増やすことにより、不十分なエントロピーを補正します。しかし、そのギャップは非常に大きいため、強化しても補償できません。 64ビットのエントロピーを含むパスワードは覚えるのが非常に困難です— 10ですランダム印刷可能ASCII文字(覚えやすい機能を課し始めると、エントロピーはway down)または14個のランダムな小文字ですが、128ビットの「クラッキングの難しさ」に達します。これは、対称暗号化の最も一般的な鍵のサイズに相当し、2の64乗が必要です— CPUの約1世紀時間。

あなたのシナリオでは、覚えやすいパスワードは間違った方法です。これは、めったに使用しないパスワードですが、非常に強力である必要があるため、覚えにくいパスワードです。

パスワードから派生したキーの代わりにランダムなキーを使用し、それを出力します。プリントアウトは安全な場所に保管してください。

使用するソフトウェアにパスワードが必要な場合は、キーと同じエントロピーでランダムなパスワードを生成します。 20 ASCII印刷可能な文字、または28のランダムな小文字、または同等の文字列により、128ビットのエントロピーが得られます。これが解読不可能になるまで技術が進んだ場合、暗号化しているキーはおそらくとにかく安全である必要はありません。パスワードにはキーに対する十分なエントロピーがあるので、それを強化する必要はありません。もう一度、印刷してください。

その経路をたどると、元のキーを印刷してアップロードのことを忘れてしまうかもしれません。ただし、間接参照のレベルを追加することには利点があります。これは、攻撃者が暗号化されたキーのコピーとキー暗号化キーのコピーの両方を取得する必要があることを意味します。この分離により、部品の1つが危険にさらされた場合、2つ目の部品も危険にさらされる前に行動する時間があるかもしれません。キー暗号化キーをいくつかの個別の部分に格納することもできます。 nにキーを分割できる シークレットシェアリング アルゴリズムがあり、任意のkピースから復元できるようになっていますが、それより少なくはありません。物事をシンプルにしたい場合は、複数のキー暗号化キーを生成し、これらのキー暗号化キーで暗号化されたマスターキーをアップロードし、キー暗号化キーを分割して、すべてを回復するために複数の場所が必要になるようにピースをディスパッチします。 。

他の読者にわかりやすくするために、パスワードベースのキー導出はハッシュではなく、暗号化です。これは、パスワードを暗号化するのではなく、パスワードから暗号化キーを生成するように設計されています。関数(私はPBKDFと呼びます)でパスワードをハッシュし、結果のキーでデータを暗号化します。

強力なアルゴリズムでハッシュされた強力なパスワードは、壊れるのに何十年もかかります。パスワードストレージシステムを設計した人がうまく機能し、関係するアルゴリズムに弱点がない場合、ハッシュブレーカーになる可能性はパスワードが回復する前に完全に数千年になるでしょう。責任あるサーバーオペレーターは、徹底的に防御するためにパスワードを変更するように人々に求めます。

同様に、適切な暗号化を解くには膨大な時間がかかります。 AES-256を総当たりするには、 宇宙の年齢を何回も待つ必要があります

強力なパスワードを使用し、PBKDFの反復が多すぎて、可能なパスワードからキーを生成するのに丸1日かかる場合、攻撃者が推測するプロセスを経るよりも、派生キーをブルートフォースで攻撃する方が簡単である可能性があります。パスワードとそれらからの鍵の導出。

したがって、PBKDFによって生成されたキーと少なくとも同じエントロピーを持つパスワードを使用するだけであれば、時間を節約でき、セキュリティをまったく犠牲にすることなく、1回の反復からのキーでデータを暗号化できます。

2
Ben N