Cryptography in GPUs
Samuel Neves · 2009
Cryptography, the science of writing secrets, has been used for centuries to conceal information from eavesdroppers and spies. Today, in the information age, data security and authenticity are paramount, as more services and applications start to rely on the Internet, an unsecured channel. Despite the existence of security protocols and implementations, many online services refrain to use cryptographic algorithms due to their poor performance, even when using cryptography would be a clear advantage. Graphics processing units (GPU) have been increasingly used in the last few years for general purpose computing. We present and describe serial and parallel efficient algorithms for modular arithmetic in the GPU. Based on these, we developed GPU implementations of symmetric-key ciphers, namely AES and Salsa20, and public-key algorithms, such as RSA, Diffie-Hellman and DSA. We bundled this software into a library that contains the main achievements of this thesis. We show that our symmetric-key cipher and modular exponentiation implementations included in this library outperform recent Intel CPUs and all previous GPU implementations. We achieve 11686 512-bit modular exponentiations per second, 1215 1024-bit modular exponentiations per second and peak AES-CTR throughputs of 1032 MB/s.