[148920] in cryptography@c2.net mail archive

home help back first fref pref prev next nref lref last post

Re: [Cryptography] Dual_EC_DRBG backdoor: a proof of concept

daemon@ATHENA.MIT.EDU (ianG)
Sat Jan 4 10:18:58 2014

X-Original-To: cryptography@metzdowd.com
Date: Sat, 04 Jan 2014 13:49:14 +0300
From: ianG <iang@iang.org>
To: =?ISO-8859-1?Q?Kriszti=E1n_Pint=E9r?= <pinterkr@gmail.com>, 
	Theodore Ts'o <tytso@mit.edu>
In-Reply-To: <129731091.20140103235015@gmail.com>
Cc: Thierry Moreau <thierry.moreau@connotech.com>,
	Cryptography Mailing List <cryptography@metzdowd.com>,
	Jon Callas <jon@callas.org>
Errors-To: cryptography-bounces+crypto.discuss=bloom-picayune.mit.edu@metzdowd.com

On 4/01/14 01:50 AM, Kriszti=E1n Pint=E9r wrote:
>
>
>
> Theodore Ts'o (at Friday, January 3, 2014, 7:01:16 PM):
>> Sure, but a prng is not the only tool in the toolbox.  You can also
>> try to grab entropy from hardware, and from OS-level events.
>
> i call moving goalposts on this one. it can be the case that we don't
> need prngs. we can grab enough unpredictable information from hw
> sources that we can just extract all the randomness we need.


Right, we need collectors of entropy, we need a mixer, and we need an =

output stage, variously called a whitener, expander, PRNG, DRBG.  They =

all need to work together.



> but not needing a solution does not make the solution incorrect. there
> might be a case when we need it.
>
> basically we have two schools on this, and i don't know where i
> belong. one school says that you need true random source. no matter
> how whitened or processed, it won't generate more entropy. the other
> school says you need 128 bits of unpredictability, and then you can
> extract megabytes of randomness with no risk at all. we understand
> that there is only 128 bit uncertainty, but it is enough.


It is the latter, in our space of cryptography (says I).  Entropy was a =

1990s viewpoint, I think.

Entropy is unpredictable by anyone, so it's good for the task, =

theoretically.  But we don't care about us predicting it.  We care about =

the attacker predicting it.

We can draw a circle, and declare everyone inside is us, and everyone =

outside is a potential attacker.  Then we can draw a small amount of =

entropy from inside the circle, and put it into our expansion function. =

  We know by the properties of hashes and ciphers that we can make an =

expansion function that is unpredictable, if the seed is unpredictable: =

  it's the same property as breaking the hash or cipher.  Hence the proofs.

Now, we could use entropy, because it achieves the goal as well.  It =

dominates, which is to say, it is more better in every way, in terms of =

its quality.  But, entropy is very hard to collect, it's expensive.  And =

only comes in small doses.  Not enough to really fill the inputs of say =

big RSA keys, by itself, without a lot of work.  Which we really can't =

rely on, attempts just haven't worked.



Hence we end up with the design:


    Entropy collector  ----\
                            \ _____          _________
                             /     \        /         \
    Entropy collector  ---->( mixer )----->( expansion )-----> RNs
                             \_____/        \_________/
                            /
    Entropy collector  ----/


Which I sometimes call a trident design, someone else called it a =

cascade design, and yet others think of it as Yarrow or Fortuna.  But =

I'm not sure enough about this all to know whether they've stamped the =

name, or what.  They've obviously pioneered the way...


> you can subscribe to the former school. but then, you don't want
> fortuna either, nor any other prng. or you subscribe to the latter
> school, but in this case, you have to admit that the quality of the
> prng matters. and you also have to agree that bbs delivers some
> security properties that for example aes does not.


Well, at the end of the day, it is an engineering problem.  If you =

subscribe to the Entropy school, you do not answer the engineer's =

question of "what happens when it breaks?"

The above design answers it.  We have to care *a fair bit* about the =

mixer and the expansion function, but each component is limited in its =

API and demands on quality.  They are simple black boxes.

Then, say BBS.  Talking about it is fine, but it only makes sense when =

placed in a context.  If it is in the above context, as an expansion, =

then fine, it might work.  (Or as a collector, even.)

But so might AES.  And engineering has it that if we've cared some about =

the modules, once we get to that stage of building the structure, we can =

substitute in different modules and still get the same good result.

As engineers in software, the acid test is whether we can throw it at an =

intern and say "build it this way."  (Which I just did.  It worked. =

RNGs are now a solved engineering problem, as far as I can see.  Until =

someone turns it upside down in a paper...)



iang
_______________________________________________
The cryptography mailing list
cryptography@metzdowd.com
http://www.metzdowd.com/mailman/listinfo/cryptography

home help back first fref pref prev next nref lref last post