On the internet, to maintain security, you have to have something called a certificate that is used as part of establishing a secure connection using TLS (the secure part of https). The way it works is using a public/private key pair -- one half is public, and is used to verify that the certificate is signed by the correct authority, and the other is secret, where no-one else can figure it out. Each key is just a really big number that goes into a cryptographic math problem. One certificate authority, eMudhra, used 8 different private keys that were extremely small numbers, including one that is just the number 4 (represented as 0000000...4, but literally just the number 4). The math problem is much easier to solve with small numbers, and a common way to break the cypher is to check every possible option starting at 0, which gets to 4 pretty fast. It's remarkable in terms of a security breach because no-one actually had to leak anything for it to be insecure, it's just that the "password" was so easy to guess that we had to "rotate the passwords" for basically the entire internet, because now anyone can sign a certificate using the private key 4 and it will look like a real certificate for google.com or wellsfargo.com or whatever.
Because it expands to "why does anyone trust any CA?" And most of the time people don't; it's the app making the choice for the user.
The answer for eMudhra specifically, I'd assume, is that it was simply a regional publicly-traded corp that paid the fees and went through the process and had clients worth having; just like any other CA
Essentially all internet security is based on the fundamental idea that if you have some really big randomly selected prime number, you can do math on it easily to get a final value, but doing the math backwards to find the original prime number is computationally infeasible. Your prime number is secret, the calculated final value is public. You can sign data with your prime number private key and someone can use the corresponding public key to verify that the data was signed with the corresponding private key.
It's really important that your private key stays private. It's really important that your private key can't be brute forced by trying a bunch of numbers to guess your secret prime number.
Your private key should be using a number like 11185240471355026063328096486023294694077671402173515074581823211722702563586240744645728206308310973537336052780084.
It would be really bad if your private key was something like 4. It would be REALLY BAD if that private key was used to sign a bunch of data used for internet security.
I thought 4 was the password to recover or lock the private key. Been out of IT for awhile, what am I missing? For example, how could I use 4 to get the private key?
JFC, that's worse than I imagined. Thought it was a recovery thing, but now I'm questioning if that's even possible. What am I thinking of? I could swear I've entered a password making key pairs.
ssh-keygen prompts for an optional password, but it's just for permissions for your local private key file. So it would be like having an additional password on a text file that just contains "4"
3
What is the meaning behind all those memes about the security key 4? | Spyke
17 replies
On the internet, to maintain security, you have to have something called a certificate that is used as part of establishing a secure connection using TLS (the secure part of https). The way it works is using a public/private key pair -- one half is public, and is used to verify that the certificate is signed by the correct authority, and the other is secret, where no-one else can figure it out. Each key is just a really big number that goes into a cryptographic math problem. One certificate authority, eMudhra, used 8 different private keys that were extremely small numbers, including one that is just the number 4 (represented as 0000000...4, but literally just the number 4). The math problem is much easier to solve with small numbers, and a common way to break the cypher is to check every possible option starting at 0, which gets to 4 pretty fast. It's remarkable in terms of a security breach because no-one actually had to leak anything for it to be insecure, it's just that the "password" was so easy to guess that we had to "rotate the passwords" for basically the entire internet, because now anyone can sign a certificate using the private key 4 and it will look like a real certificate for google.com or wellsfargo.com or whatever.
Why did anyone trust this eMudhra?
A surprisingly good question
Because it expands to "why does anyone trust any CA?" And most of the time people don't; it's the app making the choice for the user.
The answer for eMudhra specifically, I'd assume, is that it was simply a regional publicly-traded corp that paid the fees and went through the process and had clients worth having; just like any other CA
Most likely because they didn't assume a certificate signing company could be that bad at their job.
I've fired up an Active Directory CA that was more secure, on my first try, by myself. 🙄
I have seen handmade cesar ciphers more secure so theres that eh
Great explanation! Thank you very much
Well I'm off to take my network plus test now. Wish me luck!
Good luck! You've got this.
I'm kidding, already got mine. Just liked the info in your post. 😂
oops. I probably should've actually looked at the context before blindly replying
Funny enough, I use wellsfargo.com as an example several times in my security talk for employees. :)
Essentially all internet security is based on the fundamental idea that if you have some really big randomly selected prime number, you can do math on it easily to get a final value, but doing the math backwards to find the original prime number is computationally infeasible. Your prime number is secret, the calculated final value is public. You can sign data with your prime number private key and someone can use the corresponding public key to verify that the data was signed with the corresponding private key.
It's really important that your private key stays private. It's really important that your private key can't be brute forced by trying a bunch of numbers to guess your secret prime number.
Your private key should be using a number like
11185240471355026063328096486023294694077671402173515074581823211722702563586240744645728206308310973537336052780084.It would be really bad if your private key was something like
4. It would be REALLY BAD if that private key was used to sign a bunch of data used for internet security.https://scotthelme.co.uk/eight-bits-of-trust-emudhras-ca-keys-cracked-in-milliseconds/
P.S. I don't actually know if all algorithms use only prime numbers or if some of them can use non-primes.
I thought 4 was the password to recover or lock the private key. Been out of IT for awhile, what am I missing? For example, how could I use 4 to get the private key?
4is the private keyJFC, that's worse than I imagined. Thought it was a recovery thing, but now I'm questioning if that's even possible. What am I thinking of? I could swear I've entered a password making key pairs.
ssh-keygen prompts for an optional password, but it's just for permissions for your local private key file. So it would be like having an additional password on a text file that just contains "4"