web-dev-qa-db-ja.com

ムーアの法則をパスワードクラッキングの推定にどのように組み込むことができますか?

ムーアの法則を非常に長いパスワードクラッキングの見積もりにどのように組み込むのでしょうか。

大文字と小文字が混在した12文字のパスワードがあるとします。つまり、a-zA-Z0-9などです。このようなパスワードのキースペースは約3.2x10です。21

今、私は現在3.0x10のレートでハッシュを計算できるとしましょう9 (30億)秒あたりの最新のGPU。そのレートでは、同じハードウェアを使用して、33,824年でキースペース全体を検索できました。

ただし、新しいハードウェアに移行するときに移行できる場合、この数値は大幅に少なくなる可能性があります。

次のように仮定します。

  • トランジスタは2年ごとに2倍に数えます。
  • ハッシュ計算速度は、トランジスタ数に正比例します。
  • ハッシュ計算速度は他の制約(メモリ帯域幅など)の制約を受けません
  • トランジスタ数に上限はありません。
  • すぐに新しいハードウェアに移行できます。
  • 総分解時間の絶対的な下限を探しています。

ハッシュをクラックするのにかかる時間を計算するにはどうしたらよいでしょうか?幾何学的な進行を表す数式はありますか?

9
Polynomial

大幅に少なくなります。私はこのように再帰関係を設定するだけです:

A(n)= A(n-1)-C * 2 ^(N-1)およびA(0) =キースペースのサイズ、 62 ^ 12

最初の年を計算したハッシュにC = 3.0 * 10 ^ 12を設定し、計算能力が毎年2倍になると仮定します。

これをwolfram alphaにプラグインすると、再帰関係のこの関数ソリューションが得られます。

再発関係...

f(x)〜= 3.22627x10 ^ 21-3.0x10 ^ 12 * 2 ^ x

解決f(x) = 0 for x:

x = lg(3.22627x10 ^ 21/3.0x10 ^ 12)ここで、lgは対数2です

x〜= 30.00226年

30年でひび割れましたが、それは大量のシリコンであり、無駄な作業はありません。新しいハードウェアを停止せずに実行中のプログラムにシームレスに統合する方法が必要になります。


説明:

つまり、元のキースペースサイズは62 ^ 12で、どういうわけかムーアの法則を組み込むことができる仮想マシンがあります。

私の元の数学は少しずれていました。何らかの理由で、1年の計算に3.0 x 10 ^ 9 * 1000 = 3.0 x 10 ^ 12を使用しましたが、3.0 x 10 ^ 9 * 3600(秒/時間)* 24(時間/日)* 365(日/年)。とにかく、それはムーアの法則に従って毎年倍増する私たちの初期速度です。説明の一貫性を保つために、元の間違いはそのままにしておきます。

したがって、1年目には、必要な最大ハッシュ1.0x62 ^ 12の3.0x10 ^ 12ハッシュを実行します(最悪のシナリオを想定)。 2年目にはムーアの法則が適用され、2年目には6.0x10 ^ 12のハッシュが実行されます。これにより、これまでに計算された累積で9.0x10 ^ 12のハッシュが得られます。私たちが残したハッシュは、ハッシュの総数から減算することで見つかります。見つけるハッシュがなくなるまでプログラムを実行します。

A(N) = A(N-1) - C * 2^(N-1)

A(N)は、今年後に残っているハッシュの数です

A(N-1)は、今年以前に残っていたハッシュの数でした

Cは初速度

Nは年の数(最初、2番目、3番目など)です。

したがって、毎年速度は2倍になり、これは方程式の2 ^(N-1)の部分です。 Cは最初の年の初速度なので、C * 2 ^ 0 = C * 1 = Cになります。2年目には速度が2倍になり、2 * Cになります。3年目には速度が最初の2回からの2倍なので、Nは3なので、2 * 2 * C = 2 ^ 2 * C = 2 ^(N-1)* Cになります。これにより、計算するハッシュの数の反復関係が形成されます。

Combinatoricsブックを使用すると、再帰関係を生成関数に変換できます。あるいは、wolfram alphaがあなたのためにそれをやってくれるかもしれません。あなたが私のようで、生成関数を見つけることができても、7年前のその数学クラス以来、それらを見つける方法を忘れていた場合。

とにかく、xの関数を取得します。ここで、xはまだ繰り返される年です。 f(x)は、計算するために残っているハッシュの数です。残りが0になったときに完了です。したがって、f(x) for x f(x) = 0の場合。最後の部分は代数です。

私はここから外れているかもしれませんが、それは私には理にかなっています:)

5
Peter Smith

I could前提条件を前提に計算を行いますが、前提条件が無効であり、問​​題のステートメントに重要なコンテキストがないため、結果の実用性はほとんどありません。仮定を疑わずにここで数学を行うことは、「球形の牛を仮定する...」で始まる物理学のジョークの1つに似ています。

たとえば、トランジスタ数が指数関数的に無期限に増加することを期待することは合理的ではありません。消費電力はトランジスタ数に比例して変化するため、遅かれ早かれその正面でレンガの壁にぶつかることになります。一般に、電力は最近のCPUの主な制限要因の1つです。 30年にわたる指数曲線の影響を予測することは、電力の壁を無視するため、少しばかげています。

第2に、30年間安全性を維持する必要があるパスワードを持つことはまれです。ほとんどの場合、30年間安全なパスワードを選択するのではなく、頻繁にパスワードを変更することをお勧めします。

第3に、大文字と小文字が混在する12文字の真にランダムなパスワードについて話しているとき、パスワードクラッキングがシステムの最も弱いリンクである可能性は低いです。攻撃者がセキュリティを破ることができる簡単な方法はほぼ確実にあります。

だから私はあなたの仮定の下で数学的な計算を完全に行うことができますが、それをするつもりはありません。それは数学のマスターベーションの練習になるでしょう。誤解しないでください-私はそれ自体のために数学を楽しんでいます-しかし、この場合、結果は誤解を招くでしょう。

要するに、私の答えは、あなたは間違った質問をしているということです。本当にランダムな12文字のパスワードは、予見可能な将来には十分すぎるほどです。パスワードがそのように強力な場合は、パスワードの解読について心配するのをやめ、他の脅威からの防御にエネルギーを費やしてください。

2
D.W.

攻撃者の計算能力が時間とともに指数関数的に表現できると仮定します。

p = a・ebt

ここで、tは、攻撃者がパスワードの試行を開始する時刻(t = 0です。 )、aおよびbは2つの定数であり、pは、「パスワードの時間単位あたりの試行回数」で表される検出力の尺度であり、その後、攻撃者が長期間にわたって調査したパスワードのスペースのサイズ[〜#〜] t [〜#〜]は:

S = \int_{0}^{T} p·dt = \frac{a}{b}(e^{bT} - 1)

ムーアの法則 多かれ少なかれ、指数ベースの式が有効なモデルであることを意味します-いくつかの制限内で。ムーアの法則の楽観的な表現は、3年間でトランジスタ密度が4倍になり、クロック周波数が一定の予算で2倍になったということです。同じコストで、4倍のトランジスタがあり、回路を2倍速く実行できます。これは、b = 0.693年の逆数(2の対数は毎年倍増し、時間を表すt (年単位)およびaは、攻撃者が試行できるパスワードの数です今すぐ彼の年間予算(たとえば、a = 3×1017単純なソルトMD5ハッシュと数千ドルの予算の場合のように、攻撃者が100億/秒で開始する場合、パスワード/年。

上記の計算は、あまり現実的ではない次のプロパティを想定しています。

  • 攻撃者は更新可能な年間予算を持っており、定期的なハードウェア更新を実行できます。
  • 古いハードウェアから新しいハードウェアへの変換は何も費用がかかりません。これは、ソフトウェアがツリー上で成長することを宣言するのと同じであり、バスケットの下でブランチの下を歩くだけで済みます。
  • 攻撃者はムーアの法則に従うことができます。パスワードクラッキングは非常に並行性が高くなりますが、これでもFPGAで動作する必要があります。 CPUやGPUなどのコンシューマ製品には、ムーアの法則の全力を得ることができない他の制約があります(特に、メモリレイテンシはスケーリングされません) 。
  • ムーアの法則が成り立つ。ゴードンムーア自身は、1997年に、バラバラになる前に約20年、つまり2017年頃までにそれを与えました-それはたった4年先です。ムーアの法則は、少なくとも理論的には1970年代に表現されてきた最適化のアイデアのストックの段階的な適用に基づいて機能します。その在庫は急速に不足しています...そして実際、回路(ASICでさえ)のクロック周波数が10 GHz未満でいくらか停滞していることがわかります。
  • エネルギー消費は無視できます。これが trueではない であることがわかりました。現在、エネルギーは大きな計算の主要な制約です(マシンへの供給だけでなく、すべてのエネルギーが熱になるため、冷却も)。 理論上の計算能力 の最も近い境界でもあります。

したがって、上記で示したような式を使用できますが、それから得られる結果はあまり実用的ではありません。攻撃者がパスワードを解読するために毎年ハードウェアを費やすことに十分に熱心である場合、その人は確かにArchの敵です。あなたの膝蓋骨を破壊するために2、3人の凶悪犯を雇うことは非常に安く、より効果的であると彼が気づくのは間もなくです。

1
Thomas Pornin

最初に、あなたの質問に本当の答えはありませんが、私の直感はイエスです。また、かなり具体的なシナリオから同様の式を導き出すために取り組んできましたが、仮説を立証できれば、実際にあなたの質問に完全に答えることが一般化されると思います。

私は、厳格で非現実的な仮説シナリオからの結果の「実用的な意義」に関心を持つ人々から同様の抵抗を受けました。無限のリソースの懸念は有効ですが、問題のより正確な分析のために、ロックの法則を数学的に組み込むことができます。それでも、攻撃者が利用できるリソースを厳密に制限することは、実際に攻撃者が利用できるリソースに厳格な制限を設けることは安全ではないと私は思います。たとえば、任意の時点で、盗まれたクレジットカードにいくつでもアクセスできます。

18か月ごとに処理能力が2倍になるというより正確な仮定として、私は教えられたものを使用しました。

つまり、時刻0の処理能力がP(O)の場合、18か月で使用可能な処理能力はP(0)* 2 ^ 1.5になります。 (3年後には、処理能力が正確に4倍になったことは注目に値します)。

スプレッドシートを使用して行った観察結果を数学的に証明するのに苦労していますが、数式にはかなり自信があります。最初の処理速度とは何の関係もないという結果を信頼するのはあまりにも明白であることがわかりました。この時点までに何年かかるかに関係なく、パスワードの合計スペースの1/4をクラックした後、 3年以内に残り3/4!処理能力は3年で4倍になるため、これはもっともらしいようですが、観察に大きな影響を与えると思われるため、初期の処理能力を決定するのは当然のことです。

キースペースと初期入力を試してみましたが、まだスプレッドシートを壊すことができません。

毎年計算すると、処理能力が2 ^(2/3)増加して、離散的な繰り返し関係が生まれると計算しました。

シナリオ的には、これは攻撃者が時間を失うことなく現在の処理能力に毎年アップグレードすることを意味します。はい、それは絶対的な観点から非現実的ですが、私は転送時間の相対的な重要性が処理能力とキースペースが増加するにつれて0に向かう傾向があるという仮定の下で作業しています。そして、これは数学的に証明できるドーナツにドルを賭けるでしょう。

だから関係は

一定のP(0)が与えられた場合、P(1) = P(0)* 2 ^(2/3)。P(2) = = P(1) * 2 ^(2/3)= P(0) * 2 ^(2/3)* 2 ^(2/3) 。

P(i) = P(0) * 2 ^(2i/3)であることがすぐにわかります。

したがって、P(i)は、i年の初めに利用可能な処理能力を使用してi年にクラックされたパスワードの数として定義しました。

つまり、P(n) = P(0)* 2((2 * 0)/ 3)+ P(0)* 2((2 * 1)/ 3)+ P(0)* 2((2 * 2)/ 3)+ ... P(0)2((2(n-1))/ 3)+ P(0)* 2 ((2 * n)/ 3)。

またはP(0)(1 + 2 ^(2/3)+ 2 ^(4/3)+ ... + 2 ^((n-1)/ 3)+ 2 ^(2n/3))

これで、パスワードスペースと追加スペースをクラックするのにかかる時間の関係を確認できます。

128ビットのキースペースが100年でクラックされる可能性があることがわかったので、さらに2ビット(合計130ビット)を追加すると、キースペースが4倍になると判断しました。

したがって、元のプロセス速度や1年間にクラックされたキーに関係なく、100年後には128ビットのスペース全体がクラックされ、そのスペースは新しいパスワードスペースの1/4であることがわかります。したがって、100年後には全スペースの1/4をクラックし、残りの3/4をクラックするまでにさらに何年かかるかを知りたいのです。

N年から始めて、次のように表現できる空間全体をクラックしましょう。

P(n)= P(0)(1 + 2 ^(2/3)+ 2 ^(4/3)+ ... + 2 ^((n-1)/ 3)+ 2 ^(2n/3 ))=スペースの100%。

そして、前の年(n-1)には、

P(n-1) = P(0)(1 + 2^(2/3) + 2^(4/3) + ... + 2^((n-1)/3))

キースペース全体のうち、n-1年までにクラックしたのはどの部分ですか?

P(0)(1 + 2^(2/3) + 2^(4/3) + ... + 2^((n-1)/3))

P(0)(1 + 2^(2/3) + 2^(4/3) + ... + 2^((n-1)/3) + 2^(2n/3))

そして

P(n-3)

P(n)

=

P(0)(1 + 2^(2/3) + 2^(4/3) + ... + 2^((n-3)/3))

P(0)(1 + 2^(2/3) + 2^(4/3) + ... + 2^((n-1)/3) + 2^(2n/3))

そして、ここで私の算術と帰納と数学の基礎が私を失敗させ続け、私は正式な証明に困惑しますが、私の観察では、これはかなり大きなサイズのnに対して1/4に簡略化する必要があることを示唆しています。

私の興味は、いくぶん直感的ではあるが驚くべき結論を説明するための数学的証明を決定することです。

鉱山は、クラッカーが特定のスペースで可能なすべてのポーンされたハッシュを完全に計算するのにかかる時間に関して、パスワードスペースの固定拡張が実際に追加する最大の追加のセキュリティを決定するのに役立つ質問です。

さまざまな変数について、現実的ではない多くの仮定を受け入れて、数学的に証明できる厳密な関係を構築し、そこから、パスワードの長さの追加文字の追加の利点に関する仮定が最初から現実的であるかどうかを判断する必要があります。

私はテスト問題を与えられました:クラッカーが128文字のバイナリアルファベットから定義されたキースペース内のすべてのハッシュを計算できる場合、130ビットのバイナリキースペースをクラックするのにどのくらいかかりますか?

「正しい」答えは400年でした。ムーアの法則を考慮に入れると、質問の定義が不十分だったと私は主張しました。キースペースが4倍になったとしても(2つのビットを追加すると、すべてのオプションが有効なパスワードであるとすると、4倍のオプションが作成されます)、解読にかかる時間は短くなります。 4倍よりも長い。

「大幅に」少なくすることは確かに正確ですが、正式な証明でどれほど少ないかを定義できなかった後、スプレッドシートを使用して、証明へのアプローチを導くのに役立つハードデータを生成しました。

0
OffByOne