Implementation of high speed hash function Keccak on GPU

Thuong Nguyen Dat, Keisuke Iwai, Takashi Matsubara, Takakazu Kurokawa


Nowadays, a hash function is used for password management. The hash function is desired to possess the following three characteristics: Pre-Image Resistance, Second Pre-Image Resistance, and Collision Resistance. They are set on the assumption that it is computationally difficult to find the original message from a given hash value. However, the security level of the password management will be further reduced by implementing a high speed hash function on GPU. In this paper, the implementation of high speed hash function Keccak-512 using the integrated development environment CUDA for GPU is proposed. The following four techniques are used in order to speed up its implementation. The first one is reforming lookup tables from 2 dimensional arrays to 1 dimensional arrays at step rho and pi. The second is an investigation into the effect of using constant memory and shared memory for constant values. The third is the finding out the optimal configuration of blocks-threads, then evaluate the implementation according to the occupancy. And the last one is using CUDA streams with overlapping to hide the overhead of data transfer and GPU processing.

As the result, the throughput of implemented Keccak on GeForce GTX 1080 achieved up to maximum 64.58 GB/s. It is about 14.0 times faster than the previous research result. In addition, the safety level of Keccak is also discussed at the point of Pre-Image Resistance especially. In order to implement a high speed hash function for password cracking, we developed a special program for passwords up to 71 characters. Moreover, the throughputs of 2 times as well as 3 times hash are also evaluated. It is proved that multiple times hash is possible to greatly improved the security level of Keccak with password management. The throughput of hashing password with a large number of iterations confirmed the effect was about 90%. That is the time required to hash one password for 1000 times was almost the same as the total time to sequentially hash 900 passwords.


Implementation; High speed; Keccak; GPU; CUDA; Password management

Full Text:



  • There are currently no refbacks.