web-dev-qa-db-ja.com

レインボーテーブルのサイズの見積もり

レインボーテーブルとは何ですか?どのように使用されますか? レインボーテーブルとは何か、どのように使用されるかについて、非常に正確な回答を提供します。私はいつもハッシュテーブルとレインボーテーブルを混乱させていました。私の質問は、レインボーテーブルのサイズについてです。これで、ハッシュテーブルの場合、ファイルのサイズは次のようになります。

let n = ( size of the input plain text file )(プレーンテキストごとに1行と仮定)

so size(hash table) = n + (bytes in hash)*h + n ( for separation) Bytes

一方、レインボーテーブルのサイズを推定する同様のメカニズムはありますか? Rainbowテーブルを生成するために使用されるツールには通常、それらのサイズの見積もりがあるため、確かにあります。

与えられたレインボーテーブルのサイズはどのように見積もられますか?

プレーンテキストの文字セット、チェーン長、最小および最大長。

これにより、Rainbowテーブルがどのように、そしてなぜ優れているかをよりよく理解できます。

15
sudhacker

RainbowCrack はおそらくRainbowテーブルの生成に使用するものです。レインボーテーブルは常にキースペース上で生成されます。たとえば、5〜9バイトの英数字と、チェーンの長さと数は、レートと結果のテーブルのサイズ。入力ファイルがある場合、それはRainbowテーブルではなく、他のルックアップテーブルです。レインボーテーブルは、すっきりしたプロパティを持つ特別なタイプのルックアップテーブルです。ハッシュ関数のサイズ(sha256sha512)は、レインボーテーブルのサイズに影響しません。

Rainbowテーブルのサイズを計算するために浮かんでいるいくつかのmatlabスクリプトがあります このサイトは使いやすい

9
rook

レインボーテーブルは、平均チェーン長によって特徴付けられます。これは、テーブル構築時に選択されるパラメーターです。それをtと呼びましょう。

テーブルが約[〜#〜] n [〜#〜]仮パスワードをカバーする場合、約N/t「エントリ」。エントリは「チェーンエンド」です。チェーンエンドのエンコードされたサイズは多くの詳細に依存しますが、通常は整数値を保持できるフィールドよりも大きいか、やや大きくなります[〜#〜] n [〜 #〜]。つまり、[〜#〜] n [〜#〜]が2に近い場合40、各エントリには少なくとも5バイトが必要ですが、おそらくそれより少し多く、たとえば8バイトです。

ストレージコストを節約するには、tをできるだけ大きくする必要があります。ただし、他のコストが発生するため、好きなだけ大きくすることはできません。簡単に言うと:

  • テーブル構築コストは、ハッシュ関数の約1.7 * N評価です。
  • ストレージコストN/tチェーン終了です。
  • CPUコスト攻撃時t2ハッシュ関数の評価。
  • 攻撃時のlookup costは、テーブル内の約tランダムアクセスです。

最新のハードディスクでは、1秒あたり約100回のルックアップが可能であるため、攻撃時間を1分未満に維持したい場合、tを6000より大きくすることはできません。 tSSD(1秒あたり数千回のランダムアクセスが可能)を使用する場合、SSDは非常に高価であるため、ストレージコストが増加します。また、tが高くなりすぎると、2次CPUコストが非常に高くなる可能性があります。

Rainbowテーブル、以前に存在していたもの(Hellmanの時間とメモリのトレードオフ)と、Hellman、Oechslin、Rivest、Bihamなどのアイデアを組み合わせた最新のバリアントとの違いその他は、CPUと検索のコストで最大2の要素です。

4
Thomas Pornin