Get in touch!

Use the form on the right to contact us.

We answer emails as soon as we can. See the contact page for more information.

           

123 Street Avenue, City Town, 99999

(123) 555-6789

[email protected]

 

You can set your address, phone number, email and site description in the settings tab.
Link to read me page with more information.

Blog

Nya elliptiska kurvor för att säkra Internet publicerade

Joachim Strömbergson

I förra veckan publicerade IETF dokumentet RFC 7748 - Elliptic Curves for Security.

Denna RFC specificerar två elliptiska kurvor avsedda att exempelvis implementera nyckelutbyten (ECDHE), signering (https://en.wikipedia.org/wiki/Elliptic_curve_Diffie%E2%80%93Hellman) och kryptering i olika Internetorotokoll. Exempelvis kommer kurvorna i och med den här publiceringen att finnas med i de kryptosviter som tas fram för kommande stora uppdatering av standarden TLS, vilken förhoppningsvis publiceras senare i år. Men även framtida certifikat kommer nu förhoppningsvis att i större utsträckning använda EC-nycklar.

Vad är då poängen med de nya kurvorna, vi har ju redan ett antal kurvor publicerade av olika organisationer? Dedt finns ett par bra skäl till varför de nya kurvorna är intressanta.

Den i dag vanligaste kurvan är P256 som är specificerad av NIST, mer precist är det NSA som skapat kurvan som NIST sedan specificerat. Hur NSA kom fram till de parametrar man valt för att skapa den specifika P256 vet vi inte. NSA anger att det ger en prestandamässigt effektiv kurva. P256 är dock inte speciellt snabb. Speciellt inte i jämförelse med dagens kurvor, exempelvis de som är specificerade i den nya RFC:n. P256 är dessutom svår att implementera utan att koden innehåller villkorade operationer som ger upphov till variabel exekveringstid. Detta beteende riskerar att läcka känslig information (så kallat sidoläckage). Kryptologerna Daniel J Bernstein och Tanja Lange har skrivit en bra artikel som bland annat beskriver svårigheten med att implementera P256 på ett säkert sätt.

Andra , exempelvis Goldilocks-kurvorna specificerade av tyska BSI, lider av liknande problem med spårbarhet och säkra implementationer som P256. Över huvud taget har det öppna säkerhetssamfundet inom exempelvis IETF blivit mycket mer känslig för hur standarder utvecklas, att hänsyn till implementationer tas och vad som ligger till grund för designbeslut. Trots detta har framtagningen av de nya kurvorna i RFC 7748 varit allt annat än okontroversiellt. Diskussionerna har varit många, heta och långa. Det har även förekommit anklagelser av förhalning och sabotage. Ett direkt exempel är när Microsoft introducerade en kurva med exakt samma namn (Curve25519) som dock inte var samma kurva som den kurva som normalt kallas Curve25519. Men nu finns till slut två nya kurvor framme.

Vad är det då som specificerats? Det är två kurvor, Curve25519 med 256 bitars nyckel med 128 bitars säkerhet och kan sägas vara en direkt ersättning till P256. För de som kräver ytterligare säkerhetsnivå finns kurvan Curve488 med 448 bitars nyckel och 224 bitars säkerhet. I RFC:n finns även med de så kallade Twisted Edward Curve-versionerna av kurvorna. Detta gör det möjligt att använda kurvorna inte bara för nyckelutbyte, utan även för signering och kryptrering. De nya kurvorna är flera gånger snabbare än NISTs kurvor och det finns redan i dag bra implementationer som inte har problem med sidoläckage.

När nu kurvorna finns kommer förhoppningsvis fler att börja använda EC. Inte minst för inbyggda system är blir de här kurvorna klart snabbare och mer kompakta än att använda RSA med nycklar på mer än 3000 bitar. När TLS 1.3 publiceras kommer det även att finnas nya kryptosviter med mycket snabbare symmetriska krypton (exempelvis Salsa20 och ChaCha) samt MAC-funktioner som Poly1305. Då kommer behovet av snabba asymmetriska primitiver att bli än viktigare.

En av de personer som jobbat hårt för att få fram nya kurvor är Simon Josefsson. Tack Simon för bra jobb!