Gammal serverhårdvara i ett mörkt datacenter, symbol för föråldrade kryptografiska system
Så funkar det

512-bitars RSA-nycklar från 90-talet går att knäcka på en helg

En RSA-nyckel på 512 bitar, standardvalet hos många certifikatutfärdare i mitten av 1990-talet, kan idag faktoriseras av en enskild person med hyrd molnkapacitet. Det tar timmar till dagar, inte år och kostar mindre än en ny laptop. Rotcertifikat från den tiden ligger fortfarande kvar i gamla truststores, i inbyggda system och i arkiverade signaturer, vilket är själva problemet.

RSA bygger på att det är lätt att multiplicera två stora primtal men svårt att göra tvärtom. Hela säkerheten sitter i ordet ”svårt” och svårt är inget matematiskt konstant. Det är en funktion av tillgänglig datorkraft och av hur bra faktoriseringsalgoritmerna råkar vara just det året.

Talet växer långsamt, datorkraften snabbt

Det som hänt sedan 1995 är två saker samtidigt och tillsammans blir de förödande för korta nycklar.

Den första är hårdvaran. En arbetsstation från mitten av 90-talet hade en processor på runt 100 MHz och några tiotal megabyte RAM. Ett faktoriseringsförsök mot 512 bitar krävde då ett internationellt samarbete med hundratals maskiner. RSA-155, som är just ett 512-bitarstal, faktoriserades 1999 av ett forskarkonsortium efter månader av beräkningar på tvåhundra datorer. Idag ryms motsvarande arbete på en enda molninstans som du bokar med kreditkort.

Den andra är algoritmen. Number field sieve, metoden som används för att faktorisera stora RSA-moduler, har finslipats i trettio år och finns numera i fri implementation. CADO-NFS är ett öppet verktygspaket som kör hela kedjan: polynomval, sållning, linjär algebra och den slutliga kvadratrotsberäkningen. Du behöver inte vara talteoretiker för att använda det. Du behöver läsa dokumentationen och ha tålamod med minnesanvändningen.

Skalningen är det som gör att gamla nyckellängder faller så tvärt. Arbetet för number field sieve växer subexponentiellt med nyckelns storlek, vilket betyder att varje extra bit kostar angriparen mer men inte linjärt mer. Från 512 till 768 bitar är ett stort hopp: RSA-768 knäcktes först 2009 och det tog runt två år kalendertid för en akademisk grupp. Från 768 till 1024 är ett ännu större hopp och där finns fortfarande inget publicerat resultat. Rekordet i den offentliga RSA-utmaningen ligger kring 829 bitar och listan över RSA-tal visar tydligt var gränsen för vad som faktiskt har gjorts går: talen från RSA-260 och uppåt står orörda.

Poängen är inte att 1024 bitar är säkert. Poängen är att 512 bitar inte längre är en akademisk övning utan ett helgprojekt och att avståndet mellan ”svårt” och ”trivialt” hela tiden krymper i samma riktning.

Chrome, Firefox, Safari och Edge slängde ut korta nycklar för ett decennium sedan

Vad kan någon göra med en faktoriserad rotnyckel från en certifikatutfärdare? Tekniskt sett allt som den ursprungliga utfärdaren kunde göra. Har du den privata nyckeln kan du signera nya certifikat för vilken domän som helst, med vilket giltighetsdatum du vill.

Praktiskt är hotet begränsat i vanliga webbläsare. Chrome, Firefox, Safari och Edge slängde ut rotcertifikat med korta nycklar för över ett decennium sedan och moderna TLS-stackar vägrar dessutom nycklar under 1024 bitar på protokollnivå. Ingen kan sätta upp en falsk bankinlogg med en knäckt 90-talsnyckel och nå en uppdaterad telefon.

Problemet finns i det som inte uppdateras. Industriella styrsystem som levererades med en fast truststore 2004, nätverksutrustning där firmware slutade underhållas, Java-installationer där någon kopierat in en cacerts-fil och aldrig rört den igen. Där kan en gammal rot fortfarande vara betrodd och där finns ingen som skickar ut en patch. Samma sak gäller signaturer bakåt i tiden: en kodsignering eller ett tidsstämplat dokument som verifierades mot en nu knäckbar nyckel har inte längre något bevisvärde, oavsett vad kontrollverktyget svarar.

Kryptografi har ett utgångsdatum, inte ett säkerhetsbetyg

Det som gjorde 512 bitar rimligt 1995 var en korrekt bedömning av dåtidens datorkraft. Bedömningen var inte fel. Den blev fel.

Det är den enda slutsatsen som är värd att ta med sig. Ett kryptografiskt val är ett påstående om hur länge något ska hålla och du gör det påståendet med den kunskap du har idag. RSA-2048 är säkert nu. Om tjugofem år kommer någon läsa den meningen på samma sätt som vi läser en certifikatpolicy från 1996.

I praktiken betyder det tre saker för dig som bygger något. Anta att nyckellängden du väljer ska bytas och bygg så att bytet går att göra utan att riva allt. Håll koll på vilka rotcertifikat dina system faktiskt litar på, särskilt i inbyggd utrustning och gamla Java-miljöer. Och tänk kort på giltighetstiden: den som utfärdar ett certifikat på tio år har låst in tio år av gårdagens antaganden.

Post-quantum-diskussionen handlar i grunden om samma sak. Att RSA och elliptiska kurvor går att bryta med en tillräckligt stor kvantdator är ett hot på obestämd framtid men konsekvensen är omedelbar: data som krypteras idag och sparas av någon annan kan dekrypteras senare. Vill du experimentera med hashfunktioner och nyckelmaterial i webbläsaren finns hash- och kryptoverktygen här på sajten och för själva nyckelhanteringen är signerade URL:er ett bra exempel på hur kort livslängd kan vara en säkerhetsfunktion i sig. Samma tänk gäller när TLS 1.2 nu fryses av IETF: standarder pensioneras innan de går sönder, inte efteråt.

Källor

  • CADO-NFS cado-nfs.gitlabpages.inria.fr
  • listan över RSA-tal en.wikipedia.org

Kommentera artikeln

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *