Side Channel Attack 이란?
컴퓨터 시스템 또는 암호화 장치에서 발생하는 부가적인 정보(Side Information과 같은)를 수집하여 공격하는 기술입니다. 부가적인 정보는 주로 전력 소비, 전자기파 방출, 시간, 소리 또는 기타 물리적인 특성을 통해 암호화된 데이터나 시스템의 정보를 유추하거나 해독하는 데 사용됩니다.
예를 들면, 컴퓨터나 노트북으로 사양이 매우 큰 게임을 할 때, 쿨러 돌아가는 소리가 커졌다 작아졌다 하는 경험이 있으실 수 있습니다. 그럼 소리만 들을 수 있는 공격자 입장에서는 어떻게 판단할 수 있을까요?? 적어도 "아 컴퓨터에 무리가 가는 프로그램을 실행시키고 있는 것 같네"라는 정보를 얻을 수 있을 것입니다.
또 다른 비슷한 예시로는 스마트폰 발열 같은 경우를 들을 수 있을 것 같습니다.
마침 2023년 8월에 (글 쓰는 기준으로 1년도 안되었네요) 음향 부채널 공격 관련한 연구 기사가 나왔습니다.
https://www.fnnews.com/news/202308260900547677
노트북 타이핑 소리로 계좌번호 해킹한다고?
[서울=뉴시스]윤정민 기자 = #지난주 토요일 오후, 오랜만에 휴가를 떠나기 위해 카페에서 체코 프라하행 비행기 표를 알아보던 직장인 A씨. 최저가 요금을 확인한 A씨는 비행기 표를 놓칠 수 없
www.fnnews.com
요약하자면, 키보드 타이핑 소리 정보를 이용하여 입력 값을 해킹한다는 내용입니다.
사실 잘 알려지지 않아서 그렇지 소리를 이용한 분석은 이전에도 있었습니다.
하지만 이 기사에서 특별한 건 AI를 이용했다는 점입니다. 사실 말이 AI이지, 그냥 딥러닝이라는 기술을 사용한 것입니다. 예를 들면, 기계한테 "빨간색이 보이면 사과야"라고 10번 가르쳐 줍니다. 그럼 이 기계는 빨간색만 보면 사과라고 응답하게 됩니다.
그런데 이 기계들은 사람과 다르게 아주 미세한 부분의 차이까지 구별하는 걸 대수롭지 않게 생각해서, 사람은 같다고 판단하더라도 잘 학습된 기계는 이를 구별할 수 있습니다.
그래서 실제로 부채널 분석에는 머신러닝, 딥러닝 등의 기술이 많이 사용되고 있습니다.
여기까지가 부채널 공격에 대한 간단한 예시가 될 것 같습니다.
부채널 분석은 1996년 Paul Kocher라는 분이 쓰신 DifferentialPowerAnalysis라는 논문(10820회 인용...🫢)에서 정식으로 시작되었다고 봅니다. 요약해서 DPA라고 전력 소비 정보를 이용한 공격입니다.
아래 사이트에서 Paul Kocher의 논문 등을 확인해 보실 수 있습니다.
Paul Kocher
Paul Kocher's home page I am an entrepreneur and researcher focused on cryptography and data security. To learn about Spectre and related speculative execution vulnerabilities, please read the paper or visit here. Brief bio Technical work Quick links: S
paulkocher.com
추가 - 오류 주입(fault attack, DFA), Row hammer attack
나무위키에 " 간단히 말하면 정면으로 돌파 못하니까 옆으로 친다"라고 되어있는데, 어느 정도는 맞는 말입니다.
들어보셨을지 모르겠는데 오류 주입(fault attack, DFA)이라던 Row hammer attack 도 이 부채널 공격의 한 종류입니다.
오류 주입은 간단하게는 bit flip이 있습니다. 오류(전자기파 등의 물리적 충격)를 주입해서 0을 1로 또는 1을 0으로 바꾸는 거죠.
이게 뭐 대단한 일이냐고 할 수 있는데, 예를 들어 지문인식으로 열리는 도어락 내부 시스템에서 특정 bit 값이 0일 때는 잠금이고 1일 때는 열린다고 하겠습니다. 이때 오류를 주입하면 등록된 지문이 아니어도 문이 열리는 기이한 현상을 목격할 수 있습니다.
Row hammer 공격은 DRAM내부의 cell( 트랜지스터 + 축전기)에서 bit flip이 일어나는 현상입니다. 그냥 간단하게 전하가 충전되어 있으면 1, 비어있으면 0입니다. 14년 IEEE ISCA 에서 처음 논문이 발표되었는데, 제가 아는 대로 이 논문이 발표되게 된 계기를 써보겠습니다. 정확한 내용은 아니니 재미로 들어주시길 바랍니다.
한국인 학생이 국내 DRAM 회사에서 인턴을 하게 됩니다. 그때 DRAM의 bit flip현상을 목격하죠. 그래서 이를 상사에게 보고했더니 "원래 가끔 그래"라는 답변이 돌아왔다고 합니다. 하지만 이에 의문을 계속 가지고 있다가 다시 학교로 돌아와 해당 논문을 쓰게 되죠. 이 논문은 제목에 쓰여있는 것처럼 "DRAM 교란 오류에 대한 실험적 연구" 입니다만...
당시 엄청난 화제를 몰고 왔고 세계적인 학술지에서 수상까지 한 것으로 알고 있습니다.
google에서는 실험용 코드도 제공합니다.
https://ieeexplore.ieee.org/document/6853210
Flipping bits in memory without accessing them: An experimental study of DRAM disturbance errors
Memory isolation is a key property of a reliable and secure computing system-an access to one memory address should not have unintended side effects on data stored in other addresses. However, as DRAM process technology scales down to smaller dimensions, i
ieeexplore.ieee.org
https://github.com/google/rowhammer-test
GitHub - google/rowhammer-test: Test DRAM for bit flips caused by the rowhammer problem
Test DRAM for bit flips caused by the rowhammer problem - google/rowhammer-test
github.com
부채널 공격 방법(예시 - Simple Power Analysis)
Side Channel Analysis 라 하면 주로 DPA와 같이 소비 전력과 전자기파 등을 이용한 방법을 쉽게 접할 수 있습니다.
위 사진은 RSA라는 공개키 암호가 동작할 때 나타나는 전력 파형입니다. 어떤 순간에는 전력 소비가 많아지고, 낮아지고를 반복하고 있습니다. 전자공학과 분들은 오실로스코프라던지 디바이스의 오류 검출등을 위해 이런 방법을 많이 사용하는 것으로 알고 있습니다.
전자공학도들이 사용하는 방법을 예시로 들면, Trigger 같은 걸 정해서 정상 동작하는 칩의 Wake up 부분과 불량 칩의 Wake up 부분 파형을 비교하고 다른 동작들도 이런 식으로 비교 분석하면서 어느 부분에서 오류가 발생하는지 찾아내는 식입니다.
위 내용은 몰라도 됩니다.ㅎㅎ
이런 식으로 파형의 정보를 이용하여 분석하는 방법을 Simple Power Analysis(SPA)라고 합니다.
마침 너무 잘 분석해 놓은 이미지가 있어서 가져왔습니다. 저기 0, 1로 쓰여있는 것이 비밀 키의 bit 값들입니다.
이미지 대로라면 01101101000 이런 식으로 분석이 가능하겠네요. 키 값의 일부를 알아냈습니다!
근데 이게 어떻게 가능한 거냐면, SW로 구현할 때 특정 연산에 패턴이 존재하기 때문입니다.
일반적으로 left to right modular exponentiation라는 알고리즘을 사용하는데 아래와 같습니다. 이해하려 애쓰지 않아도 됩니다.
굳이 이해할 필요는 없고, 이 알고리즘의 특징은 비밀키의 특정 위치의 bit값이 1인지 0 인지에 따라 추가적인 곱셈 연산이 일어납니다.
추가적인 연산은 추가적인 전력소모로 이어지는 것이지요. 그래서 0과 1의 구간을 전력 파형 이미지만으로 구별이 가능했던 겁니다.
RSA 외에도 AES, LEA 등 대칭키 암호에서도 자주 쓰입니다.
위 이미지는 제가 직접 AES-128 코드를 짜고 해당 암호화 과정 중 1라운드 전력 파형을 수집하여 분석했던 결과입니다.
대칭키 암호는 RSA처럼 키 값을 이미지만으로 0과 1로 값을 나눠 추측할 수 없습니다. 단, 어느 구간 연산인지는 추측이 가능합니다.
대칭키 암호의 비밀 키를 분석하기 위해서는 DPA나 CPA라는 분석 법을 사용하게 됩니다. 참고로 제가 짠 AES-128은 1초 만에 뚫렸습니다 ㅎㅎ
이를 막기 위한 방법도 존재합니다. Countermeasures라고 해서 값에 마스킹을 추가한다던가, 쓰레기 값을 넣는다던가 아니면 연산 순서를 예측 불가능하게 꼬아버린다던가(셔플링) 하는 기법이 있습니다. 하지만 항상 완벽한 방어법은 없고, 방어 기법을 적용하면 성능이 느려지기 때문에 성능과 보안의 적절한 선을 찾을 필요가 있습니다.
'암호학 강의' 카테고리의 다른 글
ChaCha20 stream cipher (1) | 2024.02.09 |
---|---|
[암호학] 해시함수 Hash Function (0) | 2023.11.09 |
[암호학] RSA 암호 (공개키암호) OpenSSL (0) | 2023.11.06 |
[암호학] 운용모드(운영모드) Modes of Operation (0) | 2023.11.05 |
[암호학] 국산 블록 암호 LEA (1) | 2023.11.02 |