Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
Quantum-Algorithm-for-Elliptic-Curve-Discrete-Logarithms-with-Space-Efficient-Point-Addition — Qiskit 기반의 리소스 추정 프레임워크로, 타원 곡선 이산 로그 알고리즘에 사용되는 공간 효율적인 양자 모듈러 역원 및 아핀 점 덧셈 회로를 대상으로 합니다. | Kitploit
도구/GitHubGitHub/zerowang030221/quantum-algorithm-for-elliptic-curve-discrete-logarithms-with-space-efficient-point-addition
Static AnalysisCode AnalysisCryptographyBinary AnalysisPapers & ResearchLearning & Education
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

Qiskit 기반의 리소스 추정 프레임워크로, 타원 곡선 이산 로그 알고리즘에 사용되는 공간 효율적인 양자 모듈러 역원 및 아핀 점 덧셈 회로를 대상으로 합니다.

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
저장소 보기
143411일 전아직 검토되지 않음
공유

공간 효율적 점 덧셈을 이용한 타원 곡선 이산 로그에 대한 양자 알고리즘

이 저장소는 타원 곡선 이산 로그 설정에서 사용되는 공간 효율적 양자 모듈러 역원 및 아핀 점 덧셈 회로의 리소스 추정을 위한 Qiskit 코드를 포함합니다.

현재 코드베이스는 세 가지 워크플로우를 중심으로 구성됩니다:

  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 Algorithm-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: 점 덧셈 카운터에서 사용되는 모듈러 덧셈/뺄셈, 곱셈, 역곱셈, 두 배 및 반감 명령어.
  • 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: Algorithm-3 단계 수에 대한 선택적 재정의; 기본적으로 eea.get_n_config(n)의 값이 사용됩니다.
  • --chunk-size: 체크포인트 청크당 계산되는 Algorithm-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: 변경되지 않은 계산으로 대체되기 전 전체 Algorithm-3 단계 시간 제한.
  • --fallback-step-timeout-s: 정확한 대체 계산 시간 제한.
  • --force: 단계/청크 체크포인트가 이미 존재하더라도 재계산합니다.
  • --ignore-policy-mismatch: 최적화 정책이 다르더라도 이전 체크포인트를 재사용합니다. 주로 디버깅용입니다.

최적화된 워크플로우는 다음 아래에 단계별 체크포인트를 작성합니다:

root@kitploit:~
<workdir>/steps/

그리고 다음 아래에 청크별 요약을 작성합니다:

root@kitploit:~
<workdir>/

3. 래핑된 점 덧셈 컴파일 블록 단위 계산

점 덧셈 카운터는 위의 EEA 워크플로우 중 하나에서 생성된 EEA Algorithm-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: 재귀 Algorithm-3 EEA 카운트를 포함하는 JSON 파일.
  • --allow-eea-n-mismatch: EEA JSON n이 요청된 --n과 다를 수 있도록 허용하는 디버그 전용 재정의.
  • --mcx-policy {clean-vchain,keep}: 재귀 계산을 위한 MCX 확장 정책.
  • --validate-full-mul: 작은 n의 경우 전체 곱셈/제곱 정의를 재귀적으로 계산하고 조립된 블록 카운트와 비교합니다.
  • --out: 출력 JSON 경로.

출력 보고서에는 다음이 포함됩니다:

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 점 덧셈 블록과 같은 더 큰 반복 블록을 조립합니다.


테스트

이 저장소에는 두 개의 일반 Python 테스트 드라이버가 포함되어 있습니다. 이는 의도적으로 pytest, Aer 또는 전체 상태 벡터 시뮬레이션 없이 작성되었습니다. 테스트는 적절한 곳에서 Qiskit 정의를 재귀적으로 확장하고 Toffoli 네트워크 블록에 대한 계산 기반 상태를 시뮬레이션합니다.

EEA 엄격 테스트

EEA 테스트는 다음 파일에 있습니다:

root@kitploit:~
test_eea_strict_main.py

기본 EEA 스위트를 실행하려면:

root@kitploit:~
python test_eea_strict_main.py

기본 스위트는 다음을 확인합니다:

  • 구현이 작은 n 엔드포인트 바로 가기가 아닙니다.
  • Algorithm-3 대시 블록 스케줄이 존재합니다.
  • 여러 작은 폭에 대한 활성 창 공식.
  • 단항 반복, 사전/사후 시프트, 위상 업데이트, 위치 제어 스왑 및 길이 업데이트 블록.
  • 기본 소수 3, 5, 7, 11, 13, 17에 대한 Algorithm-3 엔드포인트. 정확한 단계 카운트 및 고정 T_max를 모두 사용합니다.
  • 작은 기본 소수 3, 5, 7에 대한 전체 Algorithm-1 래퍼.

유용한 변형:

root@kitploit:~
# 빠른 구조적 + 블록 테스트만.
python test_eea_strict_main.py --skip-endpoint --skip-alg1

# 더 무거운 PDF/Table-4 p=37, x=13 추적 벤치마크 포함.
python test_eea_strict_main.py --table4

# 13보다 큰 소수에 대한 모든 x 값도 테스트.
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 연산을 포함하는 명시적 동적 회로 구조.
  • 작은 모듈러스에 대한 컴파일된 산술 하위 블록 조립.
  • 합성 Algorithm-3 JSON을 사용하는 소형 통합 점 덧셈 카운터 보고서(대규모 EEA 카운트를 실행하지 않고 보고서 경로를 테스트).

큰 소수 회귀 매트릭스는 필드 비트 폭 n과 소수 모듈러스 p의 대표적인 쌍을 12비트에서 512비트 소수 필드까지 다루고 있습니다. 테스트된 인스턴스는 예를 들어 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:~
# 소형 통합 보고서를 건너뛰고 구성/스케줄/조립만 확인.
python test_point_addition_strict_main.py --skip-report

# n=256 폭 구성 검사도 건너뛰는 빠른 스모크 테스트.
python test_point_addition_strict_main.py --skip-n256 --skip-report

# 컴파일된 블록 검증에 다른 작은 소수/폭 사용.
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 Algorithm-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}, 
}
도구 다운로드