Grøstl – a SHA-3 candidate
Implementations
The reference implementation and some optimized code in C are part of the NIST submission package.
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
- C implementations optimized for 32-bit and 64-bit processors
- Inline assembly implementations optimized for Intel Core 2 Duo and AMD Opteron processors
- NEW! Very fast constant-time inline assembly implementations containing new AES instructions
- NEW! Fast constant-time bitsliced implementations.
Benchmarking results can be seen below.
Software benchmarks from eBASH
| Digest size | Processor | Mode | Speed |
|---|---|---|---|
| 224/256 | Intel Xeon (with AES-NI) | 64-bit | 13.8 cycles/byte |
| Intel Core 2 Duo | 64-bit | 21.4 cycles/byte | |
| AMD Opteron | 64-bit | 19.3 cycles/byte | |
| AMD Phenom II | 64-bit | 18.4 cycles/byte | |
| Intel Core 2 Duo | 32-bit | 22.5 cycles/byte | |
| Intel Pentium M | 32-bit | 29.9 cycles/byte | |
| 384/512 | Intel Xeon (with AES-NI) | 64-bit | 19.0 cycles/byte |
| Intel Core 2 Duo | 64-bit | 30.1 cycles/byte | |
| AMD Opteron | 64-bit | 28.8 cycles/byte | |
| AMD Phenom II | 64-bit | 27.0 cycles/byte | |
| Intel Core 2 Duo | 32-bit | 36.6 cycles/byte | |
| Intel Pentium M | 32-bit | 55.3 cycles/byte |
8-bit software implementations
Günther A. Roland has implemented three different versions of Grøstl-256 for an 8-bit ATmega163 microcontroller in his Bachelor Thesis. To store the Grøstl state, 128 or 192 bytes of RAM are used. The results are given below.
| Version (state) | RAM (bytes) | Flash (bytes) | Speed (cycles/byte) |
|---|---|---|---|
| Low MEM (128) | 164 | 2336 | 738 |
| Balanced (192) | 226 | 4170 | 517 |
| High speed (192) | 994 | 4228 | 456 |
Hardware ASIC implementations
Stefan Tillich developed high-speed Grøstl-256 ASIC implementations in 0.18µm technology of UMC. Here are the synthesis results.
| Total area (mm2) | Total area (GE) | Throughput (Gbit/s) |
|---|---|---|
| 547,227.47 | 58,403 | 6.290 |
| 538,462.41 | 57,467 | 6.141 |
| 523,472.74 | 55,867 | 5.690 |
| 471,626.06 | 50,334 | 2.725 |