Paracrypt

Paracrypt is an open-source AES GPU implementation that 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.

* only decryption

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). It is expected to obtain performance yields around 55% with CTR encryption and 49% with CBC or CFB decryption although the SSD of our machine seem to be acting as a bottleneck so it is important to perform more tests in environments that can supply higher rates of data while benchmarking how much PCI-e bandwidth is being used to ascertain if higher speedups against a CPU version are possible with Paracrypt.

Documentation

GPU Accelerated AES (also available at the Technical University of Madrid Digital Archive)

This paper explore different available alternatives regarding to the GPU acceleration of an Advanced Encryption Standard (AES) software implementation. The aim is to present if GPUs could be used to efficiently satisfy the high-throughput necesities when processing large rates of data. The reader will be thoroughly introduced in the area of GPU cipher acceleration so he can obtain a better understanding of the challenges and possibilities GPU hardware has to offer. For this reason, the paper will review the characteristics of symmetric ciphers, the impact of the block mode of operation for parallelization, and the advantages and disadvantages of diverse parallel programming models. The paper discuss the specific details of a high-performance AES implementation, Paracrypt, along with its performance outcomes and limitations.

The project presentation is also available in spanish:

Downloads

paracrypt.0.9.0-dev-light.zip Contains the source code, linux installer, and scripts to generate performance results.
paracrypt.0.9.0-dev.zip This bundle also contains reference papers and previous development versions.

Code Repository

If someone wants to improve or fork the implementation, it is hosted on GitHub. The code is released under the GNU GPLv3 license.