Credit: Nemec, Sys, Svenda, Klinec, Matyas
Couple years back, a team at Masaryk University gathers a collection of RSA implementations and sets out to figure out if they can “fingerprint” an RSA key to determine what implementation generated it; like, is a Feitian RSA key observably different than a BouncyCastle key? It turns out that, in the large, sure, you can apparently do that; in fact, you can do it only with public keys with decent accuracy; you can look at, like, a PGP key and determine that it came from OpenSSL or whatever. Who cares, this isn’t the important part.
The important part is that while they did that work, they noticed something funky about one of the RSA implementations. They started generating plots of the space of crypto primes different RSA’s generated. All the RSAs generated different plots. But Infineon’s RSA generated a weird plot, with very constrained primes.
Nobody thought much about this, until a year later the Masaryks came back with a new paper. While we were all wasting time studying supersingular curve isogenies, they were figuring out what was going on with that Infineon RSA generator. And what they found out was not great: Infineon had taken a shortcut for their crypto processor RNG, and if you know some linear algebra, how to reduce a lattice basis, divisors in residue classes, extended linearization, and the implementation pitfalls of Joye–Paillier generators, you can factor an Infineon RSA key using EC2 instances.
This wouldn’t be a big deal except that, wait, no, it’s a huge deal, because Infineon chips are all over the place, from national voting ID cards to Yubikeys. You did replace your Y4, right? Because the Masaryks broke your Y4 key.