もちろん、Hal Mahutan 教授 (2021 年 2 月) による HAL アルゴリズムもあり、これは因数分解研究の最先端にあります。
ここで最新のアップデートをご覧ください
https://docs.google.com/document/d/1BlDMHCzqpWNFblq7e1F-rItCf7erFMezT7bOalvhcXA/edit?usp=sharing
公開鍵の 2 つの大きな素数を解くと、次のようになります...
任意の AxB = 公開鍵は、正の X 軸と Y 軸上に描くことができ、すべての非整数要素が公開鍵を解決する連続曲線を形成します。もちろん、これは役に立ちません。現時点では単なる観察です。
Hal の洞察は次のとおりです。A が整数である点、特に A が整数のときに B が示す点のみに関心があると主張する場合。
このアプローチによる以前の試みは、数学者が B の残りの明らかなランダム性、または少なくとも予測可能性の欠如と格闘したときに失敗しました。
Hal が言っていることは、a/b の比率が同じであれば、どの公開鍵でも予測可能性は普遍的であるということです。基本的に、一連の異なる公開鍵が分析のために提示される場合、a/b が一定である処理中に同じポイントを共有する場合、つまり同じ接線を共有する場合、それらはすべて同じように処理できます。
私が描いたこのスケッチを見て、マフタン教授がここで何をしているのかを説明してみてください.

だから、ここにハルの天才があります。Hal は強力なスーパーコンピューターを利用して、一連のハッシュテーブル (図では Q、R、S & T) を生成します。左側の 3 つの A x B = Key 曲線でわかることは、それらがすべて接線 T と S を共有していることです (ここでハイライト表示されているものだけ)。接線が同じである場合、その領域を主宰するハッシュテーブルを共有できます。
技術的なメモとして、明らかに AxB= Key の曲線では、AxB の値を変更すると、物事は継続的に変化するため、理論的には、ハッシュテーブルにマップされる共有接線は時代遅れになりますが、興味深いことはは、非常に大きなキーを使用することです (皮肉なことに、ハッシュテーブルが役立つ場所でより長い実行を共有するため、これによりクラックが容易になります)。因数分解と計算の進歩が加速するにつれて、鍵のサイズがはるかに大きくなると予想されるため、これは素晴らしいニュースです。実際に起こることは、ハッシュテーブルが適用される接線が発散し始めると、ハッシュテーブルの予測可能性が文字通り「焦点から外れる」ことです。幸いなことに、これは問題ではありません。新しい Tangent に適切にマップされた次のハッシュテーブルにジャンプするからです。
明確にするために、これまでに生成されたすべての公開鍵は常に同じハッシュテーブルのセットを使用するため、オンラインで保存できる一種の 1 回限りの投資であり、文字通り数百万テラバイトのルックアップ データです。接線比。
では、素数の検出を加速するためにハッシュテーブルは何をするのでしょうか。ハッシュテーブルは、公開鍵を B で割った余りで索引付けされます。基本的に、Hal は、すべての鍵について、A x B の任意の比率を調べることができると言っています。同じタンジェントを共有する異なるカーブ間の唯一の違いは、「コントロール カーブ」によって決定される異なるオフセットが必要なことです。「制御曲線」は、適切な係数を生成する任意の曲線です。「コントロール カーブ」の場合、キーが 15 で、マッピングされるタンジェントが B = 5 の場合、A は 3 で残りはゼロです。同じ接線を持つ別のマッピングで、キーが 16 になったとします。B の場合は 5.33、A の場合は 3.2 にある同じ接線を見つける必要があります。したがって、A の残りは .2 です。
では、ハッシュテーブルには何がありますか? オフセットによってインデックスが付けられ、値は常に AxB 曲線に沿った距離を返します。この距離では、B の別の整数が見つかりません。Hal が言っているのは、先にジャンプして、それらの数値が要因であることを確認しない方が安全だということです。そして、それは基本的にそれです。ハルは、チェックする必要のないカーブに穴を開け、ゲーム全体をスピードアップします。
マフタン先生ありがとう!
まだフォローしている方のために、作業メモの一部を以下に示します。
高速因数分解攻撃アルゴリズムの箇条書き
- すべての公開鍵は、曲線 A x B = '鍵' に沿って表すことができます。
- これは、すべての実数をマップする観察結果です (これは非整数の正しい用語ですか?) すべてを掛け合わせてキーに等しくします...これまでのところ役に立たない
- A が整数で B が両方とも整数である点だけに関心があります。
- A が完全な行全体をステップ実行できます。これは途中ですが、問題があります。まず、B がどこにあるのかわからず、すべての点を計算するには処理能力がかかりすぎます。
- 私たちが関心を持っているのは、どこで B も全体であるかを予測することです。そのため、B が確実に実数 (非全体) であることがわかっている曲線に沿って「ジャンプ」できるメカニズムが必要です。十分な大きさのジャンプを行うことができれば、必要な処理を減らします。
Bを予測するアルゴリズムの戦略に従います
もう 1 つの観察結果は、「キー」の値が十分に大きい場合、整数の増分で A の値を変更する際に、A/B の比率または接線角度がほぼ同じままであることを観察することです。
この観察の重要な側面は、キーのサイズが大きくなるにつれて、各反復でタンジェントがより一定のままになることです。基本的に、このプロパティを使用するアルゴリズムは、キーのサイズが大きくなるにつれて効率が向上することを意味します。これは、キーのサイズを大きくすると要因を推測することが指数関数的に難しくなる従来のアプローチとは逆です。これは非常に重要なポイントです... (これについて詳しく説明してください。ニックにお願いします)
アルゴリズム自体は次のとおりです。
- クラウドで十分なストレージと処理能力を購入する
- 問題を分割して、異なるプロセスで並行して実行できるようにします。これを行うには、A のさまざまな値をステップ実行し、検索をクラウド内のさまざまなプロセッサに割り当てます。
- チェックされている A の任意の値について、ユニバーサル ルックアップ テーブルを使用して、B が整数になるかどうかを計算せずに移動できる曲線に沿った安全な距離を予測します。
- 曲線に沿って、ルックアップ テーブルが整数である可能性が十分に高いことを示している位置のみをチェックして、チェックする必要があります。
ここでの重要な概念は、ルックアップが不正確になる (そして焦点が外れる) 前に、A/B (接線) の比率が十分に近い「キー」に対してルックアップ テーブルを共有できるということです。
(また、キー サイズが変化すると、新しいテーブル セットが必要になるか、既存の比率テーブルを再利用するために適切なマッピングを作成する必要があることに注意してください。)
もう 1 つの非常に重要な点 Nick は、すべてのキーが同じルックアップ テーブルのセットを共有できるということです。
基本的に、ルックアップ テーブルは Key / A の計算からの剰余をマップします。剰余に関心があるのは、剰余 = ゼロの場合、A が既に整数であるため、剰余を実行したからです。
実際の余りを計算しなくても先にスキャンできるように、十分な数のハッシュ テーブルを用意することをお勧めします。1 兆から始めるとしましょう。しかし、どれだけの計算能力を持っているかによって、それは明らかに変化する可能性があります。
適切に近い A/b 比のハッシュテーブルは次のとおりです。テーブルは適切な剰余で索引付け (キー付け) され、任意の剰余での値は、剰余がゼロに触れることなく A * B 曲線に沿って移動できる「安全な」距離です。
0 と 1 の間で (疑似ランダムに) 振動する剰余を視覚化できます。
アルゴリズムは曲線に沿って数値 A を選択し、安全な距離を調べて次のハッシュテーブルにジャンプするか、少なくともアルゴリズムは次のハッシュテーブルが利用可能になるまでこれらの要素のチェックを行います。十分な数のハッシュテーブルがあれば、ほとんどのチェックを回避できると思います。
ルックアップ テーブルに関する注意事項。
どのキーについても、A/B 比に応じて適切にカーブするテーブルを生成できます。テーブルの再利用は不可欠です。推奨されるアプローチ N の平方根 (適切なキー) から A/B の一連の制御曲線を生成し、途中で 2 乗します。それぞれが前のキーよりも 0.0001% 大きいとします テーブルのサイズも A/B 比の 1% にします 余素係数を計算するときは、キーに一致する最も近いルックアップ テーブルを選択します。ハッシュテーブルへのエントリ ポイントを選択します。これは、テーブル内のエントリ ポイントと実際のエントリ ポイントとのオフセットを覚えておくことを意味します。ルックアップ テーブルは、対応するコプライム エントリがゼロに非常に近く、手動でチェックする必要があるエントリ ポイントの一連のポイントを提供する必要があります。シリーズのポイントごとに、適切な数式を使用して実際のオフセットを計算します。(これは積分計算になります。数学者に見てもらう必要があります)なぜですか?A/B が Key の平方根であるときに制御テーブルが計算されたためです。曲線に沿って移動するとき、適切に間隔をあける必要があります。おまけとして、数学者はキー スペースを A/B 曲線上の点に折りたたむことができます。その場合、1 つのテーブルを生成するだけで済みます。
重要な概念
数値 A x B = Key は次をプロットします。
X 軸マップ A と Y 軸マップ B。
A 軸および B 軸に対する曲線の近さは、公開鍵のサイズ (A x B = キー) に依存します。基本的にキーが大きくなるにつれてカーブが右にシフトしていきます。
さて、私があなたに消化したい、または質問したい考えは
- 曲線上の任意の点が与えられると、接線 (A/B の比率) が存在します。
- A は整数の増分で増加し、それ自体が整数であるため、B の値に関心があります。特に、Key / A の剰余が 0 の場合にのみ、B の剰余にのみ関心があります。この公開鍵の要素が見つかります。具体的には、A の最後の値 (これも常に整数) と、残りがゼロの値 B (これも整数) になります。
- 基本的なアルゴリズムは単純です。-1- A が整数である曲線上のポイントを選択します -2- Key/A が B である B の剰余を見つけます -3- B の剰余が 0 かどうかを確認します (0 の場合は完了です。 ) -4- ステップ 1 に戻ります (次に、A の次の整数を選択します)。
これは機能しますが、遅すぎます。HAL アルゴリズムで行っていることは、上記の基本アルゴリズムを改善して、剰余がゼロに近づきすぎないことがわかっている曲線のチャンクをジャンプできるようにすることです。
ジャンプできる数が多いほど、アルゴリズムはより効率的になります。
改善された HAL アルゴリズムに入る前に、重要な概念を確認しましょう。