본문으로 이동
메뉴 여닫기
환경 설정 메뉴 여닫기
개인 메뉴 여닫기
로그인하지 않음
지금 편집한다면 당신의 IP 주소가 공개될 수 있습니다.
Fault Injection Attack; 오류 주입 공격(결함 주입 공격, 폴트 인젝션 공격, 글리치 공격)
전압·클럭·빛·전자기 펄스 등으로 장치를 일부러 오동작시켜 암호 키를 알아내거나 보안 검사를 건너뛰게 하는 공격

칩은 정해진 전압, 클럭, 온도 범위 안에서만 올바르게 동작하도록 설계된다. 공격자가 이 범위를 아주 짧게 벗어나게 만들면 명령어 하나가 건너뛰어지거나 레지스터 값 일부가 뒤집히는 식의 일시적 오류가 생긴다. 그 오류가 서명 검증 분기나 암호 연산 한가운데에서 일어나면 보안 부팅이 우회되거나, 잘못 계산된 암호문으로부터 비밀 키가 계산된다.

MITRE CAPEC-624(하드웨어 오류 주입)는 이 공격을 "방해 신호나 사건, 또는 물리 환경 변화로 전자 장치의 오동작을 일으키는 것"으로 설명하며, 전자기 펄스, 레이저 펄스, 클럭 글리치, 극단적인 온도 등을 예로 든다. 암호 연산 장치에 통제된 방식으로 수행하면 비밀 키를 도출할 수 있다고 본다. CISSP 시험 개요 3.7(암호 해독 공격 방법)에 부채널 공격, 타이밍 공격과 나란히 들어 있다.

부채널 공격과의 차이

편집 원본 편집
구분 부채널 공격 오류 주입 공격
공격자 행동 수동적 관찰: 전력 소비, 전자기 방출, 처리 시간, 소리 등을 측정 능동적 교란: 전압·클럭·빛·전자기 펄스로 오동작을 일으킴
장치 동작 정상 동작 그대로 비정상 동작(오류 결과, 명령어 건너뜀)
얻는 것 연산과 상관된 누출 정보에서 키 추정 정상 결과와 오류 결과의 차이로 키 계산, 또는 보안 검사 우회
대표 예 단순·차분 전력 분석, 타이밍 공격, TEMPEST 전압·클럭 글리치, 레이저 오류 주입, 로우해머, 차분 오류 분석
주 대책 상수 시간 구현, 마스킹, 차폐 이중 연산 검증, 글리치 센서, 오류 검출 코드, 물리적 차폐

CAPEC은 하드웨어 오류 주입의 다른 이름으로 "부채널 공격"을 적기도 한다. 넓게는 구현 공격(implementation attack)의 한 갈래로 묶이지만, 시험에서는 "관찰이냐 교란이냐"로 구분하는 것이 안전하다.

오류 주입 기법

편집 원본 편집
기법 방법 특징
전압 글리치 (voltage glitch) 전원 전압을 순간적으로 떨어뜨리거나 올림 장비가 싸고 비침습적이다. 조건 분기, 루프 종료 조건을 깨는 데 자주 쓰인다.
클럭 글리치 (clock glitch) 외부 클럭에 아주 짧은 펄스를 끼워 넣음 명령어가 끝나기 전에 다음 클럭이 와서 결과가 틀어지거나 명령어가 건너뛰어진다.
전자기 오류 주입 (EM-FI) 칩 가까이에서 코일로 강한 자기 펄스를 발생 칩 포장을 뜯지 않고도 특정 영역에 국소적으로 오류를 줄 수 있다. MITRE CWE-1319가 이 약점을 다룬다.
레이저·광 오류 주입 칩 포장을 벗기고 레이저를 특정 트랜지스터에 쏨 비트 단위로 정밀하지만 장비가 비싸고 침습적이다.
온도 동작 범위를 벗어난 고온·저온 정밀도는 낮지만 메모리 잔존 같은 다른 효과와 결합된다.
로우해머 (Rowhammer) 소프트웨어가 DRAM의 특정 행을 빠르게 반복 접근 물리 접근 없이 소프트웨어만으로 이웃 행의 비트를 뒤집는다. 2014년 카네기멜런대·인텔 연구진의 논문(ISCA 2014)이 처음 체계적으로 보고했다.

차분 오류 분석

편집 원본 편집

차분 오류 분석(DFA, Differential Fault Analysis)은 같은 입력에 대해 정상 출력과 오류가 섞인 출력을 비교해 키를 계산하는 기법이다.

  • 1997년 보네(Boneh)·데밀로(DeMillo)·립턴(Lipton)은 중국인의 나머지 정리(CRT)를 쓰는 RSA 서명에서 오류가 섞인 서명 하나만으로 모듈러스를 인수분해할 수 있음을 보였다(EUROCRYPT '97).
  • 같은 해 비함(Biham)과 샤미르(Shamir)는 이 아이디어를 DES 같은 대칭키 블록 암호로 넓혀 "차분 오류 분석"이라는 이름을 붙였다(CRYPTO '97).
  • AES도 마지막 라운드 근처에 오류를 넣으면 적은 수의 오류 암호문으로 키 후보를 크게 줄일 수 있다는 연구가 이어졌다.

DFA가 무서운 이유는 암호 알고리즘 자체에 결함이 없어도 구현이 오류를 검사하지 않으면 키가 새기 때문이다. 그래서 "출력하기 전에 결과를 검증하라"는 대책이 나온다.

보안 부팅 우회

편집 원본 편집

보안 부팅(secure boot)은 변경 불가능한 신뢰 루트에서 시작해 다음 단계의 서명을 검사한 뒤에만 실행을 넘긴다. MITRE CWE-1247(전압·클럭 글리치 보호 미흡)은 이 서명 검사나 접근 통제 설정 시점에 글리치를 주면 검사를 건너뛰고 조작된 펌웨어를 실행시킬 수 있다고 설명한다. 게임기나 마이크로컨트롤러의 읽기 보호·보안 부팅을 글리치로 우회한 사례가 보안 학회 등에서 여러 차례 발표된 것으로 알려져 있다. CWE-1332는 보안상 중요한 CPU 명령어(조건 분기 하나)가 건너뛰어지는 경우를 따로 다룬다.

대책 설명
이중 연산 검증 같은 연산을 두 번 하거나(시간 중복), 두 회로로 하거나(공간 중복), 역연산으로 검산한 뒤 결과가 일치할 때만 출력한다. RSA-CRT 서명은 공개키로 검증한 뒤 내보낸다.
중복 검사와 다수결 보안 분기를 여러 번 검사하고, 조건 판단을 단일 비교 명령에 맡기지 않는다. 판단 시점을 무작위로 흔들어 글리치 타이밍을 맞추기 어렵게 한다.
센서 전압·클럭·온도·빛 이상을 감지하는 센서를 넣고, 이상이 감지되면 동작을 멈추고 비밀 값을 지운다(제로화).
오류 검출 코드 메모리와 버스에 패리티·ECC를 두고, 제어 흐름 무결성 검사로 명령어 건너뜀을 탐지한다. 로우해머에는 ECC 메모리와 DRAM 쪽 완화 기능이 함께 쓰인다.
하드웨어 보호 차폐, 능동 실드, 변조 탐지 외함을 쓴다. FIPS 140 보안 수준 4는 정상 범위를 벗어난 전압·온도에서 비밀 값을 지우거나 그런 환경에서 안전함을 시험받도록(환경 고장 보호) 요구한다.
설계 단계 평가 공통평가기준의 높은 보증 등급이나 암호 모듈 검증에서 오류 주입 시험을 받는다.
  • 부채널 공격은 관찰(수동), 오류 주입 공격은 교란(능동)이다. "전압을 순간적으로 떨어뜨려…"는 오류 주입, "전력 소비 파형을 분석해…"는 부채널이다.
  • 차분 오류 분석은 정상 결과와 오류 결과의 차이로 키를 얻는다. 가장 효과적인 대책은 결과를 출력하기 전에 검증하는 것이다.
  • 로우해머는 소프트웨어만으로 하드웨어 오류를 유발하는 오류 주입이며, 물리 접근이 없어도 가능하다는 점이 특징이다.
  • 오류 주입은 대개 장치에 대한 물리 접근이 필요하므로, 스마트카드·IoT·임베디드 장치처럼 공격자 손에 들어가는 장치의 위협 모델에 반드시 넣는다.
  • 흔한 오답: 키 길이를 늘리면 막힌다고 보는 것. 오류 주입은 구현을 노리므로 알고리즘 강도와 무관하다.