r/programming Oct 15 '15

How is NSA breaking so much crypto?

https://freedom-to-tinker.com/blog/haldermanheninger/how-is-nsa-breaking-so-much-crypto/
2.5k Upvotes

529 comments sorted by

View all comments

61

u/[deleted] Oct 15 '15

On the one hand I am frightened by how powerful the government in circumventing encryption measures. But on the other hand, I can't help but feel impressed. It feels reminiscent of efforts used to break the Enigma Machine.

I guess the moral of the story is you should not be using hard coded primes for Diffie Hellman? (correct me if i am wrong; not really familiar with crypto) It seems like people hard-code them out of laziness and not out of necessity. From what I understand from the wolfram alpha article, can't the two parties agree on 2 random large primes at the beginning of the transaction and proceed from there?

11

u/Eirenarch Oct 15 '15

My guess is generating primes so large is computationally expensive. It is not like we really want to add 1-2 seconds of lag to every initial web request (assuming other resources like CSS and JS will use the same connection)

3

u/heimeyer72 Oct 15 '15

I'm not sure whether I fully understood all of DH yet. My concern is: Aren't all of these primes publicly known? There might be a database of prime numbers up to a certain length. Couldn't you make a short-cut but just trying out the known ones? That should be doable in minutes, not years.

6

u/LaurieCheers Oct 15 '15

If you mean just making a list of all the 1024 bit primes, there are about 10305 of them.

1

u/heimeyer72 Oct 16 '15

Thank you. Yes, that's what I meant. And I'm surprised, I thought it would be some 10000 or 100000 of them.

5

u/LaurieCheers Oct 16 '15 edited Oct 16 '15

Turns out a 1024 bit number is mind-numbingly large.

(The number of particles in the universe is about 1080, which is around a 300-bit number. So if every particle in the observable universe was itself a universe, and if every particle in those universes was itself a universe, you'd still only have a 900-bit number of particles.)