최근 수정 시각 : 2024-11-10 17:35:29

부채널 공격

부채널 분석에서 넘어옴
Side-Channel Attack (부채널 공격)
Side-Channel Analysis (부채널 분석)

1. 개요2. 알려진 공격 기법의 종류
2.1. Meltdown/Spectre2.2. Row Hammer2.3. Cold Boot
3. 주요 공격 대상(장치)4. 주요 공격 대상(알고리즘)5. 관련 기사6. 관련 연구 주체(또는 단체)
6.1. 관련 컨퍼런스6.2. 프로젝트 그룹6.3. 대학 연구실6.4. ChipWhisperer
7. 사례분석
7.1. DES를 대상으로 한 DPA
8. 관련 문서

1. 개요

암호 알고리즘을 대상으로 한 물리적 공격 기법을 말한다. 간단히 말하면 정면으로 돌파 못하니까 옆으로 친다 즉 꼼수 1996년 코처[1]가 제시한 타이밍 공격법에 대한 논문을 이 분야의 연구가 시작된 계기로 꼽는다. 공격 목적이 아니라 분석 목적일 때는 부채널 분석이라고도 한다. 간혹 관련 기사를 보면 '옆수로 공격' 등으로 번역하기도 한다.

실용성에 대해서는 ASP.NET을 대상으로 한 Oracle Cell Padding 공격이 발생하여 패치가 되었다. 또한, 2012~2015년도 사이에 SSL 통신을 해독할 수 있는 CRIME, BREACH, HEIST 공격이 BlackHat Conference에서 발표된 바 있다. CPU게이트 문서도 참조.

현실적인 공격 구현의 어려움에도 불구하고, 암호 기능을 포함하는(또는 Secure Element를 포함하는) 모듈을 제조하여 유통하기 위해서는 엄격한 인증 절차를 거치는데, 공통평가기준(Common Criteria, CC), 암호모듈평가체계(Cryptographic Module Validation Program, CMVP) 등의 방식으로 비침습적 공격에 대한 평가가 비중있게 다뤄지고 있다. 이 때의 비침습적 공격은 부채널 공격을 포함하는 용어이다. 향후 IoT 기반 산업이 급격하게 성장 할 때, 부채널 공격에 대한 위협도 함께 증가할 것으로 내다보고 이에 대한 대응 방안이 활발하게 논의되고 있다.

하지만 대개의 경우 하드웨어로의 매우 근접한 접근이 필요하며, 대상 컴퓨터를 매우 정확히 알고 있어야 한다는 단점이 있다. 따라서 컨퍼런스에는 발표할 수 있어도 공격 용도로의 실용성은 매우 낮다. 잡음이나 전력 분석을 한다 하더라도 현대 시스템 중에 그런 정보를 손쉽게 특정할 수 있게 프로세서를 하나만 쓰는 시스템이 어디 있을까? 애초에 하드웨어를 매우 심하게 타며 환경의 영향을 크게 받을 수 밖에 없다.

2. 알려진 공격 기법의 종류

일반적으로 물리적 공격 기법 중에서도 다음 세 가지 공격 기법을 부채널 공격으로 본다.[2] 좀 더 넓게는 물리적 공격 기법인 프로빙(probing), 오류주입(fault induction) 공격을 포함한다. 이 외에도 암호 알고리즘의 취약점과 연관 시킬 수 있는 다양한 물리적 채널들을 활용한 공격 기법들이 알려져 있다.
  • 타이밍 공격(Timing Attack) : 여러가지 연산(복호화)을 시켜놓고 계산에 걸리는 시간을 토대로 암호를 유추하는 기법이다.
  • 전력 분석 공격(Power Analysis Attack) : 마찬가지로 연산을 시켜놓고 장비의 매순간의 전력 사용량의 변화를 토대로 분석하는 기법이다.(한번의 연산으로 구하는 것이 아닌 수많은 연산의 반복이 필수적으로 요구된다.)
    • Simple Power Analysis (SPA) : 암복호화 연산이 수행되는 동안 사용된 전력 변화량을 통해 사용한 연산을 유추하는 기법이다.(해당 기법은 한번의 연산으로도 분석이 가능하다.)
    • Differential Power Analysis (DPA) : 1 bit 추정을 가정했을 때, 키 값이 1일때 입력문과 연산 값과 0일때 입력문과 연산 값의 차이를 통해 암호키를 구하는 방법이다. 대부분 8bit 블록을 사용하기에 2^7 만큼의 경우를 비교한다.
    • Correlation Power Analysis (CPA) : 1 bit 추정을 가정했을 때, 키 값이 1일때 발생될 것으로 예상되는 값들(반복 수집된 전력값들), 0일때 발생될 것으로 예상되는 값들 중 실제 파형과 상호관계 값이 더 큰 것을 키로 추정하는 방법이다.
  • 전자기 분석 공격(EM Attack): 장비가 발생하는 전자파(EM radiation)를 분석해서 암호, 또는 평문을 추출하는 기법. (전력 분석 공격과의 차이는 전력대신 전자기를 분석한다는 것 밖에 없다.)
  • 기타
    • Power-monitoring attack
    • Acoustic cryptanalysis
    • Differential fault analysis(DFA) : 정상 동작한 연산과 비정상 동작한 연산을 비교하는 방법이다. 연산(알고리즘)이 동작하는 중에 순간적으로 전자기, 전력, 빛(레이저와 같은 강력한 빛) 등에 노출시켜 비정상 동작을 유발하여 실제 연산되어야 하는 값과 다른 값이 나오도록 유도(전력값이 없는 0인 연산에서 순간 전력을 가해 1로 바꾸는 것)한다. 특정 연산 위치에 오류를 유발하는 것이 어렵지만 가능한 경우 상당한 효율을 가진다.
    • fault injection : DFA의 목적이 정상 비정상 연산간 차이를 통한 분석이라면 오류주입 자체를 목적으로 하는 공격이다. 예를 들어 도어락에 전자기 오류를 주입하여 열림 신호로 착각하게 만드는 것이 있다.(사실상 DFA 상위 카테고리로 봐야한다. DFA도 오류 주입이 우선시 되기 때문이다.)
    • Data remanence
    • Row hammer
    • Cache Side-channel attack: 특정 프로그램이 작업하는 동안 캐시 메모리에 남는 흔적을 수집, 분석하는 공격 기법.[3]

2.1. Meltdown/Spectre

최신 프로세서의 특성을 이용한 공격 기법이다.

2.2. Row Hammer

DRAM 공정의 미세화에 따라 나타나게 된 셀간 간섭 현상을 이용해 데이터를 변조하는 공격 기법이다. 2010년대 초반 이후 생산된 모든 미세공정 기반 DRAM이 영향을 받는다. (삼성전자의 경우 35나노 이하, 하이닉스의 경우 44나노 이하, 마이크론의 경우 50나노 이하) 아래는 DRAM 공정별 Row Hammer 취약도를 볼 수 있는 데이터이다:

DDR3 DRAM 칩별 Row Hammer 성공률 데이터 [펼치기 · 접기]
||<|2> 제조사 ||<-2> 칩 구성 ||<-2> 리비전 ||<-2> 타이밍 ||<|2> 평균 성공 수 ||<|2> RIth
(min., ms)[4] ||
용량 스테핑 주차 속도 (MT/s) tRC (ns)
마이크론 DRAM
마이크론 1 Gb x16 B-die 10-08 1066 50.6 0 -
마이크론 1 Gb x16 B-die 10-20 1066 50.6 0 -
마이크론 68나노 기반 DRAM
마이크론 1 Gb x8 F-die 10-20 1066 50.6 0 -
마이크론 50나노 기반 DRAM
마이크론 2 Gb x16 D-die 11-24 1066 49.1 7.8 x 101 21.3
마이크론 2 Gb x16 D-die 11-26 1066 49.1 2.4 x 102 16.4
마이크론 2 Gb x16 D-die 11-50 1066 49.1 8.8 x 101 26.2
마이크론 2 Gb x16 D-die 12-22 1600 50.6 9.5 x 100 34.4
마이크론 ??나노(50나노?) 기반 DRAM
마이크론 2 Gb x8 M-die 12-26 1600 49.1 1.2 x 102 21.3
마이크론 30나노 기반 DRAM
마이크론 2 Gb x8 K-die 12-40 1600 48.1 8.6 x 106 8.2
마이크론 2 Gb x8 K-die 13-20 1600 48.1 1.7 x 106 9.8
마이크론 2 Gb x8 K-die 13-28 1600 48.1 5.7 x 104 16.4
마이크론 2 Gb x8 K-die 14-04 1600 48.1 0.5 x 100 18.0
마이크론 ??나노 기반 DRAM
마이크론 2 Gb x8 ? 13-02 1600 48.1 1.8 x 106 11.5
마이크론 2 Gb x8 ? 13-14 1600 48.1 4.0 x 101 21.3
마이크론 2 Gb x8 ? 14-04 1600 49.1 2.7 x 105 18.0
삼성전자 68나노/56나노 기반 DRAM
삼성전자 1 Gb x8 D-die 08-49 1066 50.6 0 -
삼성전자 1 Gb x8 E-die 09-49 1066 50.6 0 -
삼성전자 46나노 기반 DRAM
삼성전자 1 Gb x8 F-die 10-19 1066 50.6 0 -
삼성전자 1 Gb x8 F-die 11-16 1066 50.6 0 -
삼성전자 1 Gb x8 F-die 11-19 1066 50.6 0 -
삼성전자 2 Gb x8 C-die 10-31 1333 49.1 0 -
삼성전자 2 Gb x8 C-die 11-13 1333 49.1 0 -
삼성전자 2 Gb x8 C-die 11-25 1333 49.1 0 -
삼성전자 2 Gb x8 C-die 11-49 1333 49.1 0 -
삼성전자 35나노 기반 DRAM
삼성전자 2 Gb x8 D-die 11-37 1333 49.1 1.9 x 106 11.5
삼성전자 2 Gb x8 D-die 12-01 1866 47.1 9.1 x 105 9.8
삼성전자 2 Gb x8 D-die 12-10 1866 47.1 9.8 x 105 11.5
삼성전자 2 Gb x8 D-die 13-40 1333 49.1 2.6 x 104 21.3
삼성전자 2 Gb x8 D-die 14-07 1333 49.1 7.5 x 103 26.2
삼성전자 28나노 기반 DRAM
삼성전자 2 Gb x8 E-die 12-25 1600 48.1 7.4 x 105 11.5
삼성전자 2 Gb x8 E-die 12-28 1600 48.1 5.2 x 105 11.5
삼성전자 2 Gb x8 E-die 12-31 1600 48.1 4.0 x 105 13.1
삼성전자 2 Gb x8 E-die 13-19 1600 48.1 1.1 x 105 14.7
하이닉스 DRAM
하이닉스 1 Gb x8 T-die 10-43 1333 49.1 0 -
하이닉스 54나노 기반 DRAM
하이닉스 2 Gb x8 A-die 10-18 1333 49.1 0 -
하이닉스 2 Gb x8 A-die 10-20 1066 50.6 0 -
하이닉스 2 Gb x8 A-die 10-22 1066 50.6 0 -
하이닉스 44나노 기반 DRAM
하이닉스 2 Gb x8 B-die 10-26 1333 49.1 8.9 x 102 29.5
하이닉스 2 Gb x8 B-die 10-51 1333 49.1 4.0 x 102 29.5
하이닉스 2 Gb x8 B-die 11-12 1333 46.3 6.9 x 102 21.3
하이닉스 2 Gb x8 B-die 11-19 1333 46.3 9.2 x 102 27.9
하이닉스 2 Gb x8 B-die 11-31 1333 49.1 3.0 x 100 39.3
하이닉스 2 Gb x8 B-die 11-42 1333 49.1 1.6 x 102 39.3
하이닉스 35나노 기반 DRAM
하이닉스 2 Gb x8 C-die 11-48 1600 48.1 7.1 x 104 19.7
하이닉스 2 Gb x8 C-die 12-08 1333 49.1 3.9 x 104 21.3
하이닉스 2 Gb x8 C-die 12-12 1333 49.1 3.7 x 104 21.3
하이닉스 2 Gb x8 C-die 12-20 1600 48.1 3.5 x 103 27.9
하이닉스 2 Gb x8 C-die 12-24 1600 48.1 6.5 x 104 21.3
하이닉스 2 Gb x8 C-die 12-26 1600 48.1 2.3 x 104 24.6
하이닉스 2 Gb x8 C-die 12-32 1600 48.1 1.7 x 104 22.9
하이닉스 2 Gb x8 C-die 12-37 1600 48.1 2.3 x 104 18.0
하이닉스 2 Gb x8 C-die 12-41 1600 48.1 2.0 x 104 19.7
하이닉스 2 Gb x8 C-die 13-11 1600 48.1 3.3 x 105 14.7
하이닉스 2 Gb x8 C-die 13-35 1600 48.1 3.7 x 104 21.3
하이닉스 ?나노 기반 DRAM
하이닉스 2 Gb x8 E-die 12-23 1600 48.1 1.4 x 105 18.0
출처: Y. Kim et al., "Flipping bits in memory without accessing them: An experimental study of DRAM disturbance errors," 2014 ACM/IEEE 41st International Symposium on Computer Architecture (ISCA), Minneapolis, MN, USA, 2014, pp. 361-372, doi: 10.1109/ISCA.2014.6853210.


Row Hammer 공격의 발표 이후 OS 및 소프트웨어 차원의 패치, 프로세서 및 DRAM 차원의 대응이 이루어졌으나 아직도 Row Hammer 기반 취약점이 계속 나타나고 있다.

2.3. Cold Boot

축전기에 저장된 전하의 양을 통해 값을 저장하는 DRAM 메모리는 누설 전류에 의해 시간이 지남에 따라 데이터가 휘발된다. 그러나 극저온 환경에서는 데이터가 휘발되는 데 걸리는 시간이 크게 증가하는데, 이 점을 이용해 DRAM을 극저온 환경에 노출시킨 뒤 실행중인 시스템을 강제 종료 후 데이터를 탈취하는 기법이다.

3. 주요 공격 대상(장치)

4. 주요 공격 대상(알고리즘)

5. 관련 기사

6. 관련 연구 주체(또는 단체)

6.1. 관련 컨퍼런스

6.2. 프로젝트 그룹

  • SCARD project (Europe)
  • Mars project (France)
  • CACE project (EU FP7)
  • INSTAC project (Japan)
  • DPA Contest (Global)
  • SASEBO project (Japan)
  • SAKURA project (Japan)
  • SCARF project 2016년 1월 29일자 확인한 바로는 해당 주소의 서비스 기한이 만료되었다고 한다. 한국의 부채널 공격 연구는 맥이 끊기는가... (Korea)
  • ChipWhisperer (Open project)

6.3. 대학 연구실

다음은 부채널 분석을 연구하는 대학 연구실 목록이다.

6.4. ChipWhisperer

부채널 공격을 위한 오픈 프로젝트이다. 필요한 하드웨어와 소프트웨어 모두 공개하여 누구나 시도해 볼 수 있는 환경을 제공해 준다. 직접 하드웨어를 제작할 수 없는 순수(?) 소프트웨어 맨들을 위해 킥스타터를 통한 크라우드 펀딩으로 출시한 제품도 판매하고 있다. #

분석을 위한 하드웨어는 크게 분석용 메인 보드, 분석 대상 구현 보드로 FPGA 기반이다. 분석 대상 구현은 AVR/Xmega 프로그래밍을 통해 구현 할 수 있다. 분석 소프트웨어에 AVR/Xmega 프로그래머 기능을 탑재하고 있다. 단순히 크로스 컴파일 된 파일을 분석 대상 보드에서 다운로드 하는 기능을 제공한다. 소프트웨어는 Python 기반으로 작성됐다. 분석 대상을 구동시켜 파형을 수집하는 캡처 소프트웨어와 해당 파형 파일로 분석을 진행하는 분석 소프트웨어로 설계됐다.

CHES2016 컨퍼런스에서 부채널 공격 CTF를 개최했다. 장치의 소비 전력을 측정하는 도구들은 클라우드로 제공된다고 하니 참가자가 장비를 갖추지 않고도 도전해 볼 수 있는 기회이기도 하다.

7. 사례분석

7.1. DES를 대상으로 한 DPA

영상

8. 관련 문서



[1] Paul C. Kocher, Timing Attacks on Implementations of Diffie-Hellman, RSA, DSS, and Other Systems, 1996. [2] KOEUNE, François; STANDAERT, François-Xavier. A tutorial on physical security and side-channel attacks. In: Foundations of Security Analysis and Design III. Springer Berlin Heidelberg, 2005. p. 78-108. [3] CPU게이트가 여기에 해당한다. [4] DDR 메모리의 표준 Refresh Interval은 64 ms이다. [5] 취소선을 쳤지만 인간의 취약점을 대상으로 한 공격도 적지 않다. 자세한 내용은 APT(해킹) 문서 참조. [6] KISA, 곽진 등, “부채널 공격 취약성 평가방법론 및 기준개발,” KISA-WP-2009-0065, 2009.

분류