🔒 Security

사이드 채널 공격

개요

사이드 채널 공격(Side-Channel Attack)은 컴퓨터 시스템의 물리적 구현에서 의도치 않게 새어나가는 정보를 악용하여 민감한 데이터를 추출하는 보안 공격 기법이다. 암호화 알고리즘 자체의 수학적 취약점이 아닌, 실행 과정에서 발생하는 타이밍, 전력 소모, 전자기 방출, 음향 등 물리적 현상을 분석하여 암호 키나 비밀 데이터를 복구할 수 있다. 1996년 Paul Kocher가 최초로 타이밍 공격을 공식화한 이후, cache 공격, 전력 분석, 머신러닝 기반 공격 등으로 진화하며 현대 보안의 핵심 위협으로 부상했다.

2017년 공개된 Spectre와 Meltdown은 사이드 채널 공격의 상용화 전환점이 되었으며, 이후 클라우드 환경에서의 VM 간 공격, 딥러닝 기반 전력 분석, acoustic 공격 등 새로운 변형이 지속적으로 발표되고 있다. 이 문서는 사이드 채널 공격의 분류, 동작 원리, 주요 공격 기법, 그리고 방어 기술을 상세히 분석한다.

핵심 개념

사이드 채널의 정의

사이드 채널은 시스템이 의도하지 않게 정보를 누출하는 물리적 경로를 말한다. 일반적인 보안 모델에서 시스템은 입력과 출력만으로 분석되지만, 실제 구현에서는 다양한 물리적 현상이 부수적으로 발생한다. 공격자는 이 부수적 현상을 측정하여 시스템의 내부 상태를 유추할 수 있다.

공격 분류

사이드 채널 공격은 누출되는 정보의 유형에 따라 분류된다. 동시에 공격자가 단순히 누출을 관찰하는 수동형(passive) 공격인지, 전압 글리치·레이저·온도 변화처럼 오류를 의도적으로 유도하는 능동형(active) 공격인지에 따라서도 방어 전략이 달라진다. 또한 같은 공격이라도 물리적 프로브가 필요한 경우와 클라우드의 공유 캐시처럼 원격 또는 멀티테넌트 환경에서 가능한 경우를 구분해야 실제 위험도를 평가할 수 있다.

분류 누출 원리 대표 공격
타이밍 공격 연산 수행 시간 Kocher 타이밍 공격, Remote Timing Attack
캐시 공격 캐시 히트/미스 패턴 Flush+Reload, Prime+Probe, Evict+Time
전력 분석 전력 소모 패턴 SPA(Simple Power Analysis), DPA(Differential Power Analysis)
전자기 공격 EM 방출 패턴 TEMPEST, EMemanation 공격
음향 공격 연산 시 발생 소음 Acoustic Cryptanalysis
오류 삽입 공격 의도적 오류 유도 Differential Fault Analysis
열 이미지 공격 칩 표면 온도 분포 Thermal Imaging Attack

타이밍 공격 (Timing Attack)

타이밍 공격은 암호화 연산의 수행 시간을 측정하여 비밀 키를 유추하는 기법이다. RSA 복호화에서 모듈러 거듭제곱 연산은 키 비트 값에 따라 수행 시간이 달라지는데, 공격자는 이를 통계적으로 분석하여 키를 복구할 수 있다. 네트워크를 통한 원격 타이밍 공격도 가능하며, SSL/TLS 구현에서 키를 추출한 사례가 보고되었다. 구현 관점에서는 분기, 조기 종료, 데이터 의존 메모리 접근, 캐시 미스 패턴이 모두 시간 차이로 드러날 수 있어 상수 시간(constant-time) 구현이 핵심 방어 원칙이 된다.

캐시 타이밍 공격 (Cache Timing Attack)

캐시 공격은 CPU 캐시의 접근 시간 차이를 이용하는 기법이다. 캐시 히트(hit) 시 약 1-10ns, 캐시 미스(miss) 시 약 100ns 이상의 시간 차이가 발생한다. 공격자는 특정 메모리 주소에 대한 접근 시간을 측정하여 해당 데이터가 캐시에 존재하는지 판단하고, 이를 통해 암호화 알고리즘의 내부 상태를 유추한다.

  • Flush+Reload: 공유 메모리 영역에서 특정 캐시 라인을 flush한 후 피해자가 접근했는지 reload 시간으로 판단
  • Prime+Probe: 공격자가 캐시 세트를 채운 후 피해자의 접근 이후 재측정
  • Evict+Time: 캐시 eviction을 유도하고 전체 연산 시간 측정

Flush+Reload는 페이지 공유나 deduplication 같은 메커니즘이 있을 때 특히 강력하며, Prime+Probe는 공유 메모리가 없어도 마지막 단계 캐시(LLC) 세트 충돌만 만들 수 있으면 멀티테넌트 환경에서 성립할 수 있다. 따라서 실제 운영 환경에서는 메모리 공유 정책, SMT 사용 여부, 캐시 파티셔닝 지원 여부까지 함께 봐야 한다.

전력 분석 공격 (Power Analysis Attack)

전력 분석 공격은 하드웨어 장치의 전력 소모 패턴을 분석하는 기법이다. CPU나 암호화 회로는 연산에 따라 전력 소모가 달라지며, 이 패턴을 통해 비밀 데이터를 유추할 수 있다.

  • SPA(Simple Power Analysis): 단일 전력 곡선에서 연산 패턴을 직접 해석
  • DPA(Differential Power Analysis): 다수의 전력 곡선을 통계적으로 분석하여 상관관계 추출
  • Collide+Power: 2023년 발견된 최신 공격으로, 거의 모든 CPU에 영향

비교/분석

주요 사이드 채널 공격 비교표

공격 유형 측정 대상 접근 권한 난이도 영향 범위
타이밍 공격 실행 시간 네트워크 접근 모든 암호화 구현
Flush+Reload 캐시 접근 시간 공유 메모리 필요 클라우드/VM 환경
Prime+Probe 캐시 접근 시간 메모리 접근 가능 멀티테넌트 환경
SPA 전력 소모 물리적 접근 스마트카드, IoT
DPA 전력 소모 물리적 접근 중-상 하드웨어 보안 모듈
TEMPEST 전자기 방출 근접 접근 군사/정부 시설
Acoustic 음향 소음 마이크 접근 특수 환경

보안 등급별 영향도

등급 공격 예시 잠재적 피해
Critical Spectre/Meltdown 커널 메모리, 다른 프로세스 데이터 유출
High Flush+Reload 기반 AES 공격 암호화 키 복구
Medium Remote Timing Attack SSL/TLS 키 유추
Low Thermal Imaging 실행 중인 코드 유추

동작 원리

타이밍 공격 흐름

사이드 채널 공격 분류

Flush+Reload 공격 흐름

  1. 공유 메모리 설정: 공격자와 피해자가 동일한 메모리 페이지를 공유 (클라우드 VM 환경 등)
  2. Flush 단계: 공격자가 대상 메모리 주소를 clflush 명령으로 캐시에서 제거
  3. 시간 대기: 피해자가 암호화 연산을 수행할 때까지 대기
  4. Reload 단계: 공격자가 해당 메모리 주소를 다시 접근하여 접근 시간 측정
  5. 판단: reload 시간이 짧으면 캐시에 있음 (피해자가 접근), 길면 캐시 없음 (접근하지 않음)
  6. 데이터 추출: 이 과정을 반복하여 암호화 알고리즘의 메모리 접근 패턴을 복구

전력 분석 공격 동작 원리

전력 분석 공격 흐름

DPA 공격 단계

  1. 데이터 수집: 다수의 평문-암호문 쌍과 해당 전력 곡선을 수집
  2. 예상 전력 모델 작성: Hamming weight이나 Hamming distance 기반으로 특정 비트가 0 또는 1일 때의 전력 소모 예상
  3. 통계적 분석: 실제 전력 곡선과 예상 모델의 상관관계(correlation)를 계산
  4. 키 후보 평가: 각 키 후보에 대해 상관관계를 계산하여 가장 높은 값을 가진 후보 선택
  5. 반복: 전체 키 비트에 대해 반복하여 최종 키 복구

장단점

사이드 채널 공격의 위험성

위협 요소:
- 전통적인 암호화 알고리즘의 수학적 강건성과 무관하게 공격 가능
- 클라우드/가상화 환경에서 VM 간 원격 공격 가능
- 머신러닝/딥러닝 기반 분석으로 공격 정확도 지속 향상
- 하드웨어 수정 없이는 완전한 방어 어려움

취약 시스템:
- 스마트카드, HSM(Hardware Security Module)
- 클라우드 인프라 (AWS, Azure, GCP 등)
- IoT 디바이스
- 암호화 전용 프로세서 (Intel AES-NI 등)

방어 기술의 한계

방어 기법:
- 타이밍 공격 방어: 상수 시간(constant-time) 알고리즘 구현
- 캐시 공격 방어: 캐시 파티셔닝, random delay 삽입
- 전력 공격 방어: masking, blinding 기법
- 전자기 공격 방어: 차폐(shielding), TEMPEST 차단

masking은 비밀 값을 여러 share로 분산해 단일 관측값만으로는 상관관계를 찾기 어렵게 만드는 방법이고, blinding은 연산 입력이나 중간값을 난수화해 동일한 키라도 매 실행의 물리적 흔적이 달라지도록 만든다. 소프트웨어 수준에서는 상수 시간 구현과 테이블 조회 제거가 중요하고, 하드웨어 수준에서는 듀얼 레일 로직, 노이즈 주입, 센서 차폐, 전력 라인 필터링이 함께 사용된다.

한계점:
- 상수 시간 구현은 실제로 모든 명령어에서 데이터 의존성 제거 어려움
- masking은 완벽한 균형이 필요하나 실제 구현에서 잔여 상관관계 존재
- 방어 기법 적용 시 성능 오버헤드 발생 (5-30%)
- 랜덤 지연이나 노이즈 주입만으로는 다량 측정 후 평균화하는 DPA를 완전히 막기 어려움

관련 기술

참고 논문 및 표준

  • Kocher, P. (1996). "Timing Attacks on Implementations of Diffie-Hellman, RSA, DSS, and Other Systems"
  • Kocher, P., Jaffe, J., & Jun, B. (1999). "Differential Power Analysis"
  • Yarom, Y. & Falkner, K. (2014). "Flush+Reload: a High Resolution, Low Noise, L3 Cache Side-Channel Attack"
  • Brumley, D. & Boneh, D. (2003). "Remote timing attacks are practical"
  • Prouff, E. & Rivain, M. (2013). "Masking against Side-Channel Attacks: A Formal Security Proof"
  • Intel, AMD, ARM: 각 프로세서의 보안 업데이트 및 마이크로코드 패치 문서
  • NIST SP 800-57: 키 관리 권고 사항

관련 문서

핵심 정리

사이드 채널 공격은 시스템의 물리적 구현에서 누출되는 정보를 악용하는 보안 공격으로, 타이밍, 전력, 전자기 방출, 음향 등 다양한 채널을 통해 비밀 데이터를 추출할 수 있다. Flush+Reload, Prime+Probe, DPA와 같은 정교한 공격 기법이 개발되어 클라우드 환경에서도 원격 공격이 가능하며, 2017년 Spectre/Meltdown 이후 하드웨어 보안의 핵심 위협으로 부상했다. 완전한 방어를 위해서는 알고리즘 수준의 상수 시간 구현, 하드웨어 수준의 캐시 파티셔닝, 그리고 시스템 수준의 차폐 기술이 병행되어야 하며, 머신러닝 기반 공격의 진화에 대응한 지속적인 보안 연구가 필요하다.