Re: "success"
"John L. Bass" <jbass-/[email protected]> Sat, 21 Oct 2006 00:51:24 -0600
| Newsgroups | gmane.comp.distributed-net.hardware |
|---|---|
| Message-ID | <[email protected]> |
"Dan Oetting" <dan_oetting-r9/[email protected]> on Fri, 20 Oct 2006 22:08:03 -0600 writes: > You either need to compute the L[ ] values to feed into the first > round of each key schedule stage or save the S[ ] values for each > iteration between stages. You could generate the L[ ] values by > running your 3 stages through 3 passes with the same key to generate > and pass the required values. Alternatively, you could replicate the > early key schedule stages and feed them with the next 2 keys to be > processed. You would then have a total of 6 key schedule stages and 1 > decrypt stage but only need 1 pass per key and no S[ ] storage. I > figure that's about a 40% savings. >From an FPGA/VLSI perspective, I don't see how this is a 40% savings for a fully unrolled solution. A "stage" in an FPGA is something around 5*32 4-LUT's, and SBox storage is 2*32 4-LUT's. The round 2 SBox propagating to Round 3, would take about 2080 4-LUTs to replace 832 4-LUT's of LUT Rams for the SBox, almost 250% more expensive. Worse numbers for the round 3 to round 4 SBox propagation, as you need about 4160 4-LUT's to regenerate the round 3 sbox terms, and only 832 to store them. The "trick" works for a processor solution when the storage is more expensive than the cycles, such as a small microprocessor. It's expensive for nearly every other case. However, it could be cheaper for a fully looped design, just as it is for small prcoessors. And might be useful in running many small looped engines in the FPGA, rather than one large unrolled engine. _______________________________________________ Hardware mailing list Hardware-Ra3b/QYEcJ3d140v2zMXi0fjHoOT/h/[email protected] http://lists.distributed.net/mailman/listinfo/hardware