[DragonFlyBSD - Bug #2601] IBAA and /dev/random
bugtracker-admin at leaf.dragonflybsd.org
bugtracker-admin at leaf.dragonflybsd.org
Wed Dec 4 05:37:31 PST 2013
Issue #2601 has been updated by robin.carey1.
Dear DragonFlyBSD-bugs,
I tried to reply to Antonio H by the "bugtracker-admin at leaf.dragonflybsd.org"
E-mail address, but it didn't work/go-through.
So I am trying the "bugs at dragonflybsd.org" address. Sorry if this creates a
problem.
---------- Forwarded message ----------
From: Robin Carey
Date: 4 December 2013 13:31
Subject: Re: [DragonFlyBSD - Bug #2601] IBAA and /dev/random
To: "Antonio M. Huete Jimenez via Redmine" <
bugtracker-admin at leaf.dragonflybsd.org>
Because ISAAC is much more complicated (in terms of "lines of code" and
complexity of the algorithm).
ISAAC is supposedly faster than IBAA (according to Bob Jenkins' website).
But I can't understand how
that could be the case, given that IBAA is simpler in terms of "lines of
code" and code/algorithm complexity.
If you read Bob Jenkins' website, it says that one of the requirements for
IA and subsequent IBAA were
that the algorithms/code is/was easy to remember (which I consider to be a
good/enduring quality).
ISAAC sacrificed the "ease of remembrance" requirement.
Note that the version of IBAA in the DragonFlyBSD Kernel/Tree is a
customised version - with the following two improvements (which originated
from myself):
1) The SHIFT value was changed/corrected to 20 (as opposed to 19 in the
original algorithm).
2) It uses a Counter to guarantee a minimum 32-bit cycle-length.
If you read the Wikipedia entry for ISAAC (also applies to IBAA), you will
find a glowing review of his algorithm/CSPRNG. I am not aware of any other
publicly available algorithm which provides such a high quality of
randomness (not to mention the speed and security factors).
On 3 December 2013 20:28, wrote:
>
> Issue #2601 has been updated by phma.
>
>
> Why use IBAA instead of ISAAC?
>
> ----------------------------------------
> Bug #2601: IBAA and /dev/random
> http://bugs.dragonflybsd.org/issues/2601#change-11660
>
> * Author: robin.carey1
> * Status: New
> * Priority: Normal
> * Assignee:
> * Category:
> * Target version:
> ----------------------------------------
> Dear DragonFlyBSD bugs,
>
> With regard to DragonFlyBSD IBAA & /dev/random implementation:
>
> I noticed that Dragonfly bypasses IBAAs weak initial states (twice) by
> "warming up" the CSPRNG in:
>
> 1) rand_initialize()
>
> and
>
> 2) add_buffer_randomness()
> I am referring to the Kernel file: /sys/kern/kern_nrandom.c
>
> ----------
>
> I realized that this "probably/might" solve the problem (of IBAAs weak
> initial states, which leak the internal state) - but in my opinion does not
> 100%/definitely solve that problem.
>
> I would like to point out that there is, in my opinion, a guaranteed way to
> solve the above problem - and, which also eliminates the above code
> duplication (two instances), to one instance.
>
> Also, in my opinion using the new method I am suggesting might also
> improve the quality of randomness output, by "smoothing out" the
> internal state, i.e. if there is a non-uniform or "jaggedy"
> internal-state/memory.
>
> --------------
>
> The new method:
>
> In the "read_random()" function:
>
> Warm up the CSPRNG (IBAA) before producing any output. When I say
> "warm up", I mean calling IBAA_Call() 10 times, e.g.:
>
> /*
> * Warm up the generator to get rid of weak initial states.
> */
> for (i = 0; i < 10; ++i)
> IBAA_Call();
>
> --------------
>
> If there are any questions, I am happy to discuss this by E-mail.
>
> Thanks !
>
>
>
> --
> Sincerely,
>
> Robin Carey BSc
>
>
> --
> You have received this notification because you have either subscribed to
> it, or are involved in it.
> To change your notification preferences, please click here:
> http://bugs.dragonflybsd.org/my/account
>
--
Sincerely,
Robin Carey BSc
--
Sincerely,
Robin Carey BSc
----------------------------------------
Bug #2601: IBAA and /dev/random
http://bugs.dragonflybsd.org/issues/2601#change-11663
* Author: robin.carey1
* Status: New
* Priority: Normal
* Assignee:
* Category:
* Target version:
----------------------------------------
Dear DragonFlyBSD bugs,
With regard to DragonFlyBSD IBAA & /dev/random implementation:
I noticed that Dragonfly bypasses IBAAs weak initial states (twice) by
"warming up" the CSPRNG in:
1) rand_initialize()
and
2) add_buffer_randomness()
I am referring to the Kernel file: /sys/kern/kern_nrandom.c
----------
I realized that this "probably/might" solve the problem (of IBAAs weak
initial states, which leak the internal state) - but in my opinion does not
100%/definitely solve that problem.
I would like to point out that there is, in my opinion, a guaranteed way to
solve the above problem - and, which also eliminates the above code
duplication (two instances), to one instance.
Also, in my opinion using the new method I am suggesting might also
improve the quality of randomness output, by "smoothing out" the
internal state, i.e. if there is a non-uniform or "jaggedy"
internal-state/memory.
--------------
The new method:
In the "read_random()" function:
Warm up the CSPRNG (IBAA) before producing any output. When I say
"warm up", I mean calling IBAA_Call() 10 times, e.g.:
/*
* Warm up the generator to get rid of weak initial states.
*/
for (i = 0; i < 10; ++i)
IBAA_Call();
--------------
If there are any questions, I am happy to discuss this by E-mail.
Thanks !
--
Sincerely,
Robin Carey BSc
--
You have received this notification because you have either subscribed to it, or are involved in it.
To change your notification preferences, please click here: http://bugs.dragonflybsd.org/my/account
More information about the Bugs
mailing list