[Cryptech Tech] Avalanche noise test boards
Bernd Paysan
bernd at net2o.de
Tue Aug 19 13:03:37 UTC 2014
Am Dienstag, 19. August 2014, 12:40:31 schrieb Peter Gutmann:
> Randy Bush <randy at psg.com> writes:
> >all unix systems have a nice box into which to put the clueless complaints
>
> They won't go to /dev/null, they'll get written up in blog posts by self-
> appointed experts who'll tell the world that your product shouldn't be used.
> Here's one example:
>
> http://arstechnica.com/security/2013/12/we-cannot-trust-intel-and-vias-chip-> based-crypto-freebsd-developers-say/
>
> You've got perfectly good CPU-based good crypto assist sitting there ignored
> because of pointless paranoia.
They aren't ignored, it's just they are fed through Yarrow instead of directly
passed to the reader of /dev/random. Complaining about that is entirely stupid
- the entropy doesn't go away if you feed it through yet another conditioner.
The possible malicous backdoor goes away that way (just like encrypting with
two different methods makes it impossible to decrypt the message if only one
of them is weak).
> (Note that I don't know how to fix this issue because you're damned if you
> do and damned if you don't, just pointing out that there is an issue that
> may need to be addressed at some point).
If our product is good, the NSA will for sure spread as much FUD as they can
to limit adaption rate ;-).
I have two reasons why I want the raw entropy without preconditioning:
1. I want to use that to debug and evaluate the noise source. This includes
modi to gain more information than usually is taken when used as random source
(e.g. fast regular sampling for the ROSCs, to evaluate the actual jitter, or
sampling of the complete counter of the avalanche diode noise to obtain the
actual amplified signal plot)
2. I might not actually trust the conditioner or expander, and replace them
with my own ones - and while I personally quite likely will have *my* trusted
conditioner&expander in the project, other people won't (we can't put in
everything, especially in of-the-shelf parts, there will be limits). They
should have the same possibilities, by taking the entropy out and using
external stuff. Especially the expander is good to have externally, because
some algorithms simply need a lot of random numbers, and therefore should
expand with a high-speed interface to the memory.
While we are aiming at complete transparency and auditability, intel made the
mistake to hide their implementation (AFAIK it's ROSC-based, and works pretty
well across processes; just like my ROSC design is made to be robust across
different FPGAs). The problem, especially with expanders, is that you can
make them in a way that is harmful, which is from the outside
indistinguishable from good expanders. E.g. take an AES expander: You can
either use a constant secret, and feed in the entropy as starting point, and
use AES in counter mode. Anybody who knows the secret can then predict more
randomness from the first one. If you feed in the entropy as key, and use an
ever-incrementing nonce as input for counter mode, you are fine - an attacker
can't guess unless there is a related plaintext attack in AES of which we
don't know yet.
--
Bernd Paysan
"If you want it done right, you have to do it yourself"
http://bernd-paysan.de/
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 198 bytes
Desc: This is a digitally signed message part.
URL: <https://lists.cryptech.is/archives/tech/attachments/20140819/f56cfece/attachment.sig>
More information about the Tech
mailing list