
고급 지속적 위협과 이동 표적 방어 간의 확률적 ICS 보안 게임을 위한 동적 저랭크 내시 균형 계산을 구현한 연구 코드.
지능형 지속 위협과 이동 표적 방어 간의 확률적 게임을 위한 동적 저계수 균형 계산
정규 논문, Automatica 심사 중 (2026년 10월 재투고)
이 저장소는 고차원 산업 제어 시스템(ICS) 보안 게임에서 내시 균형을 계산하기 위한 동적 저계수 내시 균형(DLR-NE) 알고리즘의 구현 및 실험적 검증을 포함합니다.
지능형 지속 위협(APT) 과 이동 표적 방어(MTD) 간의 전략적 상호작용은 차원 $n \sim 10^3$–$10^4$의 연속 상태 공간에서의 2인 제로섬 확률적 게임으로 모델링됩니다. 핵심 통찰은 공격 및 방어 채널의 물리적 저계수 결합(ICS 네트워크 토폴로지에 내재된 구조적 특성)이 균형 가치 함수의 계산 가능한 저계수 신경망 근사를 가능하게 하여, 반복당 복잡도를 $\mathcal{O}(n^2)$에서 $\mathcal{O}(nr^2)$로 감소시키며, 이는 $\Theta(n/r^2)$의 속도 향상이라는 점입니다.
| 정리 | 내용 | 실험 |
|---|---|---|
| 정리 1 | 최적 가치 함수 $V^*$에 대한 전역 저계수 근사 오차 한계 | 실험 1 |
| 정리 2 | 명시적 정상 상태 오차 분해를 동반한 DLR-NE의 기하학적 수렴 | 실험 2 |
| 정리 3 | 반복당 복잡도 $\mathcal{O}(nr^2)$ 및 전체 계수 기준선 대비 $\Theta(n/r^2)$ 속도 향상 | 실험 3 |
| 따름정리 1 | 게임 이론적 견고성: 균형 민감도는 조건수 $\kappa(S)$에 의해 제어됨 | 실험 4 |
dlr-ne-ics-security/
├── src/ # Core algorithmic modules
│ ├── environment.py # Synthetic nonlinear power-system dynamics
│ ├── networks.py # Low-rank and full-rank neural networks
│ ├── bellman.py # Bellman operator and greedy Nash policy extractor
│ ├── dlra_vi.py # Algorithm 1: DLR-NE
│ └── utils.py # FLOPs accounting, EYM error, metrics
│
├── experiments/ # Experimental scripts (one per theorem)
│ ├── exp01_truncation_error.py # Theorem 1: Low-rank truncation error
│ ├── exp02_convergence.py # Theorem 2: Convergence of DLR-NE
│ ├── exp03_complexity.py # Theorem 3: Computational complexity
│ ├── exp04_robustness.py # Corollary 1: Game-theoretic robustness
│ ├── exp05_tradeoff.py # Compression-accuracy Pareto frontier
│ └── exp06_ablation.py # Ablation: necessity of basis augmentation
│
├── data/ # Generated datasets (excluded from git)
├── results/ # Figures and logs (excluded from git)
├── notebooks/ # Prototyping and visualization
├── requirements.txt # Python dependencies
└── README.md # This file
# Clone the repository
git clone https://github.com/tz98lab/dlr-ne-ics-security.git
cd dlr-ne-ics-security
# Create a virtual environment (recommended)
python -m venv venv
source venv/bin/activate # Linux/Mac
# venv\Scripts\activate # Windows
# Install dependencies
pip install -r requirements.txt
numpy>=1.24.0
scipy>=1.10.0
matplotlib>=3.7.0
torch>=2.0.0
모든 실험은 독립적으로 실행 가능하며 자체적으로 완결됩니다. 각 스크립트는 results/figures/ 디렉터리에 그림을 생성합니다.
규모에 관한 참고: 기본 구성은 빠른 시연을 위해 $n=200$을 사용합니다. 논문에서 보고된 전체 규모 결과($n \sim 10^3$)를 재현하려면 각 스크립트 상단의
PowerSystemConfig를 수정하십시오(인라인 주석 참조).
절단 오차 $|V_{\mathrm{full}} - \widehat{V}r|\infty$가 계수 $r$에 따라 감소하며 Eckart-Young-Mirsky 이론적 예측과 일치함을 검증합니다.
python experiments/exp01_truncation_error.py
출력: results/figures/exp1_truncation_error.png
예상: 측정된 오차(파란 원)가 이론적 한계 $L_\phi |w_{\mathrm{out}}^*|2 R{\mathcal{X}} \epsilon_{\mathrm{EYM}}(r)$(보라색 점선)를 추종함; 특이값 스펙트럼은 빠른 감쇠를 보임.
수렴률 $\gamma$와 명시적 정상 상태 오차 이웃 $\varepsilon_{\mathrm{total}}/(1-\gamma)$를 동반한 기하학적 수렴을 검증합니다.
python experiments/exp02_convergence.py
출력: results/figures/exp2_convergence.png
예상: 오차 곡선은 먼저 $\gamma^k$ 포락선을 따라 감소하다가, 내부 루프 예산 $s^$에 의해 지배되는 평탄역으로 접어듦($s^$를 절반으로 줄이면 정확도에서 약 20배의 비용 발생); 배치 크기 $N_b$는 상대적으로 무시할 수 있는 영향.
$\mathcal{O}(nr^2)$의 반복당 복잡도와 전체 계수 FC-NN 기준선 대비 $\Theta(n/r^2)$ 속도 향상을 검증합니다.
python experiments/exp03_complexity.py
출력: results/figures/exp3_complexity.png
예상: DLR-NE는 $n$에 대해 선형으로 확장(로그-로그에서 기울기 1), FC-NN은 이차적으로 확장(기울기 2); $n=2000, r=10$에서 측정된 FLOPs 속도 향상 $\approx 12\times$(실제 시간 $\approx 4\times$).
조건수 $\kappa(S)$에 의해 인증되는 유한하고 $\beta$로 조정 가능한 민감도 상수 $L_\kappa$를 갖는 선형 관계 $|V(\cdot;\pi_D,\pi_A) - V(\cdot;\tilde{\pi}D,\pi_A)|\infty \le L_\kappa |\Delta S|_F$를 검증합니다(사전적 최악의 경우 인증서).
python experiments/exp04_robustness.py
출력: results/figures/exp4_robustness.png
예상: 가치 편차는 $|\Delta S|_F$에 대해 선형이며 기울기는 스펙트럼 정규화 가중치 $\beta$가 증가함에 따라 감소; $\kappa(S)$는 $\beta$를 증가시킴으로써 압축됨.
압축률과 균형 정책 효용 간의 파레토 프론티어를 탐구합니다.
python experiments/exp05_tradeoff.py
출력: results/figures/exp5_tradeoff.png
예상: $r = 5$에서 최적점: 약 2.3%의 효용 손실로 약 94%의 파라미터 압축.
세 가지 변형을 비교합니다: (i) 전체 알고리즘 1, (ii) 고정 기저, (iii) 리트랙션 없음.
python experiments/exp06_ablation.py
출력: results/figures/exp6_ablation.png
예상: 고정 기저 변형은 정체됨; 리트랙션 없음 변형은 불안정함; 전체 알고리즘 1은 통제된 비용으로 안정적인 감쇠를 달성함.
모든 난수 시드는 고정되어 있으며 보고됩니다. 각 실험 스크립트는 자체적으로 완결되며 기본 $n=200$ 구성에 대해 표준 노트북(CPU 전용)에서 실행할 수 있습니다. 전체 규모 실험($n \sim 10^3$)은 Intel Xeon Gold 6248R과 NVIDIA A100 40GB GPU(전체 계수 기준선 가속에만 사용)에서 수행되었습니다.
주요 하이퍼파라미터:
전체 파라미터 목록은 src/utils.py 및 개별 실험 스크립트를 참조하십시오.
이 코드를 사용하는 경우 다음을 인용해 주십시오:
@article{dlrne2026,
title={Dynamical Low-Rank Equilibrium Computation for Stochastic Games between Advanced Persistent Threats and Moving Target Defense},
author={Tian, Zijian and Zhang, He and Chen, Xinjie and Wang, Wenhai and Liu, Xinggao},
journal={Automatica},
year={2026},
note={Under review}
}
이 프로젝트는 MIT 라이선스에 따라 라이선스가 부여됩니다. 자세한 내용은 LICENSE를 참조하십시오.
코드나 실험에 관한 질문은 GitHub에 이슈를 열어 주십시오. 이론적 내용에 관한 질문은 Automatica에 투고된 원고를 참조하십시오.