
QAI 2026 논문에서 시뮬레이션에서 IBM 양자 하드웨어로의 FGSM 공격 전이성에 관한 코드와 결과입니다.
네트워크 침입 탐지에서 시뮬레이션에서 양자 하드웨어로의 FGSM 공격 전이성 논문(IEEE International Conference on Quantum Artificial Intelligence (QAI) 2026)의 코드, 학습된 파라미터 및 결과입니다.
논문의 수치는 results/에 있는 JSON 파일에서 나옵니다. 여기의 스크립트가 그 파일들을 생성했습니다.
src/ experiment scripts, numbered in run order
data/ preprocessed splits (the raw CICIDS2017 CSVs are not included)
models/ trained circuit parameters
results/ one JSON per experiment
figures/ the two figures in the paper
python >= 3.10
pennylane == 0.44.1
qiskit-ibm-runtime
numpy, scipy, scikit-learn, pandas, matplotlib
pip install -r requirements.txt로 설치하세요.
스크립트 08과 09는 실제 하드웨어에서 실행되므로 IBM Quantum 계정이 필요합니다. .env.example을 복사하고 자신의 토큰과 인스턴스를 입력하세요. 그런 다음 환경 변수로 설정하세요. 스크립트는 환경에서만 자격 증명을 읽습니다.
원본 캡처는 여기에 없습니다. Canadian Institute for Cybersecurity에서 CICIDS2017을 다운로드하고 Friday-WorkingHours-Afternoon-DDos.pcap_ISCX.csv를 data/에 넣으세요. 사용되는 파일은 이것 하나뿐입니다.
01_preprocess.py는 네 개의 .npy 분할을 생성합니다. 학습에서 공격 1134개, 정상 866개 샘플을 얻어야 합니다. 테스트에서는 공격 284개, 정상 216개입니다. 개수가 다르면 다른 캡처 파일이거나 다른 scikit-learn 버전을 사용한 것입니다.
스크립트를 번호 순서대로 실행하세요. 스크립트 04부터 07은 01, 02, 03이 먼저 실행되어 있어야 합니다.
| 스크립트 | 생성물 | 실행 시간 |
|---|---|---|
01_preprocess.py | data/의 네 개 분할 | 초 단위 |
02_train_narrow_margin.py | models/clean_params.npy | 초 단위 |
03_retrain_poisoning_and_noise.py | 오염 및 노이즈 모델, 결과 파일 두 개 | 수 시간 |
04_epsilon_sweep.py | results/epsilon_sweep.json | 1분 이내 |
05_compare_attack_guidance.py | results/gradient_vs_untargeted.json | 1분 이내 |
06_finish_rq3.py | 무노이즈 기준선 및 노이즈 FGSM 스윕 | 약 1시간 |
07_margin_control.py | results/margin_control.json | 몇 분 |
08_run_hardware_models.py | results/hardware_clean_vs_poisoned.json | 대기 시간 |
09_run_hardware_fgsm.py | results/hardware_fgsm_adam.json | 대기 시간 |
10_convert_hardware_results.py | results/hardware_fgsm_cobyla.json | 초 단위 |
make_figures.py | 두 개의 그림 | 초 단위 |
스크립트 03이 느린 작업입니다. 밀도 행렬을 시뮬레이션하는데, 초기화당 약 16분이 소요됩니다. 세 가지 노이즈 수준 각각에서 세 번의 초기화를 학습합니다.
하드웨어 스크립트는 모든 회로를 하나의 작업으로 전송합니다. 그러면 작업 내 모든 회로가 동일한 캘리브레이션 상태를 공유합니다. 두 스크립트 모두 --dry-run을 지원하며, 이 옵션은 모든 것을 트랜스파일하고 아무것도 전송하지 않은 채 회로 통계를 출력합니다.
| 논문 | 결과 파일 | 스크립트 |
|---|---|---|
| 표 I, 포이즈닝 | poisoning_retrained.json | 03 |
| 표 II, 비표적 공격에 대한 FGSM | gradient_vs_untargeted.json | 05 |
| 표 III, 시뮬레이션 대 하드웨어 | hardware_clean_vs_poisoned.json, hardware_fgsm_adam.json | 08, 09 |
| 표 IV, 디폴라라이징 노이즈 | noise_retrained.json, noise_fgsm_sweep.json, noiseless_400_baseline.json | 03, 06 |
| 그림 1, 하드웨어로의 전이 | hardware_fgsm_adam.json, hardware_fgsm_cobyla.json | 09, 10 |
| 그림 2, 노이즈 하의 정확도와 마진 | 표 IV와 동일 | 03, 06 |
| 섹션 IV-A, 클린 기준선 | clean_history.json, noise_retrained.json | 02, 03 |
| 섹션 IV-C, 결정 마진 | epsilon_sweep.json | 04 |
| 섹션 VI, 마진 제어 | margin_control.json | 07 |
| 파일 | 설명 |
|---|---|
clean_params.npy | 좁은 마진 분류기, COBYLA, 마진 0.07에서 정확도 86.8% |
noisy_0.0_params.npy | 넓은 마진 분류기, Adam, 마진 0.54에서 정확도 92.2% |
noisy_0.0_params_400.npy | 노이즈 수준 간 비교를 위해 400개 샘플 부분집합으로 학습한 무노이즈 모델 |
noisy_0.001_params.npy, noisy_0.01_params.npy, noisy_0.05_params.npy | 디폴라라이징 노이즈 수준별 하나씩 |
poisoned_5pct_params.npy, poisoned_10pct_params.npy, poisoned_15pct_params.npy | 레이블 뒤집기 비율별 하나씩 |
모든 실행은 156큐비트 Heron r2 프로세서인 IBM Fez를 사용했습니다. 회로당 1024 샷, Qiskit Runtime SamplerV2를 통해 실행했습니다. 트랜스파일은 최적화 수준 1에서 수행했습니다.
모든 실행은 동일한 논리 회로를 제출했습니다: 2큐비트 게이트 12개를 가진 깊이 20. 트랜스파일은 이를 물리적 큐비트에 매핑하며, 이는 제출할 때마다 두 수치를 모두 변경합니다.
| 결과 | 스크립트 | 회로 | 트랜스파일된 깊이 | 2큐비트 게이트 |
|---|---|---|---|---|
| 클린 및 포이즌 모델 정확도 | 08 | 100 | 100 | 27 |
| FGSM 전이, 넓은 마진 모델 | 09 | 150 | 87 | 42 |
| FGSM 전이, 좁은 마진 모델 | 이전 코드, 09로 대체됨 | 400 | 기록되지 않음 | 기록되지 않음 |
좁은 마진 전이 실행은 이 저장소의 스크립트보다 앞선 것입니다.
그 출력은 results/transferability_hw_50_expA.json이며, 스크립트 10이
이를 그림이 읽는 형식으로 변환합니다. 해당 실행은 스크립트 09와 동일한 회로와
동일한 최적화 수준을 사용했습니다.
기록된 두 깊이는 서로 다릅니다. 트랜스파일러는 휴리스틱으로 물리적 큐비트를 선택하므로, 동일한 회로가 각 제출마다 다르게 매핑됩니다. 두 실행 모두 여전히 시뮬레이션과 일치했습니다.
하드웨어 결과는 그날의 장치 교정 상태에 따라 달라집니다. 동일한 회로를 다시 보내면 다른 카운트를 얻게 됩니다. JSON 파일은 장치가 무엇을 했는지에 대한 기록입니다.
models/clean_params.npy는 재생성할 수 없습니다. 초기 매개변수가 시드된
생성기가 아닌 전역 NumPy 난수 상태에서 나왔기 때문입니다.
02_train_narrow_margin.py는 이제 초기화에 시드를 설정하므로, 새 실행은
그들 사이에서 재현 가능합니다. 하지만 결과는 다른 지점에 도달하며, 그 편차는
큽니다. 확률적 목적 함수에 대한 무기울기 최적화기는 다수 클래스를 예측하는
쪽으로 붕괴할 수 있습니다. 스크립트는 그런 일이 발생하면 이를 알려줍니다.
나머지는 시드가 설정되어 있습니다. 정확도는 여전히 초기화에 따라 달라지므로, 스크립트는 단일 실행 대신 평균과 표준 편차를 보고합니다. 논문의 VI절에서 그 이유를 설명합니다.
@inproceedings{ajmal2026fgsm,
author = {Ajmal, Zeeshan and Halunen, Kimmo and Mau{\ss}ner, Marc
and Reers, Volker and Khan, Arif Ali},
title = {{FGSM} Attack Transferability from Simulation to Quantum
Hardware in Network Intrusion Detection},
booktitle = {IEEE International Conference on Quantum Artificial
Intelligence (QAI)},
year = {2026},
note = {To appear},
}
코드는 MIT 라이선스를 따릅니다. LICENSE를 참조하세요.
CICIDS2017은 캐나다 사이버보안 연구소(Canadian Institute for Cybersecurity)에서 자체 조건에 따라 제공됩니다. 본 저장소에서 재배포되지 않습니다.
본 연구는 Business Finland 프로젝트(24304955) SeQuSoS의 지원을 받았습니다. IBM Quantum 서비스의 사용을 인정합니다. 본문에 표현된 견해는 저자들의 것이며 IBM 또는 IBM Quantum 팀의 공식 정책 이나 입장을 반영하지 않습니다.