Introductie
De laatste tijd zijn er talloze discussies geweest over de voor- en nadelen van RSA[01]
en ECDSA[02], in de cryptogemeenschap. Voor niet-ingewijden zijn ze er twee van
de meest gebruikte algoritmen voor digitale handtekeningen, maar zelfs voor de meer technische
slim, kan het vrij moeilijk zijn om de feiten bij te houden. Dit artikel is een
probeer een vereenvoudigde vergelijking van de twee algoritmen. Hoewel dit niet het geval is
een diep technisch essay, de meer ongeduldige lezer kan het einde van de
artikel voor een snelle TL; DR-tabel met de samenvatting van de discussie.
ECDSA versus RSA
ECDSA en RSA zijn algoritmen die worden gebruikt door publieke sleutelcryptografie[03] systemen,
om een mechanisme te bieden voor authenticatie. Public key cryptography is de
wetenschap van het ontwerpen van cryptografische systemen die sleutelparen gebruiken: a publiek
sleutel (vandaar de naam) die vrijelijk aan iedereen kan worden verspreid, samen met een
overeenkomstig private key, die alleen bekend is bij de eigenaar. Authenticatie
verwijst naar het proces waarbij wordt gecontroleerd of een bericht, ondertekend met een privésleutel, was
gemaakt door de houder van een specifieke privésleutel. Algoritmen gebruikt voor
authenticatie staat gezamenlijk bekend als algoritmen voor digitale handtekeningen [04].
Dergelijke algoritmen zijn afhankelijk van complexe wiskundige problemen die relatief eenvoudig zijn
om een manier te berekenen, hoewel het nogal onpraktisch is om om te keren. Dit betekent dat voor
een aanvaller om een digitale handtekening te maken, zonder enige kennis van de privé
sleutel, moeten ze hardnekkige wiskundige problemen oplossen, zoals integer
factorisatie, waarvoor geen efficiënte oplossingen bekend zijn [05].
Daarom, aangezien er voor de
onderliggende wiskundige problemen kan evaluatie van cryptografische algoritmen
komen alleen voor met betrekking tot hun implementatiedetails in combinatie met de
niveau van beveiliging die ze bieden. Voor dit doel presenteert deze sectie een
vergelijking van RSA en ECDSA met behulp van vijf (of zes) kwantificerende statistieken. Elke statistiek
wordt geïntroduceerd in een eigen sectie, samen met de betekenis voor iedereen die dat is
proberen te kiezen tussen de twee algoritmen.
Adoptie
RSA is al vele jaren de industriestandaard voor cryptografie met openbare sleutels
nu. De meeste SSL /TLS certificaten werden (en worden nog steeds) ondertekend met RSA-sleutels.
Hoewel de meeste CA's inmiddels ondersteuning voor ECDSA hebben geïmplementeerd
certificaten, heeft deze langdurige adoptie alleen tot veel verouderde systemen geleid
ondersteuning van RSA. Daarom, als een leverancier achterwaartse compatibiliteit met oud vereist
clientsoftware worden ze gedwongen certificaten te gebruiken die zijn ondertekend met RSA. Vandaag de dag,
de meeste moderne klanten hebben echter ondersteuning voor ECDSA geïmplementeerd, wat zal gebeuren
verwijder deze compatibiliteitsbeperking waarschijnlijk in de nabije toekomst.
Standaard looptijd
RSA werd eerst gestandaardiseerd voor SSL /TLS in 1994 [06], terwijl ECDSA werd geïntroduceerd
in de specificatie van TLS v1.2 in 2008 [07]. Dit leeftijdsverschil duidt op a
ongelijkheid in de volwassenheid van de normen die de beste praktijken beschrijven
elk algoritme. Hoewel RSA-normen uitgebreid zijn onderzocht en
gecontroleerd, heeft ECDSA niet zoveel aandacht gezien. Onlangs is dit bepleit
algoritme door grote CA's en de acceptatie ervan in de meeste moderne SSL /TLS klanten heeft
resulteerde in een uitgebreider onderzoek, maar het blijft een
relatief nieuwe regeling. Dit laat ruimte voor onontdekte ontwerpfouten of
foutieve implementaties worden in de toekomst bekendgemaakt.
Verhouding van sleutelgrootte tot beveiligingsniveau
Beveiligings niveau [08] is een metriek in cryptografie, verwijzend naar de sterkte
van een cryptografische primitief of functie. Het wordt gewoonlijk gemeten in "bits" dat
geven het aantal operaties aan dat een aanvaller moet uitvoeren om zijn of haar compromissen te sluiten
veiligheid. Deze statistiek kan een kwantificerende methode bieden om de werkzaamheid te vergelijken
van verschillende cryptosystemen. Er moet worden benadrukt dat de grootte van de openbare sleutel dat ook is
gemeten in bits, maar het is een heel ander concept, verwijzend naar de
fysieke grootte van de sleutel.
In dit opzicht biedt een algemene openbare RSA 2048-bits sleutel een beveiligingsniveau van
112 bits. ECDSA heeft echter slechts 224-bits openbare sleutels nodig om de
hetzelfde 112-bits beveiligingsniveau. Dit opvallende verschil in sleutelgrootte heeft er twee
significante implicaties. Kleinere sleutelgroottes vereisen minder bandbreedte om een
SSL /TLS stream, wat betekent dat ECDSA-certificaten ideaal zijn voor mobiel
toepassingen. Bovendien kunnen dergelijke certificaten met veel worden opgeslagen in apparaten
meer beperkende geheugenbeperkingen, een feit dat m /TLS stapels te zijn
geïmplementeerd in IoT-apparaten zonder veel middelen toe te wijzen. Gepubliceerd
onderzoek heeft zelfs aangetoond dat ECDSA efficiënter is te implementeren [09] in embedded
toestellen.
Prestaties en tijdcomplexiteit
Algoritmen zijn abstracte recepten die een methode beschrijven om een bepaald doel te bereiken.
In de informatica wordt hun prestatie gemeten door het aantal te tellen
elementaire operaties die nodig zijn om dit vooraf bepaalde einde te bereiken
staat. Zo'n metriek wordt genoemd tijdcomplexiteit. Sinds verschillende input
grootten vereisen een verschillend aantal bewerkingen, tijdcomplexiteit is meestal
uitgedrukt als een functie van de invoergrootte.
Beide algoritmen in kwestie presteren ongeveer even tijdrovend
wiskundige bewerkingen, zoals delingen en vermenigvuldigingen. Voer dus de grootte in
(wat in dit geval de grootte van hun sleutels is) blijft het meest significant
factor die hun prestaties beïnvloedt. Het vergelijken van de twee algoritmen moet zijn
onderscheid gemaakt tussen het ondertekenen van een bericht en het verifiëren van een handtekening. In de meeste
praktische implementaties, lijkt RSA aanzienlijk sneller dan ECDSA in
handtekeningen verifiëren, hoewel het langzamer is tijdens het ondertekenen.
Dingen worden ingewikkelder voor hogere beveiligingsniveaus. Bijvoorbeeld hooguit
gemeenschappelijke configuratie van een beveiligingsniveau van 112 bits, vereist RSA 2048-bits
vergeleken met ECDSA die 224-bits sleutels nodig heeft. In het volgende gemeenschappelijke niveau van 128 bits, RSA
vereist een 3072-bits sleutel, terwijl ECDSA slechts 256 bits. Dit resulteert in RSA's
prestaties drastisch afnemen, terwijl ECDSA slechts in geringe mate wordt beïnvloed. Net zo
een gevolg van dit schaalprobleem, hoewel RSA beter presteert bij de
op dit moment zou de continue toename van beveiligingseisen heel goed kunnen renderen
ECDSA de de-facto oplossing in de toekomst.
Post-kwantumresistentie
Shor's algoritme [10] is een bekend algoritme voor het breken van RSA-sleutels
kwantumcomputers. Aangezien er geen (openbare) praktische implementaties zijn van een
zo'n machine, het volgende is een vermoeden over de toekomst van de openbare sleutel
cryptografie. Op het moment van schrijven is de beste implementatie van Shor's
algoritme kan een RSA-versleuteling met een 15-bits sleutel verslaan. Hoewel dit niet klinkt
wat betreft, aangezien steeds meer onderzoek is gericht op quantum computing, RSA
kan op elk moment in de problemen komen.
Voorstanders van ECDSA zouden echter niet snel moeten zijn, omdat ze elliptisch zijn
curve cryptografie is ook kwetsbaar [11] naar een aangepaste versie van Shor's
algoritme. Als beide cijfers door een kwantumcomputer kunnen worden verbroken,
de enige objectieve maatstaf is de complexiteit die nodig is om een dergelijke
aanval. Volgens openbaar onderzoek hebben RSA 2048-bits sleutels 4098 qubits nodig
(en 5.2 biljoen Tofolli-poorten) te verslaan, terwijl ECDSA 256-bits sleutels
vereisen slechts 2330 qubits (en 126 miljard Tofolli-poorten). Daarom is RSA meer
duur om te breken, met behulp van een theoretische kwantummachine.
Conclusie
Hoewel deze vergelijking geenszins volledig is, is het duidelijk dat
RSA heeft terecht haar positie als leidende digitale handtekening verworven
algoritme voor de meeste certificaataanvragen. Maar technologie is altijd
vooruitgang op meer onvoorspelbare manieren, zijn ook beveiligingsbewustzijn en -behoeften
toenemend. Iets meer dan tien jaar geleden was de beveiliging van embedded apparaten
fictie en tegenwoordig is veilige communicatie een must-have voor elke echte wereld
toepassing. Als gevolg hiervan is ECDSA, zelfs als het relatief jong is, van iedereen
raad of het RSA zal vervangen als de standaard voor authenticatie in SSL /TLS
implementaties.
Als u, de lezer, nog steeds niet kunt beslissen welk algoritme u moet kiezen, zijn er wel
oplossingen voor ondersteuning van zowel ECDSA als RSA (als terugvalmechanisme), tot de
cryptogemeenschap kiest een winnaar. Bekijk dit artikelgedeelte voor een toekomst
doe-het-zelfgids.
TL; DR-tafel
metriek | RSA | ECDSA |
---|---|---|
Adoptie | ? | |
Volwassenheid | ? | |
Sleutelmaat | ? | |
Prestatie | ? | |
scaling | ? | |
P / Q-weerstand | ? |
Referenties
- [01] RSA-algoritme
- [02] ECDSA-algoritme
- [03] Cryptografie met openbare sleutel
- [04] Algoritmen voor digitale handtekeningen
- [05] NP-complexiteit
- [06] SSL v.0.0 RFC
- [07] TLS v.1.2 RFC
- [08] Beveiligings niveau
- [09] RSA versus ECC voor ingebedde systemen
- [10] Het algoritme van Shor
- [11] Quantumbronnenramingen voor ECDL