Skip to content

factwy/ECHPM

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Environment-Conditioned Hammering-Precursor Monitoring for Reliable Embedded Systems

고신뢰 임베디드 시스템을 위한 환경 조건 기반 해머링 전조 모니터링


개요

임베디드 시스템은 온도·전압 변동 환경에서 동작하며, 이는 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 에 정리되어 있다.

입력 피처 (6채널)

종류 채널 설명
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 플래그로 환경 브랜치 포함 여부를 제어한다.

Architecture

Base-CNN

  • 3-layer Conv1D: kernel 크기 7→5→3, 채널 64→128→256
  • Global Average Pooling
  • 환경 브랜치: Linear(2→8→16)
  • 분류기: Linear(256+16, 128) → Linear(128, 2)

InceptionTime

  • 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)

실험 구성

실험 1: In-Distribution 학습 및 OOD 일반화 평가

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 최대 에폭 기준

실험 2: 멀티 시드 반복 실험

  • Seeds: [0, 1, 2]
  • Test 셋 기준 Mean ± Std 보고

실험 3: ML 베이스라인 비교

  • 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 평가

실험 결과

Table 1: In-Distribution Test 성능

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

Table 2: OOD Test 성능 (Low_Hot 전용)

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

ML 베이스라인 vs 딥러닝 (OOD F1 기준 비교)

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

주요 발견

  1. 환경 조건 제공이 OOD 성능을 일관되게 향상시킴
    Inception+env: OOD Acc 99.57%, F1 99.60% (환경 미포함 대비 +1.07%p / +1.01%p)

  2. 분포 이동의 주 원인은 환경 조건
    RBF-kernel MMD 분석 결과 CoreVolt(1.028), Temp(0.517)이 HPC 채널(0.025–0.070) 대비 압도적으로 ID–OOD 차이를 유발

  3. ML 베이스라인은 환경 피처를 단순 연결해도 OOD 개선 효과 없음
    딥러닝 아키텍처의 이중 브랜치 분리 인코딩 구조 자체가 환경 조건 활용의 핵심


노트북 사용 방법

환경 설정

pip install torch xgboost scikit-learn numpy pandas matplotlib seaborn joblib

데이터 준비

data/
 ├── 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 베이스라인

Google Colab 사용 시

from google.colab import drive
drive.mount('/content/drive')

이후 DATA_ROOT, OUTPUT_DIR 경로를 Google Drive 경로로 수정


참고 문헌

  1. Lois Orosa et al., "SpyHammer: Understanding and Exploiting RowHammer Under Fine-Grained Temperature Variations," IEEE Access, vol.12, 2024.
  2. Jeremie S. Kim et al., "Understanding Rowhammer Under Reduced Wordline Voltage," HPCA, 2018.
  3. Yoongu Kim et al., "Flipping Bits in Memory Without Accessing Them," ISCA, 2014.
  4. Mark Seaborn and Thomas Dullien, "Exploiting the DRAM Rowhammer Bug to Gain Kernel Privileges," Black Hat USA, 2015.
  5. Victor van der Veen et al., "Drammer: Deterministic Rowhammer Attacks on Mobile Platforms," CCS, 2016.
  6. Congmiao Li et al., "Detecting Malicious Attacks Exploiting Hardware Vulnerabilities Using Performance Counters," COMPSAC, 2019.
  7. Hassan Ismail Fawaz et al., "InceptionTime: Finding AlexNet for Time Series Classification," Data Mining and Knowledge Discovery, vol.34, 2020.
  8. Matthew R. Guthaus et al., "MiBench: A Free, Commercially Representative Embedded Benchmark Suite," WWC, 2001.

About

[KCC 2026] Environment-Conditioned Hammering-Precursor Monitoring for Reliable Embedded Systems

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • Jupyter Notebook 100.0%