公開鍵暗号について私が読んだ説明では、2 つの非常に大きな素数を掛け合わせることで大きな数が得られると言われています。大きな素数の積を因数分解することは、ほとんど不可能なほど時間がかかるため、安全です。
これは、レインボー テーブルで簡単に解決できる問題のようです。使用される素数のおおよそのサイズが分かっていて、それらが 2 つあることがわかっている場合は、すぐにレインボー テーブルを作成できます。それは非常に大きなテーブルになりますが、それは実行でき、タスクはハードウェア全体で並列化できます。
レインボー テーブルが、大きな素数の乗算に基づいて公開鍵暗号を打ち負かす効果的な方法ではないのはなぜですか?
免責事項: 明らかに、何万人ものクレイジーでスマートなセキュリティ意識の高い人々が、私が午後に考えたことを何十年も見逃していたわけではありません。単純化された素人の説明を読んでいたため(例:2つ以上の数字が使用されている場合)、これを誤解していると思いますが、知識のギャップがどこにあるかを知るにはまだ十分に知りません.
編集: 「レインボー テーブル」がルックアップ テーブルで事前に計算されたハッシュを使用することに関連していることは知っていますが、上記はレインボー テーブル攻撃のように聞こえるため、ここではこの用語を使用しています。
編集 2:回答で述べたように、すべての素数だけを保存する方法はなく、すべての積を保存する方法はありません。
- このサイトによると、512 ビットの素数は、((2^511) * 1) / (512 log(2)) = 4.35 × 10 151ほど多く存在します。
- 太陽の質量は 2 × 10 30 kg または 2 × 10 33 g
- これは、太陽 1 グラムあたり2.17 × 10 124個の素数です。
- 数量 キロバイトに収まる 512 ビットの数値: 1 kb = 1024 バイト = 8192 ビット / 512 = 16
- これは 1 テラバイトに収まります: 16*1024*1024*1024 = 1.72 × 10 10
- ペタバイト: 16*1024*1024*1024*1024 = 1.72 × 10 13
- エクサバイト: 16*1024*1024*1024*1024*1024 = 1.72 × 10 16
1 エクサバイトが 1 グラムの重さであったとしても、これらすべての数値を太陽の質量のハード ドライブに収めるのに必要な2.17 × 10 124にはほど遠いです。