This describes research published in 2012 by Arjen Lenstra et al. (<a href="https://eprint.iacr.org/2012/064.pdf" rel="nofollow">https://eprint.iacr.org/2012/064.pdf</a>), which relied on a scalable n-way GCD algorithm that Lenstra's team thought best not to explain to readers (in the hope that the attack wouldn't be quickly replicated for malicious purposes). Coincidentally, another team (Nadia Heninger et al., <a href="https://factorable.net/" rel="nofollow">https://factorable.net/</a>) published extremely similar research in a similar timeframe, without withholding details of that team's GCD calculation approach.<p>The Heninger et al. paper explains quite a lot about where the underlying problems came from, most often inadequately seeded PRNGs in embedded devices. As the linked article mentions, other subsequent papers have also analyzed variants of this technique and so there's not much secret left about it.<p>If people are interested in learning about the impact of common factors on the security of RSA, I created a puzzle based on this which you can try out, which also includes an explanation of the issue for programmers who are less familiar with the mathematical context: <a href="http://www.loyalty.org/~schoen/rsa/" rel="nofollow">http://www.loyalty.org/~schoen/rsa/</a><p>Notably, my puzzle uses a small set of keys so you can do "easy" pairwise GCD calculations rather than needing an efficient n-way algorithm as described here (which becomes increasingly relevant as the number of keys in question grows).
This idea has since been applied to several other domains. Last year we had a look at all archived RSA keys of Tor relays: <a href="https://nymity.ch/anomalous-tor-keys/" rel="nofollow">https://nymity.ch/anomalous-tor-keys/</a><p>We found that several thousand relays that shared prime factors (most part of a research project), ten relays shared moduli, and 122 relays used a non-standard RSA exponent, presumably in an attempt to manipulate the Tor network's distributed hash table, which powers onion services.
Another group did a talk on this at DEF CON 26 last year:
<a href="https://research.kudelskisecurity.com/2018/08/16/breaking-and-reaping-keys-updated-slides-and-resources/" rel="nofollow">https://research.kudelskisecurity.com/2018/08/16/breaking-an...</a><p>They analyzed over 340 million keys from the web.<p>> As part of the presentation given at DEF CON 26, one of the outputs was Kudelski Security’s Keylookup application. On this site, you can submit your own public keys and have them tested against our dataset. We will let you know if your key is vulnerable to Batch GCD and ROCA attacks. If your key is in our database, we will be able to give you an answer immediately, if it is not, you may have to wait a bit until the tests complete.<p>> <a href="https://keylookup.kudelskisecurity.com/" rel="nofollow">https://keylookup.kudelskisecurity.com/</a>
What are the characteristics of those who generated an RSA key sharing a prime factor? Can they be linked back to a few bad CSPRNG implementations?<p>What are practical steps to be responsible about it?<p>It's contrived, but I just imagine that if I'm generating some particularly important keys, that I should somehow find a way to give /dev/urandom a kick of some kind. Even if that were possible, it's more likely to make things worse than better. Still, it makes me a little paranoid to even hear about theoretical weaknesses -- especially like collision attacks. I have no idea how long it takes for the CSPRNG to get properly seeded. Does it take a microsecond after booting? 10 minutes? A day?
A lot of people over the years have gotten the message that "use /dev/urandom and forget about it" is the final, end-all, be-all for secure random number generation.<p>In fact, this ideology (and that's what it is - an ideology) has been trumpeted right here on HN, in some cases by people who repeatedly seem to comment on topics that they don't fully understand. Security is hard, but there's also a high reputational value on being perceived as an authority on the topic. As a result, there are some nuggets of "wisdom" that require asterisks next to them, including this one.<p>Even though "just use /dev/urandom" is <i>almost always</i> true, it isn't <i>always</i> true. In fact, the universe of cases where some form of blocking entropy is needed (and again, this is a very tiny set) is growing, not shrinking.<p><a href="https://security.stackexchange.com/questions/186086/is-always-use-dev-urandom-still-good-advice-in-an-age-of-containers-and-isola" rel="nofollow">https://security.stackexchange.com/questions/186086/is-alway...</a>
PuTTYgen, being a Windows application, assumes that a mouse is connected and prompts the user to move the mouse to generate entropy during key creation.<p>By comparison, ssh-keygen documents the SSH_USE_STRONG_RNG environment variable -- but then recommends against its use (!) since it can cause key generation "to be blocked until enough entropy is available".
IMO a bit clickbaity of a title --- I thought there was a recent breakthrough in integer factorisation, when in fact this is really attributable to insufficient randomness.
On this topic, I recall reading earlier computers (of the 80s) used radio tuners tuned into nothing to generate random numbers. Of course, you need some way to randomly choose the frequency but then what comes out should be pretty unpredictable.<p>I believe Random.org uses an approach similar to this. What is so special about this approach that we couldn't install it as a card in a desktop for example?
hi, I attempted to recreate the algorithm in the post:<p><a href="https://github.com/daedalus/misc/blob/master/testQuasiLinearGCD.py" rel="nofollow">https://github.com/daedalus/misc/blob/master/testQuasiLinear...</a>
> The authors hint in a footnote that at the heart of their computation is an asymptotically fast algorithm, allowing them to bring the running time of the computation down to nearly linear; but the actual description of the algorithm is kept a secret from the reader<p>How could something like that pass peer review? Their claim is effectively unable to be reproduced.
Anyone know of a service (<a href="https://factorable.net/keycheck.html" rel="nofollow">https://factorable.net/keycheck.html</a> was discontinued) or code that would help identify particularly weak keys?
Could you use a similar idea to go after bitcoin keys? If so, you may not be able to crack any particular key, but you could steal the bitcoins from the ones you did crack.
After decades of problems with seeding RNGs, why isn't there a electronic circuit that gets a seed from quantum noise or something like that? The circuit could be part of the CPU or support chips.<p>After all, amplifiers are always trying to increase the signal/noise, and the basis of the reliability of digital circuits is avoiding the noise. Instead, a circuit can amplify the noise and sample it.
I don't know why this is still a problem these days, let's just use lava lamps for entropy: <a href="https://blog.cloudflare.com/lavarand-in-production-the-nitty-gritty-technical-details/" rel="nofollow">https://blog.cloudflare.com/lavarand-in-production-the-nitty...</a>
> But since they both used the same program to generate random prime numbers, there’s a higher-than-random chance that their public keys share a prime factor<p>BS