You boot up your machine. You generate a secure encryption key. You trust the silicon. But what if the foundation of that trust is a mathematical lie?
We treat hardware randomness as a magical fountain of truth, but sometimes it’s just a leaky pipe patched with duct tape.
Enter AMD’s Zen 2 processors. A while back, developers noticed something deeply embarrassing: the hardware random number generator (RNG) was broken. It didn’t spit out random numbers. It spat out 0xFFFFFFFF—all 1s, every single time. A catastrophic failure for cryptography.
AMD issued a microcode update. Problem solved, right? The patch went out, the ‘all 1s’ stopped, and the industry moved on. Except, they didn’t actually fix the randomness. They just broke it in a different direction.
A microcode fix didn’t cure the disease; it just gave the symptom a different name.
Fast forward to today, and developers are running statistical tests only to realize the AMD RNG never generates a zero. Not ‘rarely’. Never. True randomness dictates that every possible value has an equal chance of appearing. If you systematically exclude a value, you aren’t random. You’re a broken slot machine pretending to be fair.
Now, the tech forums are full of apologists. ‘It doesn’t matter,’ they say. ‘Hardware random numbers just seed a Cryptographically Secure Pseudorandom Number Generator (CSPRNG). The software smooths out the bias.’ Or, even worse: ‘Maybe they did it on purpose to stop people from guessing the zero key!’
Mathematical perfection shouldn’t rely on a software band-aid to hide a hardware stutter.
This is the dangerous complacency of modern security. We shrug off fundamental flaws because ‘the layer above it compensates.’ But if the root source of entropy is biased—if it fundamentally cannot output a specific value—then the mathematical guarantees of your encryption are standing on quicksand. We are trusting a black box that has already proven it can fail spectacularly, twice.
When the ‘always 1s’ bug was patched to ‘never 0s’, AMD didn’t prove the silicon was sound. They proved they were playing whack-a-mole with entropy. If you can’t trust the physical hardware to roll a fair die, you can’t trust the keys it generates.
The next time you generate a crypto key on an unverified chip, remember what’s actually happening under the hood. It’s not magic. It’s just code, written by humans, patching over hardware that doesn’t quite work the way the math demands.
FAQ
Q: Does this actually break my encryption?
A: Directly? Probably not. Modern OSes use the hardware RNG to seed a software CSPRNG, which compensates for the bias. But it breaks the *promise* of hardware-level cryptographic integrity.
Q: Should I stop using AMD processors for secure workloads?
A: No, but you should stop blindly trusting raw hardware RNG outputs. Rely on operating system entropy pools that mix multiple sources, rather than pulling numbers directly from the CPU.
Q: Is it possible AMD deliberately blocked zeros for security?
A: That's a generous excuse for a bug. If they deliberately excluded zeros, they fundamentally misunderstood how randomness works. You don't secure a system by breaking the math.