Parallel Analysis and Acceleration Method of AES Algorithm Based on OpenCL
|Keywords||OpenCL Parallel AES GPU Optimization|
As we know, parallel computing has been deep into all areas of research and life, thespeed and efficiency of a single calculation can no longer meet our needs. In the near future,many algorithms and software will be re-parallelization. The multi-core processors andmulti-threaded to improve performance through parallel are the means we are more familiarwith. Now, many countries and many organizations are in the study of parallel architecture,in the meantime some popular parallel programming languages appear. The goal of myarticle is to use the OpenCL, the new language in parallel computing, and to achieve theacceleration using parallelization in AES. It is also an API and environment of program thatcould be used in many platforms. It expands the use of the CPU and GPU and help peopleto obtain more performance. The AES is the algorithm that we will take advantage of, it isthe new famous block cipher algorithm that is used a lot in many fields.I analyzed theparallelism of the four modes of ECB, CFB, CBC, CTR in AES, which contains thealgorithm of key expansion and the algorithm of encryption, and I tried to use theprocessing unit of GPU as the processor in order to obtain more computing power and lesstime. In this article I present an implementation of AES using OpenCL，first of all，I presenta common architecture of OpenCL，it consist of platform，memory，execution andprogramming. It is an inclusive relation with CUDA, that is to say, its general realizationprocess is similar to CUDA, from equipment management to starting kernel, then toperforming kernel. Then I do some optimization to obtain more effect, the optimization ismainly about the data transfer of CPU and GPU and the access of memory. Then I use theintegrated program to encrypt a few plaintexts, and recorded the statistics of the tests, theplaintexts are mainly about12M,100M,500M. The results of my tests show that theOpenCL implementation can achieve about10times speedup in comparison to the onebefore. But, the paralleling is not suitable for small file, we can use serial processing to do that. Usually for the big work and similar work, we can use the paralleling.Anyway theparallel computing on GPU is true eligible. I believe not only in the AES algorithm, butmany other algorithms can use this method to improve the performance. The parallelcomputing languages like OpenCL are bound to have a broader space for development.