AVX Instructions to Accelerate Crypto Primitives


1 2 3

Intel has released a new SIMD instruction set called AVX (Advanced Vector Extensions) in 2011. Compared to SSE, AVX has some interesting new features for accelerating crypto primitives: The 128 bit registers have been expanded to 256 bits, a nondestructive three-operand syntax has been added, and a new extension coding scheme (VEX) has been designed. Therefore we have implemented five common block ciphers, namely Serpent, Twofish, Blowfish, Cast-128, and Cast-256, exploiting the new Advanced Vector Extensions and its proposed successor AVX2.

Our AVX implementations are running on recent CPUs that support AVX, such as Sandy and Ivy Bridge processors. Our AVX2 implementations will run on upcoming Intel CPUs that launch market presumably in 2013. For the AVX variants we already provide Linux kernel patches that integrate our implementations into the kernel Crypto API. Most notably, this allows Linux users to run our cipher implementations with dm-crypt based disk encryption. We were able to contribute four out of five implementations (Serpent, Twofish, Cast-128, and Cast-256) to the mainline kernel; the implementations of Serpent and Twofish will already be available in Linux 3.6.

Implementations:
Serpent [ AVX , AVX2 ]
Twofish [ AVX , AVX2 ]
Blowfish [ AVX , AVX2 ]
Cast-128 [ AVX , AVX2 ]
Cast-256 [ AVX , AVX2 ]

Information:
Bachelor thesis (by Johannes Götzfried; advisor: Tilo Müller)
Research paper, EUROSEC'13 Slides (presented at EUROSEC 2013)