Skip site navigation (1)Skip section navigation (2)
Date:       Fri, 04 Aug 2000 05:40:30 +1000
From:      Peter Jeremy <peter.jeremy@alcatel.com.au>
To:        hackers@FreeBSD.ORG
Cc:        phk@critter.freebsd.dk
Subject:   Re: How to make *real* random bits.
Message-ID:  <00Aug4.072548est.115830@border.alcanet.com.au>

next in thread | raw e-mail | index | archive | help
On Wed, 02 Aug 2000 06:15:41 +0200, Poul-Henning Kamp <phk@critter.freebsd.dk> wrote:
>>> If I generate true random bits it takes 3 timestamps to get one
>>> bit of randomness:

 +--------+------+-------+------+-----+
 T1       T2     T3      T4     T5    T6

>>> 	if (T2 - T1 > T3 - T2)
>>> 		return 0;
>>> 	else if (T2 - T1 < T3 - T2)
>>> 		return 1;
>>> 	else
>>> 		try again.
...
>> Because of this your T3 value can be considered the T1
>>value for the next random bit you generate. 
>
>No it cannot.  If you did that then the probability would skew from
>bit to bit.  If the (t3-t2) was large bit N == 1 and the probability
>of bit N+1 == 0 is > .5 then.

I don't follow.  Taking the extended timeline above, and shortening
your algorithm above to (T2-T1)<>(T3-T2):
 
Since the decay intervals are random[1], there is no correlation
between (T2-T1), (T3-T2), (T4-T3), etc.  I can see that it wouldn't be
safe to use (T2-T1)<>(T3-T2) and (T3-T2)<>(T4-T3) since this would
introduce a (T2-T1)<>(T4-T3) correlation in adjacent bits.

I don't see how there is any correlation between (T2-T1)<>(T3-T2) and
(T4-T3)<>(T5-T4).  This effectively gives you 1 bit of randomness for
every two time intervals.

(Though, ignoring geek value, I suspect a reverse-biased transistor
BE junction would be an easier source of randomness).

[1] Subject to slight corrections as a result of the half-lives of
    the elements in the decay chain.

Peter


To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-hackers" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?00Aug4.072548est.115830>