[Hardware] The market of ASICs (One GigaKey / Second?)
Dan Oetting
dan_oetting at uswest.net
Tue Aug 10 14:01:35 EDT 2004
On Aug 10, 2004, at 4:09 AM, Elektron wrote:
>> The best part is that searching for the pattern requires at most 1
>> additional instruction in the main loop and no additional registers.
>>
>> A side benefit is that returning the real key is no longer a
>> specially handled case in the client or any of the secondary servers.
>
> Except you do need to load the pattern from memory at some point, or
> keep it in a register, which is expensive. You then need to figure out
> what 'best matching' means, which takes a few extra cycles (and in a
> land where 3% is a lot, it may not really be worth it). You also need
> to find a 'pretty good match', which means the server has to hunt
> through the keyspace too, which is wasteful.
Here is the magic that makes it work:
Currently the client compares the encrypted result of each key to the
target cypher text. We replace this compare with a mask and test for 0.
If we are testing the first 32 bits and the mask has 8 bits set an
average of only 1 in 256 keys will pass this first test and we have
done no more work than the client already does. The second half of the
encrypted text will also be tested with the second half of the mask and
only 1 in 65536 keys will pass this second test.
The "best" key is defined as numerically closest to the real key after
passing the mask test. At this point we load the real cypher text, xor
with the encrypted result, load the previous best result and compare.
If the new result is smaller than the previous result we save the new
result and the current "best" key. All this extra work only happens for
a small number of keys so the overhead is minimal (except for hardware
implementations that can't branch).
The server needs only to find a key where the encrypted text has 8 or
more zero bits in common with the real cypher text in the first word.
On average the server should need to look at only 2 keys per block.
Proxy servers don't need to share the same secret to generate blocks as
long as the master knows all the secrets and knows which proxy
generated the block.
More information about the Hardware
mailing list