tech-security archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: Lightweight support for instruction RNGs



   Date: Mon, 28 Dec 2015 17:26:13 +0100
   From: Matthias Weckbecker <matthias%weckbecker.name@localhost>

   First and foremost: I do not disagree w/ you or anyone else in this
   discussion.

   What you may (or may not) be interested in though could be:

     The fragility of AES-GCM authentication algorithm
     http://eprint.iacr.org/2013/157.pdf

   In short: 19 known-answer tests, 18 from the NIST spec itself, none
   of them covered the implementation issue the authors discovered.

   Despite that, I personally would probably tend to the "just-run-the
   damn-thing." (dieharder) approach anyways.

The class of error you cite -- a mistake in the implementation causing
incorrect calculation of a crypto primitive -- would still not be
caught by generic statistical tests.  An analogue would be to compute
AES_k(0) || AES_k(stack garbage) instead of AES_k(0) || AES_k(1) --
anyone without k can't distinguish these, so certainly no generic
statistical tests would catch it.

But in this case, test vectors covering inputs (or, for CTR_DRBG,
outputs) of all lengths up to a certain sizeable number would have
caught the mistake.

You can call that 20-20 hindsight, but it is obvious in foresight that
with any complex batching as OpenSSL did, exercising all edge cases of
partial blocks and block alignments is critical.  So I do it in crypto
automatic tests that I write (although not always the on-line
self-tests because covering all those cases may take substantial
time).


Home | Main Index | Thread Index | Old Index