So for this quiz, I want to see if you can figure out
a sensible way to do this. So we've got some pool of randomness...
and one approach would be to extract a seed from that pool,
use our Encryption function,
we'll make the Seed the Message,
we'll select the Key as Zero,
we'll get an output from that,
and we'll make a copy of the output. That's going to be our first random value.
Then we'll encrypt again, using the previous Output as the new Input,
using the key Zero again and extracting the next random number.
So the second option: we're going to extract
the seed from our random pool,
we'll use that as the key to encrypt
and for the first random output, we'll get the result of encrypting Zero with that key.
For the next one, we'll get the result of encrypting One with that key.
We'll keep using the same key, encrypting and getting a new random value
as our output.
And for our third option, we'll extract new values from the random pool each time,
we'll encrypt a message, selected from the random pool,
with the key selected from the random pool,
to get X0.
To get the next random number, we'll extract a new message from the random pool,
and a new key, and do that encryption.
So which one of these options makes the most sense
for a pseudo-random number generator?
And let's assume our encryption function behaves well--it provides a mapping
between keys and message that's hard to invert
if you don't have the key.
And that we have a random pool that provides a limited, but good, source of randomness.
