We could have had a very different history if they'd used DES or RC2 for encryption!
We could have had a very different history if they'd used DES or RC2 for encryption!
So much of symmetric key cryptography is just trying to find creative ways of creating and recreating 'one time pads' so we can distribute the key material instead of the pads themselves.
The one thing that stood out to me with the original blog post and a quick glance at the code was that it appeared as if the pad was certainly not actually random.
Could anyone that has actually understood it a bit more confirm or reject this?
Edit: It seems that the random generation can be found starting here https://github.com/Vulacode/RANDOM/blob/d6a1a1d694b22e6a115b... With three methods, one (RAND2) seems to use the basic interpreter rng more or less directly and the other two seem to be fairly simple prngs seeded from the basic interpreter's rng.
I don't actually know what the state of basic interpreter rngs was in the early '80s but I would be fairly surprised if they're anything that is secure.
In BASIC, the word "RANDOMIZE" sets the seed for the RND function, and you'll find it's initially dependant on time (including the typing speed of the user):
https://github.com/Vulacode/RANDOM/blob/main/RANDOM.BAS#L295
It then is reinitialised periodically by mixing in run time (which is highly variable due to microprocessor limitations) and checksums of previous parts of the stream:
https://github.com/Vulacode/RANDOM/blob/main/RANDOM.BAS#L319
The RAND[123] appears to be Bennett Fox's Algorithm 647, which was designed for simulation purposes (statistical randomness), and is based on Lewis-Goodman-Miller's construction from 1969, so it had a great deal of scrutiny.
I think this would have been state of the art in the late 1980s.