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

new idea for random number generation



On Thu, Aug 03, 2017 at 01:54:06PM -0500, \0xDynamite wrote:
> Speaking of cryptography (harhar), I was contemplating an idea to
> generate random streams of random numbers using chaos theory (not the
> first), specifically the logistic equation [3.5x(1-x)], when I came
> across the argument (http://www.cs.utsa.edu/~wagner/laws/chaos.html)
> that such generators are "psuedo-random", but I don't think is true.
> 
> The equation is capable of producing an infinite stream of numbers
> that get more random as you continue to use the equation.  The amount
> of true randomness approaches the depth of your word size, but in
> theory you can create an implementation with arbitrary depth (say
> 10000 bits).
> 
> Is this interesting to anyone?

It's 100% deterministic still, since it's nothing but a deterministic
algorithm driving the "appearance of" random output - if you know the
algo, you know the output, simple as that.

Easy mistake to make - you're conflating infinite variation, with
infinite randomness. And yes there's a bit of the 100 monkeys tapping
away at a keyboard in the thought.

And to make it even clearer - yes the stream might be infinitely
varying in what can stochastically or in other ways be described as
random --if you didn't know the algorithm producing that stream--,
AND if you could, and here's the missing key perhaps: pick a random
starting spot in that stream, then yes, you'd have a sort of private
key.

But even there, here's the problem, with an infinite stream, you need
an infinitely large indexing ability to be able to choose a "truly
random" starting point - the point being, if you want it to be
random, you actually need random input: check out the difference
between /dev/random and /dev/urandomm, and grok these differences,
and it should all make sense.

So now what you're now asking is:
 - which algorithms generate usefully varying output, based on just a
   few bits of available truly random input

Another way to ask this: based on very limited single-bit bits of
truly random input, what is the "most random" output we can
deterministically generate to give the appearance of randomness.

This is /dev/urandom's job.

Once you're in the ballpark of "algorithms which usefully spread
input bits into output bits", next come questions like CPU cycle cost
to do such spreading.

Good luck,