Abstract
An open-source AES GPU implementation has been developed from scratch with CUDA.
The implementation is based in lookup tables and supports ECB, CTR, CBC*, and CFB*
operation modes. Factors such as the parallelism level, the use of constant and shared
memory, asynchronous page-locked IO, and overlapping between data transfers and calculations
has been taking into account. The results show a speedup peak of 119% with
CTR encryption against OpenSSL’s CPU implementation with files larger than 60 MB
(without AES-NI support) and a peak of 87% with CBC/CFB decryption of files larger
than 125 MB. The maximum registered throughput is 237 MB/s, above drive buffer read
rate of 208 MB/s (non-cached). Although it is expected to obtain performance yields
around 55% with CTR encryption and 49% with CBC or CFB decryption, it is recommended
to consider the use of a CPU implementation with AES-NI hardware until the
current implementation is further analysed and, if possible, optimized.---ABSTRACT---Se ha realizado una implementación GPU de código abierto en CUDA del cifrador AES
con tablas de búsqueda en los modos de operación ECB, CTR, CBC*, y CFB*. Se han
tenido en cuenta distintos factores de rendimiento, entre ellos el nivel de paralelismo,
el uso de memoria constante y compartida, la lectura asíncrona de ficheros en memoria
no paginada, y el solapamiento de transferencias y cómputo. Se ha alcanzado una mejora
máxima de 119% para el cifrado en modo CTR con respecto a la implementación CPU de
OpenSSL (sin AES-NI) y una mejora máxima del 87% para el descifrado CBC/CFB. El
mayor rendimiento registrado es de 237 MB/s, que esta por encima de la tasa de lectura
con buffer del disco de 208 MB/s (sin cache). Aunque se pueden obtener mejoras del
55% para el cifrado CTR con ficheros con tama˜no mayor de 60 MB y del 49% para
descifrado CBC o CFB con ficheros mayores de 125 MB, se recomienda considerar el
uso de una implementación CPU junto con hardware con soporte de la extensión AES-NI
hasta que la implementación actual se analize en mas detalle y, si es posible, se mejore su
optimización.