Twofish Hardware Tradeoffs
Gate count | h blocks | Clocks per Block | Interleave Levels | Clock Speed | Throughput (Mbits/sec) | Startup clocks | Notes |
---|---|---|---|---|---|---|---|
8000 | 0.25 | 324 | 1 | 80 MHz | 32 | 20 | (1) |
14000 | 1 | 72 | 1 | 40 MHz | 71 | 4 | (2) |
19000 | 1 | 32 | 1 | 40 MHz | 160 | 40 | |
23000 | 2 | 16 | 1 | 40 MHz | 320 | 20 | |
26000 | 2 | 32 | 2 | 80 MHz | 640 | 20 | |
28000 | 2 | 48 | 3 | 120 MHz | 960 | 20 | |
30000 | 2 | 64 | 4 | 150 MHz | 1200 | 20 | |
80000 | 2 | 16 | 1 | 80 MHz | 640 | 300 | (3) |
Notes:
(1) A “byte serial” implementation. It uses one clock per S-box lookup, and four clocks per h function (including the MDS). We allow two clocks for the PHT and key addition. With four h functions per round, each round requires 18 clock cycles.
(2) Uses a fully wired h function, but still computes the round keys on the fly. The other versions all precompute the round subkeys.
(3) A version that precomputes the S-boxes into dedicated RAM instead of computing the S-boxes on the fly.
up to Twofish
Sidebar photo of Bruce Schneier by Joe MacInnis.