There was a bit of a kerfluffle last week over weak random number generators and SSL for Debian and Debian based distributions. This vulnerability made it actually easy to crack a key generated with the OpenSSL code.
Think about the basis for this risk. SSL is based upon hard to guess integers which are built out of “entropy” (the CS definition, not the physical definition) to ensure “randomness” of some sort, and then used to construct keys. These keys, which are private, are then used for encryption. The idea being that if the key generation is fed “high quality” random numbers, it is hard to guess the key, and therefore hard to decode the packets without a brute force approach.
Works well in theory.
… if you introduce a subtle bug, a slight change in the semantics of how entropy is fed into the random number generator (as a seed for the random number generator, which is really a PRNG), well, you could have issues. In this case, they lost most of their bits due to the bug. Something like 16 bits were random. The rest weren’t.
Suddenly, your keys are guessable. Well, not by humans, but by computers.
There is a little perl script to test this. And it is fast.
I generated a key on my laptop. And tested it. It was bad.
This worried me.
So I checked the VPN servers, and the SSH daemons. All ok. Helps that I didn’t use an OpenSSL on a debian derived distro to build these things.
But, being the somewhat paranoid person I am, I decided to update everything. Latest ssh, latest openssl, latest vpn, regenerated all the keys. Notified customers and sent out the tarballs today for our support service.
Yeah, some stuff will break. Annoying that we had to go through that for a bug. Technically we didn’t have to go through that. But, we did just to be safe.
Better safe than sorry. Really.