As a submission to an implementation contest proposed by Keccak designers, this page presents a Graphics Processing Unit (GPU) implementation of Keccak cryptographic hash function, a candidate to the SHA-3 competition (...and finally selected as new SHA-3 standard).
A parallel tree hash mode is used to exploit the parallel compute capacity of the graphics cards. The Nvidia Cuda language has been used to access precisely the specificity of the GPU hardware (memory hierarchy, host-device memory transfers).
After optimizations of the cooperation between GPU and CPU, top speed of more than 1 GB/s (including data transfers) has been reached using an entry level GTS 250 card, for a 256 bits security target and hash length.
A Stream Cipher mode has also been implemented, which can find applications in high speed encryption or pseudo random number generation.
Copyright © 2010 Guillaume Sevestre