본문 바로가기
논문

GPU 메모리 접근 시간 부채널 특성 분석

by Lizardee 2023. 5. 1.
요약

최근 연구에서 GPU에서 수행하는 AES와 RSA와 같은 암호 알고리즘에서 GPU의 고유한 메모리 접합 구조에 따른 메모리 접근 시간의 차이를 이용하여 공격자가 암호키를 복원할 수 있음이 밝혀졌다.
이는 GPU 캐시 구조 및 메모리 접합 방식에 따라 공격자가 역연산을 통해 GPU의 메모리 요청 개수와 이에 따른 암호화 커널의 수행시간의 관계를 쉽게 알아낼 수 있기 때문이다. 
본 연구에서는 변환 테이블을 사용하는 암호화 알고리즘에서 GPU의 메모리 접합 크기 및 변환 테이블의 접근 시간에 따른 GPU의 메모리 접근 시간 부채널의 특성을 GPU 구조 시뮬레이터를 통해 분석하였다.
이러한 분석을 통하여 메모리 접합 크기 및 접근 시간에 따라 GPU 메모리의 부채널 취약성이 변화함을 밝혀냈으며, 이러한 GPU 메모리 부채널의 취약점을 dummy 메모리 요청의 추가로 보완할 수 있음을 보여주었다.
 

···
 

1. 서론

Graphics processing unit(GPU)은 주로 그래픽이나 비디오 어플리케이션을 가속하기 위해서 개발되었으나, 현재는 대규모 병렬처리를 요구하는 기계 학습이나 빅데이터 어플리케이션과 같이 고성능 어플리케이션을 가속하는 데에 널리 쓰이고 있다. 이는 GPU가 수백 개의 간단한 코어를 가지고 있으며, 이렇게 많은 수의 코어를 사용하여 수백/수천개의 쓰레드(thread)를 동시에 실행시킬 수 있는 능력을 가지고 있기 때문이다. 
 
 
이러한 GPU의 고성능 처리 능력을 사용하여 최근에는 AES와 RSA와 같은 널리 쓰이는 암호화 어플리케이션을 GPU용으로 개발하여 실행하고 있다. 즉, GPU에서 암호화 어플리케이션을 수행하여 대량의 평문이나 암호문 데이터를 병렬적으로 처리함으로써 암호화/복호화 과정의 처리량을 크게 향상시킬 수 있다. 
 
 
그렇지만 최근에 GPU가 가지고 있는 고유의 메모리 접합(memory coalescing) 특성으로 인하여 AES의 암호키 값에 따라서 암호화 커널의 수행시간이 달라지고, 이를 이용하여 AES 암호키를 탈취할 수 있음이 밝혀졌다. 
 
암호화/복호화의 처리 시간을 줄이고 GPU의 병렬처리방식을 이용하기 위해서 AES와 같은 암호화 방식은 변환 테이블을 사용한다. AES는 여러 단계의 암호화 과정을 가지고 있으며, 각 단계마다 암호키와 비선형적인 데이터 처리를 통하여 결정된 결과값을 사용하여 변환 테이블에서 해당되는 결과값을 구하게 된다. 
GPU는 수십개의 쓰레드를 모은 warp라는 단위로 명렬어를 수행하며, 같은 warp 안에 있는 쓰레드들은 모두 같은 명령어를 수행한다. 암호화 커널의 변환 테이블에서 데이터를 인덱스로 읽어오는 부분은 load 명령어로 GPU에서 수행이 되며, 이러한 메모리 명령어를 효율적으로 처리하기 위해서 GPU에서는 하나의 warp 안의 여러 쓰레드에서 생성된 주소값이 동일한 캐시 라인의 데이터 영역에 있을 경우, 이에 해당하는 메모리 요청들을 병합하여 하나의 메모리 요청으로 만들게 된다. 이를 메모리 접합 과정이라고 부른다.
 
즉, AES 커널에서 하나의 warp에서 생성된 메모리 요청의 수는 메모리 접합 과정을 거치게 되면서 암호키에 따라 달라지게 되며, 이에, 암호키에 따라서 암호화 과정은 다른 수행 단계를 보이게 된다.
공격자는 비교적 간단한 AES의 마지막 단계를 역변환 테이블을 사용하여, 마지막 단계의 메모리 요청 개수를 계산할 수 있으며, 메모리 요청 개수에 따라 수행시간이 비례하여 나타난다는 점을 이용하여 암호키를 유추할 수 있게 된다. 
 
요약하자면 GPU에서는 메모리 접합 과정에 따른 메모리 요청의 개수가 암호키에 따라 달라지게 되고, 이는 메모리 요청의 개수에 비례한 메모리 접근 시간으로 나타나게 되므로 보안에 취약하게 된다.
 
 
이번 연구에서는 변환 테이블을 사용하는 암호화 알고리즘에서 GPU의 메모리 접합 크기 및 변환 테이블의 접근 시간에 따른 GPU의 메모리 접근 시간 부채널의 특성을 GPU 구조 시뮬레이터를 이용해 분석하였다.
또한 앞에서 설명한 GPU의 공격 취약점을 보완하기 위하여 dummy 메모리 요청을 추가함으로써 메모리 요청 개수에 따른 메모리 접근 시간 부채널 특성이 어떻게 변할 수 있는지를 보여주었다.
 
 

2. 실험 환경

▶ GPGPU-Sim
 
 메모리 접합 크기: 64 byte, 128 byte
--> 메모리 접합 크기에 따른 메모리 부채널의 특성을 분석한다.
 
 테이블 데이터가 저장되는 위치: L1 캐시, L2 캐시, DRAM
--> 변환 테이블의 접근 시간에 따른 부채널의 특성 및 취약점을 분석한다.
 
 

3. 메모리 계층과 접합 크기에 따른 비례 관계 변화
현상 분석

▶ 메모리 접합 크기가 클수록, 상위의 메모리 계층을 사용할수록 공격 난이도는 상승한다.
 
▷ 메모리 접합 크기가 변화하여 메모리 요청이 변화하게 되는 경우, 이는 메모리 지연시간에 영향을 주게 된다. 따라서 메모리 지연 시간의 변화는 비례 관계의 변화로 나타나게 되는데, 접합 크기가 작아지는 경우, 비례 관계가 증가하는 것을 볼 수 있다. 이렇게 비례 관계가 증가하는 경우 공격의 난이도는 낮아지게 된다.
 
▷ 상위의 메모리 계층을 사용할수록 메모리로 인한 메모리 지연시간이 줄어든다. 따라서 메모리 요청 개수와 실행 시간 사이의 연관성을 찾기 더 어려워지고, 이로 인해 공격의 난이도는 상승한다.
 

해결책

부채널공격을 막기 위한 보편적이고 간단한 방법은, 공격자가 정확한 메모리 요청 개수를 알아내지 못하게 하는 것이다.
만일 AES를 실행하는데 필요한 메모리 요청 개수가 있다면, 여기에 메모리 요청 개수를 임의로 추가하여 비례관계를 깨뜨릴 수 있다. 
 
AES에서 사용하는 테이블의 경우 1KB이므로, GPU의 캐시 8개의 블록에 모두 담길 수 있다. 따라서 AES를 실행할 때 실제 메모리 요청 개수에, 추가적인 메모리 요청 개수를 더해서 모든 메모리 요청을 8개로 보이게 한다면, 공격자는 비례관계를 찾아낼 수 없게 된다. 여기서 가짜로 추가하는 메모리 요청을 dummy 메모리 요청이라고 한다.
 
 

4. 결론

▶ 메모리 계층이 높으면, 메모리 지연시간이 줄어들어 공격이 더 어려워지고, 메모리 접합 크기가 낮아지게 되면 그로 인한 메모리 지연이 증가하여 메모리 요청 개수와 실행시간 사이의 비례관계가 증가하게 되어 공격이 더 쉽게 가능해진다.
 
▶ dummy메모리 요청을 사용할 시, AES의 마지막 라운드에서 메모리 요청 개수와 실행시간 사이의 비례관계가 사라져, 공격을 할 수 없게 된다.
 
▶ 이를 활용하여 메모리 요청 개수와 실행시간 사이의 비례관계를 사라지게 하면서, 효율이 낮아지지 않는 GPU 메모리 계층 구조 및 동작 방식을 연구하여 신뢰성을 보장할 수 있게 만드는 것이 향후에 수행할 연구 과제이다.
 
 
 
출처: https://www.dbpia.co.kr/journal/articleDetail?nodeId=NODE11035955

GPU 메모리 접근 시간 부채널 특성 분석 | DBpia

정승호, 윤명국, 구건재 | 한국정보과학회 학술발표논문집 | 2021.12

www.dbpia.co.kr

 


https://gp-lizardee.tistory.com/361
https://gp-lizardee.tistory.com/362
https://gp-lizardee.tistory.com/363