web-dev-qa-db-ja.com

PBKDF2に反復を追加しても、追加のセキュリティが提供されなくなるのはどの時点ですか?

私の本当のパスフレーズが、暗号の実際の鍵として使用されるハッシュを生成するためだけに使用される場合、それは暗号自体をブルートフォースで試すことが可能であることを意味しませんか?いずれにしても非常に長い時間がかかることは知っていますが、ハッシュの反復ごとに処理するよりも、キー自体をブルートフォースで処理する方が高速になるのはどの時点ですか。私の最も安全なドライブでは、デフォルトの1ではなく、20秒の反復(結果として約200万回のSHA512反復が発生します)を使用します。結果のハッシュまたは可能な限りすべてのASCIIを元のパスフレーズに使用した場合、彼らはより速くそれを行いますか?

編集:実用性ではなく、数学に興味があるだけであることを指摘したいと思います。私はすでに長いパスフレーズを使用しており、ブルートフォースに非常に長い時間がかかること、ゴムホースの解読などについて知っています。理論的には、攻撃者が理論的にAESキーを直接ブルートフォースにできるかどうかです。 、ハッシュの反復回数がいくつになると、AESキーよりもASCIIキーをブルートフォースで直接強制するのが困難になります...

18
kkarl88

正確な答えはありませんが、その理由は次のとおりです。

強引な

まず、128ビットの対称鍵から始めます。アルゴリズム(AESなど)がまだ壊れていない場合、消費電力を調べる必要があります。コンピューター、ASIC、グラフィックスカード、またはその他のキークラッキングデバイスをはるかに超える技術を備えた100%効率の計算デバイスを想定すると、ビットを反転させてその高い数をカウントするだけの最小エネルギー要件があります。 ウィキペディアは私たちのために計算を行いました 、そしてそれは、128ビットのキーの場合、物理学によって要求される最小エネルギー要件は約10であることが判明しました18 ジュール、つまり1年間30ギガワット。明らかに「実際の」ハードウェアでは、要件は数十万倍になります。全世界のエネルギー生産以上のもの。したがって、これは既存の地上体の能力を大きく超えています。

しかし、256ビットのキーに移行すると、計算はさらに深刻になります。シュナイアーは応用暗号学でこれについて数学をしました、そしてそれは 以前にここで議論されました です。繰り返しの詳細で退屈するのを避けるために、私は単に結論を切ります。私たちの太陽はこのタスクを達成するのに十分な力を生み出していません。

理論的にはリバーシブルコンピューティング(量子コンピューターでは可能かもしれません)は、有効ビット長を半分に削減し、そのようなプロジェクトを物理学の範囲全体ではなく、既存のパワーの範囲を超えるだけにします。しかし、それはすべてアカデミックです。

要点は次のとおりです。適度なサイズの対称鍵をブルートフォースで強制することはできません。あなたによってではなく、誰によってでも。

同等のラウンド

それでは、PBKDF2は何ラウンドですか。攻撃者が鍵の導出が完了するまで10年待つか、太陽の周りにダイソン球を構築するかを選択する必要がある場合でも、PBKDF2ルートの方が高速です。実際の測定基準では、鍵の導出にさらに時間を追加することは、攻撃にさらに時間を追加することを意味し、決してPBKDF2ルートalsoが必要でない限り、鍵をブルートフォースにしようとすることは決してオプションになりません。地球外建設プロジェクト)。

では、等価点はどこにあるのでしょうか。ブルートフォースのPBKDF2はいつダイソンスフィア全体のセットアップを必要としますか?答えは:それは依存します。キー自体を推測するのではなく、攻撃でハッシュプロセスを使用することの要点は、パスワードの試行回数を減らすことです。あなたが知っているパスワードが「サル」または「123456」のいずれかである場合は、運で試行するのではなく、2回だけ推測するほうがよいでしょう。順次スキャンでのハッシュの修正。

したがって、答えは、攻撃者が攻撃に使用する辞書のサイズによって異なります。正確なパスワードを知っている場合、彼は一度だけ推測します。したがって、ブルートフォース攻撃は、正しいログインとまったく同じ時間がかかります。どれほど長くあなたはそれがそうであると理解します。彼が2つの推測でそれを取得することを期待している場合、彼のブルートフォースは、正しいログインのちょうど2倍の時間がかかります。彼が試す100語の辞書を持っている場合、正しいログインの100倍の長さであり、パスワードが彼の辞書にない場合は、成功することはありません。

いくつかの実用的な数学

つまり、彼のブルートフォース攻撃が不可能になることをguaranteeするには、パスワードが彼の唯一の候補である可能性を考慮する必要があるため、成功したログインが不可能になることも保証する必要があります。リスト。

一方、妥当な平均を求めたい場合は、単純な除算を行います。ブルートフォース攻撃に1兆年かかるとしましょう。そして、私たちのパスワードが14文字の英数字であるとしましょう(10のうち125)。彼の辞書がすべて英数字のパスワードであるとすると、それは10です。25 10のパスワード推測12 年(短期規模の兆)、または1013 1年あたりの推測、または1秒あたり約316900回の推測。これは、リストを完全に網羅するためのものです。一部のパスワードは最初に推測され、一部は最後に推測されます。おそらく最大ではなく平均に関心があるので、推測率を半分に落とします。 1秒あたり約150000の推測により、同じ時間内にリストの半分を取得できます。

したがって、各パスワードを推測するのに1/150,000秒以上かかるようにPBKDF2を調整する限り、パスワードが表示される最小の辞書が14文字すべてのリストであり、1であることが保証されます。兆兆年です。

より長いパスワード

もちろん、14文字のランダムなパスワードは入手が困難です。パスワードリストを10文字から縮小する13文字25 10までのエントリ23、1兆年の平均を維持するために、クラッキング速度(毎秒1500パスワード)を約100倍遅くする必要があります(厳密には、100倍は実際には62倍です。 。長さから別の文字をドロップすると、数値がanother 62x毎に変わります。

whatハッシュすることの重要性はhowハッシュすることよりもはるかに重要です。たとえば、22文字の英数字のパスワードは131ビットのキーであり、PBKDF2をまったく使用しなくても、解読しようとする理由をはるかに超えています。

警告

基礎となる暗号が破られて、鍵を推測することなく攻撃される可能性がある場合、それがおそらく選択する攻撃方法になることを覚えておいてください。しかし、AESでこのような攻撃が発生することはありません。また、攻撃が存在することも想定していません。

17
tylerl

Colin Percivalの scrypt に関する論文から:

計算に_2^s_暗号操作を必要とする鍵導出関数を使用することにより、tビットのエントロピーでパスワードに対してブルートフォース攻撃を実行するコストが_2^t_から2^(s+t)オペレーション。

2,000,000は、SHA-512の約2 ^ 21反復です。これが128ビットキーによって提供されるセキュリティを超えるためには、パスワードに約107ビットのエントロピー、または大文字、小文字、数字、および12の記号からランダムに選択された17文字のパスワードとほぼ同等である必要があります。

6
Stephen Touset

反復は、攻撃者を遅くするためにあります。関数が適切にソルト処理されていて、攻撃者が実行できる最善の方法は、一致が見つかるまですべての潜在的なパスワードを実際に試すことだとしましょう。 パスワードエントロピーnビットと等しくなるように定義します。平均して、試してみる2n-1パスワード:攻撃者は、ユーザーがより頻繁に選択するパスワードを知っており、「最適な」順序でパスワードを試行します。これは、その平均的な成功で機能します。 (ここでは「平均」が非常に重要な単語であることに注意してください。すべての数学はその単語なしでは成り立ちません。)

「ビット」の使用は、パスワードがkビットのシーケンスである場合、すべての可能な2kシーケンスはユーザーが選択する可能性が等しいので、エントロピーは上記の定義ではkビットに等しくなります。有名なケースの詳しい説明については この答え を参照してください。

次に、rの反復を適用して、攻撃者をスローダウンさせます。攻撃者の計算コストは、平均してr・2になります。n-1。したがって、あなたの目標は、rnを十分に高くして、このコストが法外であり、攻撃者(攻撃者はそれを努力する価値がないと見なすか、単純にできない)。 unbreakableを超えるセキュリティレベルはないため、実際には、実際のセキュリティゲインが得られない最大反復回数があります。攻撃者が敗北すると、彼は敗北します。これ以上彼を倒す方法はありません(ただし、反復回数が Burj Khalifa の攻撃者を屈辱し、追い越すことで心理的な利益が得られる可能性があります)。重要な点は、攻撃者の動機はパスワードで保護されているデータの価値に依存するため、価値の少ないデータに必要な保護は少ないということです。

今、この「破られない」レベルの定量化について議論することができます。従来、暗号技術者は「80ビット」、つまり2を使用してきました。80制限として「簡単な操作」。ここでの「単純な操作」とは、小さなメッセージに対する基礎となるハッシュ関数(たとえば、SHA-256)の呼び出しとして理解されます。実際には、数千の32ビットまたは64ビットの算術演算が含まれます。このレベルはまだかなりうまくいきます。公開された最大の比較可能な取り組みは、64ビットのRC5キーの解読であり、72ビットの取り組みが進行中ですが、まだ完了に近づいていません( このページ を参照)。一方、この80ビットの制限は20年前に既に使用されており(これは、160ビットの出力を持つSHA-1、または160ビットのサブグループを持つDSA署名を意味するこの制限です)、そのときから技術は向上しています(その議論で通常引用されるエントリーポイントについては ムーアの法則 を参照してください)。

今日では、「128ビット」が現在および次の数十年間の「安全限界」として使用されています。実際、これには大きな安全マージンが含まれますが、128は2の累乗であるため、審美的な魅力が非常に高くなります(暗号学者がバイナリではなく10進数を使用した場合、100ビットで止まっていたでしょう)。

ただし、実際には、反復処理でそのレベルに到達することはありません。現実的には、通常の人間のユーザーが30ビット程度のエントロピーを持つパスワードを持っていることを期待できます。もっと楽観的になります。同じユーザーは忍耐力がほとんどないことが知られています(あなたは明らかに20秒待つ準備ができていますが、ほとんどの人は辛抱強くありません)。したがって、あなたはrが数百万で数えられることを期待するかもしれません。おおよそ、250、つまり、従来の80ビットの壊れにくい制限よりも10億倍簡単です。これは2つの結論につながります。

  1. 反復回数が多いと遅延が大きくなるため、ユーザー(自分を含む)が許容できる限り多くの反復を使用する必要があります。アンブレイカビリティの制限に達する前に、ユーザーの忍耐力が不足します。

  2. パスワードエントロピーを増やすことは常に優れています。 「正しい馬」方式では、パスワードを覚えるのは難しくありませんが、通常の方式(公開されていた44ビット)よりもはるかに優れたエントロピーを提供します。

5
Tom Leek

"誰かがそれをクラックしたくて、宇宙でずっと(そして数回以上)持っていた場合、結果のハッシュまたは可能な限りASCII元のパスフレーズは? "

それはハッシュ関数の出力幅に依存します。出力が非常に低い32ビットであり、「真のパスフレーズ」(何が本当ですか?)に64ビットのエントロピーがあるとします。次に、32ビットを使用すると、クリアテキストもわかっていれば、クラックにかかる時間が短くなります。最初のものは約2 ^ 32の復号化を必要とし、2つ目は異なるが2 ^ 64を必要とする

長いパスフレーズは、「すべてのASCII for the original passphrase)」を正常に試行しても攻撃できません。代わりに、辞書ベースの攻撃が使用されます。したがって、平均回復時間の計算は、試行したものとは異なりますすべての文字。

なぜ成功しないのですか?たとえば、28文字の小文字からなる5ワードのパスフレーズを考えてみましょう。ばかばかしい総当たり方式では、最大で26 ^ 28 = 10 ^ 40の組み合わせをテストする必要があります。

大幅な遅延の代わりに、より長いパスフレーズを取ることを検討しましたか?係数200万は、Diceware辞書を使用する場合、約2ワード余分にかかります。各単語は約12.9ビットを提供します。 を参照してください実際に知る必要のないオプションのもの

1
Dick99999