Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
Quantum-Algorithm-for-Elliptic-Curve-Discrete-Logarithms-with-Space-Efficient-Point-Addition | Kitploit
ツール/GitHubGitHub/zerowang030221/quantum-algorithm-for-elliptic-curve-discrete-logarithms-with-space-efficient-point-addition
静的分析コード分析暗号化バイナリ解析論文と研究学習と教育
GitHubzerowang030221/quantum-algorithm-for-elliptic-curve-discrete-logarithms-with-space-efficient-point-addition

Quantum-Algorithm-for-Elliptic-Curve-Discrete-Logarithms-with-Space-Efficient-Point-Addition

リポジトリを見る

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有
14313日前未レビュー

楕円曲線離散対数に対する空間効率的な点加算を備えた量子アルゴリズム

このリポジトリには、楕円曲線離散対数環境で使用される空間効率的な量子モジュラ逆元計算回路とアフィン点加算回路のリソース見積もりのためのQiskitコードが含まれています。

現在のコードベースは、次の3つのワークフローを中心としています:

  1. モジュラ逆元計算回路のチャンク単位の再帰的カウント;
  2. 回路の任意指定による局所NCTテンプレート最適化;
  3. ラップされたアフィン点加算回路のコンパイル済みブロック単位のリソース見積もり。

リポジトリ構造

root@kitploit:~
.
├── README.md
│
├── eea_model/: original classical EEA reference implementation used for algorithm prototyping and correctness validation.
│
├── run_eea_s835_fastdual_recursive_chunks_checkpoint.py
├── run_eea_s835_fastdual_recursive_chunks_checkpoint_nctopt.py
├── count_s835_fastdual_wrapped_point_addition_blocks_compiled.py
│
├── eea_circuit.py
├── eea_circuit_s835_fastdual.py
├── eea_circuit_s835_lowaux.py
├── eea_circuit_updated.py
├── under1000_eea_shared_s835_fastdual_wrapped.py
├── under1000_modular_arithmetic_base.py
│
├── point_addition_fig14_s835_fastdual_wrapped_quadratic.py
├── quadratic_fig15_inplace_s835_fastdual_wrapped.py
├── quadratic_gidney_arithmetic.py
├── quadratic_lazy_instruction.py
├── quadratic_modular_arithmetic.py
├── quadratic_squ_minus.py
│
├── ccx_recursive_block_counter.py
├── nct_template_segment_optimizer.py
│
├── test_eea_strict_main.py
└── test_point_addition_strict_main.py

メインエントリスクリプト

  • run_eea_s835_fastdual_recursive_chunks_checkpoint.py
    EEAアルゴリズム3のステップを、チェックポイント化されたチャンク単位で再帰的にカウントします。

  • run_eea_s835_fastdual_recursive_chunks_checkpoint_nctopt.py
    同じEEAカウントワークフローですが、局所的なNCTテンプレート最適化を伴います。

  • count_s835_fastdual_wrapped_point_addition_blocks_compiled.py
    再利用可能なコンパイル済みサブブロックを再帰的にカウントし、繰り返される算術コンポーネントを正確な多重度で組み立てることにより、ラップされた点加算回路をカウントします。

EEAファイル

  • eea_circuit_s835_fastdual.py: 本番EEA回路の主要実装。
  • eea_circuit_s835_lowaux.py: 主要実装で使用される低補助ヘルパールーチン。
  • eea_circuit_updated.py: 共有EEAビルディングブロックと再帰的リソースカウントユーティリティ。
  • eea_circuit.py: テスト用の後方互換性ラッパー。

点加算および算術ファイル

  • point_addition_fig14_s835_fastdual_wrapped_quadratic.py: Fig.14のスケジュールに対応するラップされたアフィン点加算回路を構築します。
  • quadratic_fig15_inplace_s835_fastdual_wrapped.py: EEA、乗算、測定、リセット、およびフィードフォワード位相補正を備えたFig.15のインプレース除算およびインプレース乗算構造を構築します。
  • quadratic_modular_arithmetic.py: 点加算カウンタで使用されるモジュラ加算/減算、乗算、逆乗算、2倍化、および半減命令。
  • quadratic_gidney_arithmetic.py: 二次モジュラ算術レイヤーで使用されるGidneyスタイルの算術プリミティブ、測定およびフィードフォワードヘルパー。
  • quadratic_squ_minus.py: アフィン点加算スケジュールで使用されるスクエアマイナスブロック。
  • under1000_eea_shared_s835_fastdual_wrapped.py: 点加算回路で使用される共有EEAラッパーとヘルパー。
  • under1000_modular_arithmetic_base.py: 小さな共有モジュラ算術ユーティリティ。

カウントおよび最適化ユーティリティ

  • ccx_recursive_block_counter.py: MCX展開およびSWAP展開のポリシーを備えたQiskit回路用の再帰的カウンタ。
  • nct_template_segment_optimizer.py: {X, CX, CCX}セグメント用の局所テンプレートベースのオプティマイザ。

要件

推奨環境:

  • Python 3.10以上
  • Qiskit

メインの依存関係を次のようにインストールします:

root@kitploit:~
python -m pip install --upgrade pip
python -m pip install qiskit

クイックスタート

テストスイートを実行します:

root@kitploit:~
python test_eea_strict_main.py
python test_point_addition_strict_main.py

より高速な点加算スモークテストを行う場合:

root@kitploit:~
python test_point_addition_strict_main.py --skip-n256 --skip-report

1. EEA再帰チャンクカウント

標準のEEAカウントエントリポイントは次のとおりです:

root@kitploit:~
python run_eea_s835_fastdual_recursive_chunks_checkpoint.py \
  --n 192 \
  --chunk-size 25 \
  --measurement-uncompute \
  --resume \
  --workdir eea_s835_fastdual_chunks25 \
  --out eea_s835_fastdual_algorithm3_recursive_chunks_n192_measurement.json

重要な引数:

  • --n: ビット幅。
  • --T-max: アルゴリズム3のステップ数の任意指定による上書き。デフォルトではeea.get_n_config(n)の値が使用されます。
  • --chunk-size: チェックポイントチャンクごとにカウントされるアルゴリズム3のステップ数。
  • --aux-size: ヘルパーキュービットプールの任意指定による上書き。省略した場合、レイアウトのヘルパーサイズが自動的に計算されます。
  • --measurement-uncompute: カウント対象のEEAブロックで測定ベースのアンコンピュテーションを有効にします。
  • --resume: --workdir内の既存の非空チャンクJSONファイルを再利用します。
  • --workdir: チャンクごとのチェックポイントファイル用ディレクトリ。
  • --out: 各チャンクの後に書き込まれる累積JSONサマリー。

スクリプトは、次のようなチャンクごとのファイルを書き込みます:

root@kitploit:~
eea_s835_fastdual_chunks25/eea_s835_fastdual_n192_T0001_0025.json

また、次のようなフィールドを含む累積出力JSONを書き込みます:

root@kitploit:~
mode
n
T_max
num_qubits
len_width
shift_width
aux_size
measurement_based
ops
chunks
elapsed_s_so_far

2. NCTテンプレート最適化を用いたEEAカウント

最適化されたカウントエントリポイントは次のとおりです:

root@kitploit:~
python run_eea_s835_fastdual_recursive_chunks_checkpoint_nctopt.py \
  --n 128 \
  --chunk-size 25 \
  --measurement-uncompute \
  --templates small-nct \
  --rounds 1 \
  --max-nct-segment-gates 40 \
  --segment-timeout-s 10 \
  --timeout-mode auto \
  --resume \
  --workdir eea_s835_fastdual_chunks_nctopt_failopen_r1_128_seg40_to10 \
  --out eea_s835_fastdual_algorithm3_recursive_chunks_n128_measurement_nctopt_failopen_r1_seg40_to10.json

このワークフローは、{X, CX, CCX}セグメントに対して局所テンプレート最適化を試みます。これは境界付きフェイルオープンカウンタとして設計されています:最適化されたステップがタイムアウトするか例外を発生させた場合、そのステップはテンプレートラウンドなしで正確にカウントされた後、チェックポイント化されるため、最終的な報告カウントは完全なままです。

標準のEEA引数に加えて有用な引数:

  • --templates {small-nct,all-nct}: テンプレートライブラリの選択。
  • --rounds: テンプレート最適化ラウンドの数。
  • --max-nct-segment-gates: テンプレート最適化に送られる可逆セグメントの最大サイズ。
  • --max-nct-segment-qubits: セグメント内のキュービットの最大数。
  • --segment-timeout-s: 個々のセグメント最適化のタイムアウト。
  • --step-timeout-s: 変更なしのカウントにフォールバックするまでのアルゴリズム3ステップ全体のタイムアウト。
  • --fallback-step-timeout-s: 正確なフォールバックカウントのタイムアウト。
  • --force: ステップ/チャンクのチェックポイントが既に存在する場合でも再計算します。
  • --ignore-policy-mismatch: 最適化ポリシーが異なる場合でも古いチェックポイントを再利用します。これは主にデバッグ用です。

最適化されたワークフローは、ステップレベルのチェックポイントを次の場所に書き込みます:

root@kitploit:~
<workdir>/steps/

また、チャンクレベルのサマリーを次の場所に書き込みます:

root@kitploit:~
<workdir>/

3. ラップされた点加算のコンパイル済みブロック単位カウント

点加算カウンタは、上記のEEAワークフローのいずれかで生成されたEEAアルゴリズム3のJSONに依存します。点加算カウンタの--n値は、EEA JSON内のnフィールドと一致する必要があります。

n=64の例:

root@kitploit:~
python run_eea_s835_fastdual_recursive_chunks_checkpoint.py \
  --n 64 \
  --chunk-size 25 \
  --measurement-uncompute \
  --resume \
  --workdir eea_s835_fastdual_chunks25_n64 \
  --out eea_s835_fastdual_algorithm3_recursive_chunks_n64_measurement.json

次に実行します:

root@kitploit:~
python count_s835_fastdual_wrapped_point_addition_blocks_compiled.py \
  --n 64 \
  --eea-steps-json eea_s835_fastdual_algorithm3_recursive_chunks_n64_measurement.json \
  --out point_addition_s835_fastdual_wrapped_blocks_compiled_counts_n64.json

最適化されたn=128のEEA出力の例:

root@kitploit:~
python count_s835_fastdual_wrapped_point_addition_blocks_compiled.py \
  --n 128 \
  --eea-steps-json eea_s835_fastdual_algorithm3_recursive_chunks_n128_measurement_nctopt_failopen_r1_seg40_to10.json \
  --out point_addition_s835_fastdual_wrapped_blocks_compiled_counts_n128.json

重要な引数:

  • --n: ビット幅。
  • --p: 法。デフォルトはsecp256k1素数。
  • --s-qubits: 共有EEA算術レジスタサイズの任意指定による上書き。
  • --point-constant {secp256k1-generator,zero,custom}: Fig.14の定数座標更新用の点定数の選択。
  • --x2、--y2: カスタム点座標。--point-constant customを使用する場合に必要です。
  • --eea-steps-json: 再帰的アルゴリズム3のEEAカウントを含むJSONファイル。
  • --allow-eea-n-mismatch: EEA JSONのnが要求された--nと異なることを許可するデバッグ専用の上書き。
  • --mcx-policy {clean-vchain,keep}: 再帰的カウント用のMCX展開ポリシー。
  • --validate-full-mul: 小さいの場合、完全な乗算/二乗の定義を再帰的にカウントし、組み立てられたブロックカウントと比較します。

出力レポートには次のものが含まれます:

root@kitploit:~
counting_mode
n
p
point_constant_kind
qiskit_width_report
eea_meta
block_summaries
raw_block_counters
key_ccx
validation
elapsed_s

点加算カウンタは、再利用可能なQiskit回路を構築し、{CCX, CX, X}基底でそれらを再帰的にカウントした後、乗算、逆乗算、インプレース除算、インプレース乗算、スクエアマイナス、およびFig.14点加算ブロック全体などのより大きな繰り返しブロックを組み立てます。


テスト

このリポジトリには、2つのプレーンなPythonテストドライバが含まれています。これらは意図的にpytest、Aer、または完全な状態ベクトルシミュレーションなしで書かれています。テストは、適切な場所でQiskit定義を再帰的に展開し、Toffoliネットワークブロックの計算基底状態をシミュレートします。

EEA厳密テスト

EEAテストは次の場所にあります:

root@kitploit:~
test_eea_strict_main.py

デフォルトのEEAスイートを次のように実行します:

root@kitploit:~
python test_eea_strict_main.py

デフォルトのスイートは以下をチェックします:

  • 実装が小さいnのエンドポイントショートカットではないこと;
  • アルゴリズム3の破線ブロックスケジュールが存在すること;
  • いくつかの小さな幅にわたるアクティブウィンドウの公式;
  • 単項反復、事前/事後シフト、位相更新、位置制御スワップ、および長さ更新ブロック;
  • 正確なステップカウントと固定T_maxの両方を使用した、デフォルト素数3, 5, 7, 11, 13, 17に対するアルゴリズム3のエンドポイント;
  • 小さなデフォルト素数3, 5, 7に対する完全なアルゴリズム1ラッパー。

便利なバリアント:

root@kitploit:~
# Fast structural + block tests only.
python test_eea_strict_main.py --skip-endpoint --skip-alg1

# Include the heavier PDF/Table-4 p=37, x=13 trace benchmark.
python test_eea_strict_main.py --table4

# Test all x values for primes above 13 as well.
python test_eea_strict_main.py --primes 3 5 7 11 13 17 --mid-all-x --verbose

点加算厳密テスト

点加算テストは次の場所にあります:

root@kitploit:~
test_point_addition_strict_main.py

デフォルトの点加算スイートを次のように実行します:

root@kitploit:~
python test_point_addition_strict_main.py

デフォルトの点加算スイートは以下をチェックします:

  • ラップされた点加算レジスタレイアウト;
  • n=256の幅の恒等式835 = 1 + 3*256 + 66;
  • Fig.14/Fig.15のトップレベル操作順序;
  • H、measure、reset、古典制御Z、およびswap操作を含む明示的な動的回路構造;
  • 小さな法に対するコンパイル済み算術サブブロックの組み立て;
  • 合成アルゴリズム3のJSONを使用した小さな統合点加算カウンタレポート。これにより、大規模なEEAカウントを実行せずにレポートパスがテストされます。

大素数回帰マトリックスは、12ビットから512ビットの素数体にわたる、体のビット幅nと素数法pの代表的なペアをカバーしています。テストされるインスタンスには、例えばn=16, p=65521、n=32, p=4294967291、n=256でのsecp256k1素数、およびn=128, 160, 192, 224, 384, 512での代表的な素数が含まれます。

各(n,p)ペアについて、テストには境界、対称、ランダム、および比較的長いEEAトレースが含まれます。完全なコンパイル済み算術の組み立ては、選択された中程度の幅のインスタンスに対してのみ実行され、より大きな(n,p)ペアは回路構築、レジスタレイアウト、スケジューリング、および再帰的リソースカウントパスの検証に使用されます。

便利なバリアント:

root@kitploit:~
# Skip the tiny integrated report and only check construction/schedule/assembly.
python test_point_addition_strict_main.py --skip-report

# Fast smoke test that also skips the n=256 width construction check.
python test_point_addition_strict_main.py --skip-n256 --skip-report

# Use a different small prime/width for compiled-block validation.
python test_point_addition_strict_main.py --n 5 --p 17

Qiskitがインストールされていない場合、test_point_addition_strict_main.pyはスキップメッセージを出力して正常に終了します。EEA厳密テストは、EEA/PDFブロックゲートを構築するためQiskitが必要です。


主要統計の再現

私たちの論文では、次の数値リソース見積もり結果を報告しています:

root@kitploit:~
n = 64, 128, 160, 192, 224, 256, 384, 512

典型的なワークフローは次のとおりです:

  1. 特定のnに対してEEAアルゴリズム3カウンタを実行する;
  2. 同じnに対してNCT最適化バージョンを任意で実行する;
  3. 結果のEEA JSONをラップされた点加算カウンタに渡す;
  4. 出力レポートからkey_ccx、block_summaries、およびqiskit_width_reportフィールドを収集する。

大きな幅の場合、チャンクとステップのチェックポイントは中断された長時間実行をサポートすることを目的としているため、--resumeを使用して--workdirディレクトリを保持してください。

引用

このコードベースを研究で使用する場合は、次のように引用してください:

root@kitploit:~
@misc{luo2026quantumalgorithmellipticcurve,
      title={Quantum Algorithm for Elliptic Curve Discrete Logarithms with Space-Efficient Point Addition}, 
      author={Han Luo and Ziyi Yang and Jingquan Luo and Ziruo Wang and Yuexin Su and Xiaoming Sun and Lvzhou Li and Tongyang Li},
      year={2026},
      eprint={2607.13816},
      archivePrefix={arXiv},
      primaryClass={quant-ph},
      url={https://arxiv.org/abs/2607.13816}, 
}
ツールをダウンロード
n
  • --out: 出力JSONパス。