Implementations

The reference implementation, some optimized code in C and assembly language are part of the new NIST submission package for tweaked Grøstl.

These and other software implementations have also been submitted to the eBASH benchmarking project. This tarball contains the Grøstl implementations currently included in eBASH. Among these are

Two 8-bit implementations for the ATmega163 microcontroller have been updated (without code size optimizations) and are available here.

Benchmarking results for Grøstl can be seen below.

Software benchmarks of Grøstl from eBASH

Digest sizeProcessorModeSpeed
224/256 Intel Xeon E5620 (with AES-NI) 64-bit 11.3 cycles/byte
Intel Core i7-2600K (with AES-NI) 64-bit 11.5 cycles/byte
AMD Phenom II X6 64-bit 19.4 cycles/byte
AMD Opteron 8354 64-bit 19.8 cycles/byte
Intel Core 2 Duo E4600 64-bit 22.4 cycles/byte
Intel Pentium M 32-bit 38.8 cycles/byte
384/512 Intel Xeon E5620 (with AES-NI) 64-bit 16.0 cycles/byte
Intel Core i7-2600K (with AES-NI) 64-bit 15.6 cycles/byte
AMD Phenom II X6 64-bit 31.7 cycles/byte
AMD Opteron 8354 64-bit 33.6 cycles/byte
Intel Core 2 Duo E4600 64-bit 33.2 cycles/byte
Intel Pentium M 32-bit 76.1 cycles/byte

8-bit software implementations of Grøstl-0

Günther A. Roland has implemented three different versions of Grøstl-0-256 for an 8-bit ATmega163 microcontroller in his Bachelor Thesis. To store the Grøstl-0 state, 128 or 192 bytes of RAM are used. The results are given below.

Version (state)RAM (bytes)Flash (bytes)Speed (cycles/byte)
Low memory (128)1642336738
Balanced (192)2264170517
High speed (192)9944228456

Hardware ASIC implementations of Grøstl-0

Stefan Tillich developed high-speed Grøstl-0-256 ASIC implementations in 0.18µm technology of UMC. Here are the synthesis results.

Total area (mm²)Total area (GE)Throughput (Gbit/s)
547,227.4758,4036.290
538,462.4157,4676.141
523,472.7455,8675.690
471,626.0650,3342.725