고신뢰 임베디드 시스템을 위한 환경 조건 기반 해머링 전조 모니터링
임베디드 시스템은 온도·전압 변동 환경에서 동작하며, 이는 DRAM retention margin을 줄이고 Rowhammer 취약성을 높인다. 기존 탐지 모델은 통제된 실험실 조건에서 학습되어, 현장 배포 시 발생하는 분포 이동(distribution shift)에 취약하다.
본 연구는 하드웨어 성능 카운터(HPC) 시계열 + 환경 센서(전압/온도) 텔레메트리를 결합한 환경 조건 기반 해머링 전조 모니터를 제안한다. 모델은 동작 신호와 환경 신호를 이중 브랜치로 분리 인코딩한 뒤 경량 분류기로 융합한다.
.
├── data_collection.ipynb # Raspberry Pi 측 데이터 수집 파이프라인 정의 + 결과 검증·시각화
├── rowhammer_detection.ipynb # 전체 실험 코드 (전처리 → 학습 → 평가)
└── assets/
└── architecture.png # 모델 아키텍처 다이어그램
수집 환경: Raspberry Pi Zero 2 W
워크로드: MiBench 벤치마크 (Bitcount, CRC32, Dijkstra, FFT, Quicksort, SHA, Susan)
해머링 프로세스: rowhammer_rpi3 참고
라벨: Rowhammer 해머링 프로세스 유무 기반 이진 분류 (0=Normal, 1=Attack)
수집 파이프라인(perf 카운터 + 환경 센서 동기 기록, 환경 조건별 자동 가열·전압 변경, 20s × N-cycle 스케줄)과 CSV 스키마, 결과 검증·시각화는 data_collection.ipynb 에 정리되어 있다.
| 종류 | 채널 | 설명 |
|---|---|---|
| HPC (성능 카운터) | CacheMiss |
캐시 미스 횟수 |
| HPC | CacheRef |
캐시 참조 횟수 |
| HPC | PageFault |
페이지 폴트 횟수 |
| HPC | BranchMiss |
분기 예측 미스 횟수 |
| 환경 센서 | Temp |
코어 온도 (°C) |
| 환경 센서 | CoreVolt |
코어 전압 (V) |
| 환경 조건 | 폴더 | Train | Val | Test |
|---|---|---|---|---|
| 정상 환경 | Normal_Normal |
66.43% | 13.43% | 나머지 |
| 고온 | Normal_Hot |
66.43% | 13.43% | 나머지 |
| 저전압 | Low_Normal |
66.43% | 13.43% | 나머지 |
| 저전압 + 고온 (OOD) | Low_Hot |
제외 | 40% | 60% |
- OOD(Low_Hot) 테스트 셋은
test_a.npz로 별도 저장 → 일반화 성능 전용 평가 - 전체 기준 train ≈ 50% / val ≈ 20% / test ≈ 30%
- OOD 서브셋: 총 467 샘플 (normal=216, attack=251)
- Window size: 50 타임스텝
- Stride: 25 (50% 오버랩)
- 입력 텐서:
X ∈ R^{4×50}(HPC 시계열) +e ∈ R^2(환경 스냅샷) - StandardScaler: train 셋 통계로 피팅 → 전체 셋 적용
두 모델 모두 use_env 플래그로 환경 브랜치 포함 여부를 제어한다.
- 3-layer Conv1D: kernel 크기 7→5→3, 채널 64→128→256
- Global Average Pooling
- 환경 브랜치: Linear(2→8→16)
- 분류기: Linear(256+16, 128) → Linear(128, 2)
- 6개 InceptionModule을 2개 잔차 블록(3+3)으로 구성
- 각 모듈: Bottleneck(1×1) + 병렬 Conv(k=9, 19, 39) + MaxPool→Conv → 128ch concat → BN → ReLU
- 환경 브랜치: Linear(2→8→16)
- 분류기: Linear(128+16, 64) → Linear(64, 2)
4개 모델 변형을 동일 조건으로 학습 후, Test / Test-OOD 평가:
| 모델 | 환경 브랜치 |
|---|---|
| Base-CNN +env | O |
| Base-CNN -env | X |
| InceptionTime +env | O |
| InceptionTime -env | X |
- Optimizer: Adam, lr=3×10⁻⁴
- Epochs: 30, Batch size: 64
- Best checkpoint: Val F1 최대 에폭 기준
- Seeds: [0, 1, 2]
- Test 셋 기준 Mean ± Std 보고
- XGBoost: n_estimators=300, max_depth=6, lr=0.1
- RandomForest: n_estimators=300, max_depth=12
- 입력: HPC flatten (N, 200),
+env는 Temp/CoreVolt 추가 → (N, 202) - Test / Test-OOD 평가
| Model | Acc. (%) | Prec. (%) | Rec. (%) | F1 (%) |
|---|---|---|---|---|
| BaseCNN +env | 99.49 | 100.00 | 99.05 | 99.52 |
| BaseCNN -env | 98.37 | 97.94 | 99.05 | 98.49 |
| Inception +env | 99.80 | 99.62 | 100.00 | 99.81 |
| Inception -env | 99.19 | 100.00 | 98.48 | 99.24 |
| Model | Acc. (%) | Prec. (%) | Rec. (%) | F1 (%) |
|---|---|---|---|---|
| BaseCNN +env | 98.93 | 100.00 | 98.01 | 98.99 |
| BaseCNN -env | 97.00 | 96.47 | 98.01 | 97.23 |
| Inception +env | 99.57 | 99.21 | 100.00 | 99.60 |
| Inception -env | 98.50 | 100.00 | 97.21 | 98.59 |
| Model | OOD F1 (%) | 비고 |
|---|---|---|
| XGBoost -env | 95.08 | - |
| XGBoost +env | 94.36 | env 추가 시 오히려 감소 |
| RandomForest -env | 95.08 | - |
| RandomForest +env | 95.08 | env 추가 효과 없음 |
| BaseCNN -env | 97.23 | - |
| BaseCNN +env | 98.99 | +1.76%p |
| Inception -env | 98.59 | - |
| Inception +env | 99.60 | +1.01%p |
-
환경 조건 제공이 OOD 성능을 일관되게 향상시킴
Inception+env: OOD Acc 99.57%, F1 99.60% (환경 미포함 대비 +1.07%p / +1.01%p) -
분포 이동의 주 원인은 환경 조건
RBF-kernel MMD 분석 결과 CoreVolt(1.028), Temp(0.517)이 HPC 채널(0.025–0.070) 대비 압도적으로 ID–OOD 차이를 유발 -
ML 베이스라인은 환경 피처를 단순 연결해도 OOD 개선 효과 없음
딥러닝 아키텍처의 이중 브랜치 분리 인코딩 구조 자체가 환경 조건 활용의 핵심
pip install torch xgboost scikit-learn numpy pandas matplotlib seaborn joblibdata/
├── Normal_Normal/ # *.csv (CacheMiss, CacheRef, PageFault, BranchMiss, Temp, CoreVolt)
├── Normal_Hot/
├── Low_Normal/
└── Low_Hot/ # OOD — train 제외
파일명 규칙: attack_*.csv → label=1, benign_*.csv / idle_*.csv → label=0
rowhammer_detection_final.ipynb를 셀 순서대로 실행:
| 섹션 | 내용 |
|---|---|
| 1. 데이터 전처리 | CSV → 슬라이딩 윈도우 → train/val/test/test_a.npz 저장 |
| 2. Dataset & DataLoader | npz 로드, PyTorch Dataset 구성 |
| 3. 모델 정의 | Base-CNN, InceptionTime (+env / -env) |
| 4. 학습 유틸리티 | train_one_epoch, evaluate, run_experiment |
| 5. 실험 1 | 4-variant 학습·평가·시각화 |
| 6. 실험 2 | 멀티 시드(0,1,2) 반복 → Mean±Std |
| 7. 실험 3 | XGBoost / RandomForest 베이스라인 |
from google.colab import drive
drive.mount('/content/drive')이후 DATA_ROOT, OUTPUT_DIR 경로를 Google Drive 경로로 수정
- Lois Orosa et al., "SpyHammer: Understanding and Exploiting RowHammer Under Fine-Grained Temperature Variations," IEEE Access, vol.12, 2024.
- Jeremie S. Kim et al., "Understanding Rowhammer Under Reduced Wordline Voltage," HPCA, 2018.
- Yoongu Kim et al., "Flipping Bits in Memory Without Accessing Them," ISCA, 2014.
- Mark Seaborn and Thomas Dullien, "Exploiting the DRAM Rowhammer Bug to Gain Kernel Privileges," Black Hat USA, 2015.
- Victor van der Veen et al., "Drammer: Deterministic Rowhammer Attacks on Mobile Platforms," CCS, 2016.
- Congmiao Li et al., "Detecting Malicious Attacks Exploiting Hardware Vulnerabilities Using Performance Counters," COMPSAC, 2019.
- Hassan Ismail Fawaz et al., "InceptionTime: Finding AlexNet for Time Series Classification," Data Mining and Knowledge Discovery, vol.34, 2020.
- Matthew R. Guthaus et al., "MiBench: A Free, Commercially Representative Embedded Benchmark Suite," WWC, 2001.
