그래픽 프로세서(GPU)의 연산 능력은 이미 CPU를 능가하고 있으며, 그 격차는 점점 벌어지고 있다. 따라서, 범용 계산에 그래픽 프로세서를 활용하는 GPGPU 연구가 활발히 전개되고 있으며, 병렬 처리가 필요한 분야에서 특히 두드러진 성과를 보이고 있다. GPU를 이용한 암호 알고리즘의 구현은 2005년 Cook 등에 의하여 처음 시도되었으며, OpenGL, DirectX 등의 라이브러리를 이용하여 개선된 결과들이 속속 발표되고 있다. 본 논문에서는 2007년 발표된 NVIDIA의 CUDA 라이브러리를 이용한 블록암호 구현 기법과 그 결과를 소개하고자한다. 또한, 소프트웨어로 구현된 블록암호 소스를 GPU 프로그램으로 이식하는 일반적인 방법을 제공하고자 한다. 8800GTX GPU에서 블록암호 AES, ARIA, DES를 구현했으며, 속도는 각각 4.5Gbps, 7.0Gbps, 2.8Gbps로 CPU보다 고속 구현이 가능하였다.
그래픽 프로세서(GPU)의 연산 능력은 이미 CPU를 능가하고 있으며, 그 격차는 점점 벌어지고 있다. 따라서, 범용 계산에 그래픽 프로세서를 활용하는 GPGPU 연구가 활발히 전개되고 있으며, 병렬 처리가 필요한 분야에서 특히 두드러진 성과를 보이고 있다. GPU를 이용한 암호 알고리즘의 구현은 2005년 Cook 등에 의하여 처음 시도되었으며, OpenGL, DirectX 등의 라이브러리를 이용하여 개선된 결과들이 속속 발표되고 있다. 본 논문에서는 2007년 발표된 NVIDIA의 CUDA 라이브러리를 이용한 블록암호 구현 기법과 그 결과를 소개하고자한다. 또한, 소프트웨어로 구현된 블록암호 소스를 GPU 프로그램으로 이식하는 일반적인 방법을 제공하고자 한다. 8800GTX GPU에서 블록암호 AES, ARIA, DES를 구현했으며, 속도는 각각 4.5Gbps, 7.0Gbps, 2.8Gbps로 CPU보다 고속 구현이 가능하였다.
The computing power of graphics processing units(GPU) has already surpassed that of CPU and the gap between their powers is getting wider. Thus, research on GPGPU which applies GPU to general purpose becomes popular and shows great success especially in the field of parallel data processing. Since t...
The computing power of graphics processing units(GPU) has already surpassed that of CPU and the gap between their powers is getting wider. Thus, research on GPGPU which applies GPU to general purpose becomes popular and shows great success especially in the field of parallel data processing. Since the implementation of cryptographic algorithm using GPU was started by Cook et at. in 2005, improved results using graphic libraries such as OpenGL and DirectX have been published. In this paper, we present skills and results of implementing block ciphers using CUDA library announced by NVIDIA in 2007. Also, we discuss a general method converting source codes of block ciphers on CPU to those on GPU. On NVIDIA 8800GTX GPU, the resulting speeds of block cipher AES, ARIA, and DES are 4.5Gbps, 7.0Gbps, and 2.8Gbps, respectively which are faster than the those on CPU.
The computing power of graphics processing units(GPU) has already surpassed that of CPU and the gap between their powers is getting wider. Thus, research on GPGPU which applies GPU to general purpose becomes popular and shows great success especially in the field of parallel data processing. Since the implementation of cryptographic algorithm using GPU was started by Cook et at. in 2005, improved results using graphic libraries such as OpenGL and DirectX have been published. In this paper, we present skills and results of implementing block ciphers using CUDA library announced by NVIDIA in 2007. Also, we discuss a general method converting source codes of block ciphers on CPU to those on GPU. On NVIDIA 8800GTX GPU, the resulting speeds of block cipher AES, ARIA, and DES are 4.5Gbps, 7.0Gbps, and 2.8Gbps, respectively which are faster than the those on CPU.
* AI 자동 식별 결과로 적합하지 않은 문장이 있을 수 있으니, 이용에 유의하시기 바랍니다.
문제 정의
본 논문에서는 2007년 NVIDIA에서 발표한 CUDA (Compute Unified Device Architecture)]]2] 라이브러리를 이용하여 블록암호를 구현하는 방법과 AES, ARIA, DES의 구현 결과를 제시하고자 한다. 또한, 블록암호의 종류에 무관하게 기존의 CPU용 프로그램을 GPU 프로그램으로 변환하는 틀을 제공하여 다른 블록암호에도 쉽게 활용할 수 있도록 하였다,
CUDA는 비록 NVIDIA의 GPU에서만 동작한다는 제약이 있지만, 그 성능과 프로그래밍의 편이성 때문에 병렬 연산이 필요한 과학 기술 분야에서 크게 환영받고 있다. 본고에서는 CUDA 라이브러리를 이용한 블록암호의 구현을 소개하였다. 대부분의 블록암호는 기존 CPU용 소스 코드로부터 쉽게 구현할수 있으며, 성능도 CPU를 크게 능가하는 결과를 얻었 匸+.
블록암호를 구현하기 위하여 CUDA를 이용한 프로그램의 제어 흐름과 기본 틀에 대하여 알아보자. CUDA는 C언어의 확장으로 설계되었으며, GPU에서 실행되도록 작성된 커널은 그래픽 카드가 설치된 호스트 PC의 호출에 의해서 시작된다.
AMD(구 ATI)의 Yang 등 [11]은 자사의 GPU인 HD 2900 XT에서 AES 키 탐색을 비트 슬라이스 기법으로 구현하는 경우 30 Gbps에 도달할 수 있음을 ASIACRYPT 2007에서 주장하였다. 이 결과는 DirectX와 ATI CTM 및 GPU 어셈블리를 이용한 최적화를 통하여 얻은 것이다.
이제 그래픽 카드에서 실제로 암호화를 수행하는 커널 함수를 살펴보자. 커널의 구성에 따라 각 쓰레드는 그리드내의 블록 좌표 (bX, bY)와 블록내 쓰레드 좌표 (tX, tY)를 고유 번호로 사용할 수 있다.
가설 설정
① CPU/GPU 발전속도의 불균형 : CPU의 발전 방향이 연산능력의 증대에서 멀티 코어의 탑재로 전환되고 있어 CPU의 속도 증대는 다소 주춤한 상태이다. 반면 GPU의 계산능력은 매년 약 2배 정도증가하고 있으며 GFLOPS로만 비교한다면 CPU 의 처리능력을 압도하고 있다.
제안 방법
속도 측정 환경으로 Core 2 Duo 6600 CPU, 1GB 메모리를 가진 PC 에 NVIDIA Geforce 8800을 사용하였 匸+. AES와 ARIA는 8비트, 32비트 구현을 모두 실험하였고, DES의 경우는 8비트로 분할하는데 무리가 있어하나의 쓰레드가 독립적인 DES 암호화를 수행하는 방식으로 처리하였다. 반복 측정하여 평균 속도를 계산한 결과는 [표 3]과 같다.
블록암호의 종류에 따라 Sbox의 개수와 데이터 타입이 달라지지만, 아래의 소스를 크게 벗어나지 않는다. 실제로 아래의 틀을 이용하여 블록암호 AES, ARIA, DES를 구현하였으며, 그 결과는 다음절에서 다루도록 한다.
즉, 글로벌 메모리에 저장된 평문 데이터를 암호화하여 다시 글로벌 메모리의 지정된 위치에 넣은데 소요되는 시간으로 처리속도를 계산하고 비교하였다. 속도 측정 환경으로 Core 2 Duo 6600 CPU, 1GB 메모리를 가진 PC 에 NVIDIA Geforce 8800을 사용하였 匸+.
대상 데이터
속도 측정 환경은 NVIDIA 8800GTS와 8800GTX로 각각 12개와 16개의 멀티 프로세서를 가지고 있다. 구현 결과는 [표 3]과 같으며, 프로세서의 개수와 메모리 대역폭을 고려하면, 프로세서의 개수에 거의 정비례하는 속도 향상을 보임을 알 수 있다.
전 그리드를 구성해야 한다. 위의 예는 100 (10x10)개의 쓰레드로 구성된 블록을 10, 000(100 X100)개 가지는 그리드 구성을 보여준다. 이 경우 총쓰레드乌 개수는 1, 000, 000개가 실행되며, 한 블록에 들어있는 100개의 쓰레드는 서로 데이터를 공유하며 병렬 처리를 수행할 수 있지만, 블록들 사이의 실행은 완전히 독립적이다.
성능/효과
구현 결과는 [표 3]과 같으며, 프로세서의 개수와 메모리 대역폭을 고려하면, 프로세서의 개수에 거의 정비례하는 속도 향상을 보임을 알 수 있다.
DES의 구현 결과를 제시하고자 한다. 또한, 블록암호의 종류에 무관하게 기존의 CPU용 프로그램을 GPU 프로그램으로 변환하는 틀을 제공하여 다른 블록암호에도 쉽게 활용할 수 있도록 하였다,
즉, 공유메모리 사용량의 차이로 멀티 프로세서에 올려놓을 수있는 쓰레드 블록의 개수가 달라지기 때문이다. 또한, 최종 라운드를 다른 라운드와 달리 구현하는 AES보다 프로그램의 흐름을 간단히 구현할 수 있어 레지스터만으로 구현이 가능하여, 레지스터 부족으로 로컬 메모리까지 사용한 AES보다 시간 지연(latency)을 줄일 수 있었던 것도 속도에 영향을 주었다. DES의 경우 많은 비트 연산이 필요하여 공유 메모리 점유는 적었으나 실행속도는 느린 결과를 얻었다.
AES를 하드웨어로 구현하는 경우 23Gbps[15]까지 가능하다는 결과가 있으며, ARIA도 20Gbps급 설계 기법이 알려져 있다. 전용 블록암호 칩셋을 사용하는 것이 구현속도나 경제적인 측면에서 우수하나, GPU를 이용하면 PC에서 소프트웨어 구현으로도 전용 칩셋에 근접한 결과를 얻을 수 있음을 알 수 있다. 특히, 여러개의 그래픽 카드를 PC에 연결하면, 전용 칩셋 이상의 속도를 기대할 수 있으며, 필요에 따라 다양한 알고리즘을 적용할 수 있는 유연성을 가질 수 있다.
후속연구
현재의 부채널 공격도 GPU 메모리 에 까지는 도달하지 못하고 있으며, GPU를 난수발생기나 스트림 암호에 사용하는 것도 좋은 응용이 될 수 있다. 논문에서 제시한 CUDA 프로그램의 기본 프레임 웍은 기존의 CPU용 블록암호 소스코드를 GPU용으로 변환하는 도구로 활용될 수 있으며 암호구현 분야에서 GPU의 사용을 촉진할 수 있을 것으로 기대된다.
참고문헌 (15)
M. Houston, "GPGPU : General-Purpose Computation on Graphics Hardware", Course at SIGGRAPH 2007
The GPGPU Resources and Forums, http://www.gpgpu.org/
The first GPGPU workshop, Proceedings of the first Workshop on General Purpose Processing on Graphics Processing Units, http://www.ece.neu.edu/GPGPU, 2007
Astro GPU, Workshop on General Purpose Computation on Graphics Processing Units in Astronomy and Astrophysics, http://astrogpu.org, 2007
J. Zambreno, D. Nguyen, A. Choudhary, Exploring are/delay tradeoffs in an AES FPGA implementation, Proc. 14th Int Conf. Field-Programmable Logic and its Applications, FPL 2004
※ AI-Helper는 부적절한 답변을 할 수 있습니다.