[Hardware] Suggestions for FPGA RC5-72 core work verification?

Dan Oetting dan_oetting at qwest.net
Wed Nov 29 02:10:55 EST 2006


On Nov 28, 2006, at 9:54 AM, John L. Bass wrote:

> Dan made a rather lengthy suggestion on how to verify correct clients
> on processor based platforms, part of which is valid here. The biggest
> difference is that for most FPGA cores, adding an additional stage at
> the end to generate a CRC or Hash of the solution space is reasonable,
> trival and affects performance little, if at all (other than requiring
> a few dozen LUTs).
>
> I'd like to suggest that a simple running XOR of the the generated  
> test
> cipher text and/or last SBox is probably enough, either as 32 bits
> or 64 bits. This would make the "residual" independent of counter
> order, and be reasonably inexpensive to also implement on processor
> based clients, to verify an FPGA core's correctness. This residual  
> would
> be returned to the key server and logged.
>
> Dan probably has better ideas, as will others, so this is probably a
> good time to air them.

I pointed out before that the XOR is good enough since the core is  
doing plenty of hashing on it's own.

Another form of verification I came up with several years ago  
involves picking a second target cypher text that is known to exist  
within the work block and having the core return the key that  
generates the closest match with the real target which contains all  
the common bits with the second target. The software that generates  
and verifies the results only needs to process 2 or 3 keys for each  
block the hardware processes so it shouldn't be hard for it to keep  
up. The original intent of this verification was for the key servers  
to generate the test target and for the stats processor to do the  
verification on the result blocks.

A different approach is to return all the keys that generate a match  
with the low 32 bits of the cypher text. On average there would be  
one partial result for each block of 2^32 keys. The advantage is that  
by using the partial match as the token for a stat unit there is no  
efficient way to cheat since each result can be easily verified. The  
disadvantage is that partial matches can come in bursts so the core  
would need to buffer the partial matches and handle the buffer  
overflow if the client doesn't unload the buffer in time.

--- Dan O.





More information about the Hardware mailing list