The History of Random.org (2009)
random.org
random.org
https://sockpuppet.org/blog/2014/02/25/safely-generate-rando...
Point-in-case, I saw 2-3 "DevOps" engineers do it in my last position... over a screen share..! When you'd bring it up to people they would just roll their eyes and call you paranoid. =(
Visiting a webpage and copy-pasting a string off of it is not a very good practice for security because you're adding on a lot of parties to trust with that secret!
Effectively you want to minimize ANY place that your secret exist in plaintext, and trusting a webpage with this is just not a good idea.
I imagine owning random.org, and not being very mean but a little clever. I know how many people come here for a quick clip; more importantly I know you come here. I rotate the same blob. I know all the pieces to brute force your infrastructure. Maybe you’ll use the wrong setting and something will be public that shouldn’t be. Hello.
And yes, our recommended way is to have the secret management automatically generate the password. That way, not even your workstation touches it.
It all comes down to chain of trust. When it comes down to a root password, or any secret that's business-critical you want to minimize ANY sort of risk and that's just the right way to do business.
When I point my scraper at random.org I can see it talks to "ocsp.digicert.com", "ajax.googleapis.com", "ssl.google-analytics.com", and obv. "random.org" (wow that's actually pretty good =P)... those are now three separate entities that now need trust because they all have the opportunity to see what was rendered on that page in plaintext, they have the opportunity to see what you selected, etc.
Then add to that, any browser plugin, the browser itself, etc etc. Then the "in plaintext over screenshare" issue - and you've got a lot of points where something, or someone could MiTM a plaintext password if they wanted/needed.
Generating a random password/secret by visiting a public site on the internet is stupid/silly with regards to actual security, and opens yourself to attack vectors _for no real reason_. There are a TON of VERY QUICK/EASY ways to generate a very secure string for secret management that don't involve trusting a ton of third parties =|
In a "security culture conscious" SF tech company there should be no place for laziness/lack of care like that. IMO - dumb compromises like that are how you get caught with your pants down leaking a ton of PII.
I get there’s a nice advantage to not making a request to a remote service, but that’s situational.
Most platforms have better ways to generate randomness without needing to trust an external service.
There’s a strong assertion that it’s a bad idea, but no actual reasons given. The link doesn’t address it. So I asked the question.
So far the answers have been downvotes and evasive questions, so I’m leaning toward the idea I stepped into some kind of ideological thing. That’s fine, I don’t really care so I withdraw the question.
Random.org or any of their partners or your browser or the connection between you and random.org could all potentially be compromised.
If someone knows that you always generate your random salts with that site, they could potentially use past generated strings to reverse engineer your crypto.
Of course, very few password generators are only going to use the random seed you gave it. You would also need to know possibly the exact microtime and a ton of other variables to be able to "replay" the same scenario and generate a copy of the key.
The strength of your crypto is based on how unpredictably random the data you provide it is.
Assuming random.org is not the only source of random that your application used, it's probably fine.
If not, and reusing that same random string will produce the same output, it is quite dangerous. Especially if you are screen sharing. Someone tied to the project could easily figure out the output by copying the random string from the video.
Of note, his office also contained a pretty legendary kendo sword linked up to sensors (this was early 2000s). Ostensibly to assist with technique, but Im pretty sure it was for light sabre visualisations...
Interestingly most clues about how their system work are given in the 'paranormal' section of their FAQ on https://www.random.org/faq/
So the problem become to determine the offset of the stream you looked at, which is an integer that probably fits in 64 bits.
>anyone genuinely concerned with security should not trust anyone else (including RANDOM.ORG) to generate their cryptographic keys.
But the problems go beyond cryptographic keys. If you use RANDOM.ORG to pick lottery winners, you're trusting that the numbers you get are as truly random as they claim. In particular, the operators of RANDOM.ORG could trivially inject deterministic entropy (generated from, e.g., AES-encrypting successive integers) and this would be completely undetectable, even to statistical tests.
IMO the site needs a big, scary disclaimer on the front page that describes what applications it is appropriate for, and which ones should use a more secure source of entropy.
edit: given stan_rogers' comment bellow and a direct communication with nemo1618 the typo is just the missing "is". The sentence should read:
"doesn't make it clear that it is a trusted service."
strace -CTiv -ttt nice -n 19 curl -LNv $URL 2>&1 | shasum -a 512
$URL could be "https://news.yahoo.com", "https://news.google.com", "https://wikipedia.org/wiki/Special:Random", or some other website that returns a large, unique result for each request. Even if someone was sniffing or logging the HTTP response, they wouldn't know all the local timing information reported by curl and strace. #!/bin/bash
read -p "How many digits? " numlen
head /dev/urandom | LC_CTYPE=C tr -dc 'A-Za-z0-9' | fold -w $numlen | head -n 1https://i.guim.co.uk/img/static/sys-images/Film/Pix/pictures...
You flip the coin twice. If it comes up differently, you pick the first one. Otherwise you repeat. That will produce 50/50 random bits, no matter what the probability of the coin is.
You could do the same with audio noise by looking for peaks above a certain value and using a similar time function.
I don’t know if that is really how it is done, so I might be misremembering.
If you needed to simulate a single fair coin toss using a biased but at least somewhat random coin you might toss it twenty times, feed the sequence of results ("HTHTT...") into sha256sum, and take the first bit of the output.
One way to do that is to “compress” all your input entropy into a single state, and then use that as the key for a stream cipher, like AESCTR or Salsa20.
You can also "seed" subsequent round of the has with the output from the previous round. That helps protect against certain kinds of failures. It's not really necessary, but it's not hard to do either so you might as well do it.
https://threatpost.com/academics-make-theoretical-breakthrou...
https://blog.cloudflare.com/randomness-101-lavarand-in-produ...
https://blog.cloudflare.com/lavarand-in-production-the-nitty...
https://www.fastcompany.com/90137157/the-hardest-working-off...