logoalt Hacker News

I've factored the RSA keys of a Certificate Authority from the 90s

339 pointsby ahlCVAtoday at 1:16 AM58 commentsview on HN

Comments

63today at 2:09 AM

A bit unfortunate that so many of the interesting bits were left to ai. I would've enjoyed some commentary on why the custom TLS implementation was necessary. Oh well.

Update: found this explanation in a comment at the top of the (surprisingly short) Go file in the linked repo:

The target client is Netscape Communicator 4.51 (both the 40-bit export build and the 128-bit US build) with its clock set to the year 2000.

Go's crypto/tls cannot help: it dropped SSLv3 in Go 1.14, never accepted the SSLv2-compatible ClientHello that Netscape 4 sends, and never had RC4-MD5 or the 40-bit export suites. So this file carries its own tiny SSLv3 server-side implementation on top of stdlib primitives (RSA PKCS#1 v1.5, RC4, DES, 3DES, MD5, SHA-1). The server key is 512-bit RSA so that export clients can encrypt the premaster secret to it directly, without a ServerKeyExchange.

show 3 replies
goaliecatoday at 1:57 AM

Basically 2 days on a consumer GPU to crack a 512 bit cert. The thing is much of the traffic back then did not use ephemeral keys. Most of it wasn't even encrypted at all! But about a decade later, it became normal to encrypt everything. I do wonder which governments around the world are just waiting to crack anonymous political speech by recording and saving for later when decryption can happen.

show 4 replies
tunahanfaruksavtoday at 9:41 AM

Great writeup. The fact that CADO-NFS still takes 32 hours on a 5950X for a 512-bit key that's trivial by today's academic standards really puts into perspective how comically undersized these were even for 1999 — RSA-155 fell that same year. Also love that verifying against real Netscape 4.51 ended up being harder than the factoring itself.

fraystoday at 10:10 AM

  openssl rsa -in private.key -text -noout

  prime1:
    00:f7:5b:73:5c:13:9b:7b:70:58:36:22:d6:25:e6:
    44:15:f3:f7:b3:18:c5:11:65:77:f2:85:af:cc:79:
    fa:d2:bd
  prime2:
    00:d4:81:b4:f5:af:a8:56:0e:a3:34:c0:e3:e8:60:
    fb:b2:96:83:e2:af:6d:d7:09:3f:37:2a:bf:31:32:
    cf:92:63
teiferertoday at 7:35 AM

> I don’t have any good reason to do that, but it seems like fun.

What better reason is there to do something than it being fun?

pvillanotoday at 2:07 AM

That SSL report with four different automatic 'F's is an amazing punchline

mitxelatoday at 2:08 AM

> While I haven’t verified this LLM output is entirely trustworthy, it looks pretty plausible.

It's essential that you do, because generating pretty plausible outputs is an LLM's bread and butter. Otherwise, only the one that you actually tested should be expected to be correct.

show 3 replies
forgotmypw17today at 4:01 AM

This is amazing news for people building hyper-compatible websites!

bpbp-mangotoday at 8:29 AM

amusing the site is available over ipv6. I suppose ipv6 was around back then, at least.

rootsudotoday at 3:08 AM

This is so cool, I love reverse archeology of this, having another understanding of something functional but invisible from my childhood to finally understand it and then at a later now where we can break it. So cool!

jrmgtoday at 4:59 AM

In the 90s, how long did people expect it would be until consumer computer hardware would be able to do this so quickly?

show 2 replies
Retr0idtoday at 2:20 AM

I went down the same line of thought in the past! But I guess I was less thorough with my search, I never found any certs that small.

excaliburtoday at 2:16 AM

> Assuming you’re somehow running Netscape 4.51 with a clock set before E-Certify roots expired on 2003-10-16, you can use these private keys to issue certificates. This describes zero people on the planet… except for this VM I set up.

The planet has a lot of people.

ranger_dangertoday at 4:10 AM

How was it actually factored though? Where is the code for that? How was the private key created and how are the new certs issued?

show 1 reply
andytratttoday at 3:01 AM

lol nice job Marc Andreesen

ggmtoday at 1:52 AM

The cost per bit is a doubling in time. So factoring a 512 RSA, compared to a 1024 RSA is significantly cheaper. The OP used contemporary hardware to do this. so, we'd have to ask if the orders of magnitude improvement in tech (QC aside) would permit 1024 in tractable time. I tend to no, but I appreciate there are other points of view. And of course, the belief that one day we can apply Shor with success exists. At which point the question is moot. Not that Shor does not itself demand significantly more stable gates, per extra bit of RSA. I always wonder why people don't look at the trend line in stable QuBits and the trendline in cost of RSA. Do the lines intersect?

Remember, Shor is like a coded gate level algorithm expressed as sequences of interconnected stable QuBits. So, if you double the cost for each RSA bit you add, its not "nothing" in terms of how you wire the rig.

(not a cryptographer, or a QC person so I expect to be hit by a very cold but stable quantum clue-by-four shortly. Maybe they have to hit me 1 million times, to confirm I'm hit. Its statistics.)

show 3 replies