de beste publieke en Private Keygen algoritme-en waarom
Gravitational gesponsord dit bericht.
Wat is er erger dan privésleutels onbeheerd achter te laten? Openbare sleutels hebben die bruut geforceerd kunnen worden.
de “secure” in “secure shell” komt uit de combinatie van hashing, symmetrische encryptie en asymmetrische encryptie. Samen gebruikt SSH cryptografische primitieven om clients en servers veilig met elkaar te verbinden. In de 25 jaar sinds de oprichting hebben rekenkracht en snelheden in overeenstemming met de wet van Moore steeds ingewikkelder low-level algoritmes nodig.
vanaf 2020 zijn de meest gebruikte asymmetrische crypto-algoritmen in de PKI-wereld RSA, DSA, ECDSA en EdDSA. Dus welke is het beste?
dus welke te gebruiken?
het kiezen van het juiste algoritme hangt af van enkele criteria:
- implementatie: kunnen de deskundigen omgaan met het, of moet het worden gerold?
- Compatibiliteit: zijn er SSH-clients die geen methode ondersteunen?
- prestatie: hoe lang duurt het om een voldoende veilige sleutel te genereren?
- beveiliging: kan de publieke sleutel worden afgeleid van de private sleutel? (Het gebruik van quantum computing om encryptie te breken wordt in dit artikel niet besproken.)
RSA
implementatie | RSA-bibliotheken zijn te vinden voor alle belangrijke talen, inclusief diepgaande bibliotheken
(JS, Python, Go, Rust, C). |
Compatibiliteit | gebruik van SHA-1 (OpenSSH) of openbare sleutels onder 2048-bits kan niet worden ondersteund. |
prestaties | Grotere sleutels vereisen meer tijd om te genereren. |
beveiliging | gespecialiseerde algoritmen zoals kwadratische zeef en algemene Getallenveldzeef bestaan om gehele getallen met specifieke kwaliteiten te factor. |
tijd is RSA ‘ s grootste bondgenoot en grootste vijand geweest. Voor het eerst gepubliceerd in 1977, RSA heeft de breedste ondersteuning in alle SSH klanten en talen en heeft echt de tand des tijds doorstaan als een betrouwbare sleutel generatie methode. Vervolgens is het ook onderworpen aan de wet van Moore voor decennia en key bit-lengte is gegroeid in grootte. Volgens NIST-normen vereist het bereiken van 128-bits beveiliging een sleutel met een lengte van 3072 bits, terwijl andere algoritmen kleinere sleutels gebruiken. Bit beveiliging meet het aantal proeven die nodig zijn om brute-forceer een sleutel. 128-bit beveiliging betekent 2128 proeven te breken.
DSA
uitvoering | DSA werd in 1994 door FIPS-184 goedgekeurd. Het heeft ruime vertegenwoordiging in de grote crypto bibliotheken, vergelijkbaar met RSA. |
Compatibiliteit | terwijl DSA ondersteuning Geniet voor PuTTY-gebaseerde clients, schakelt OpenSSH 7.0 DSA standaard uit. |
prestaties | significante verbetering van de sleutelgeneratietijd om vergelijkbare beveiligingssterktes te bereiken, hoewel de aanbevolen bit-lengte dezelfde is als RSA. |
beveiliging | DSA vereist het gebruik van een willekeurig gegenereerde onvoorspelbare en geheime waarde die, indien ontdekt, de private sleutel kan onthullen. |
wat DSA onderscheidt van RSA is dat DSA een ander algoritme gebruikt. Het lost een heel ander probleem op, bekend als het discrete logaritmeprobleem, met behulp van een andere set van vergelijkingen, elementen en stappen.
dit algoritme omvat het gebruik van een willekeurig gegenereerd getal, m, dat wordt gebruikt bij het ondertekenen van een bericht samen met een privésleutel, k. dit getal m moet privé worden gehouden. De waarde mis bedoeld om een nonce, dat is een unieke waarde opgenomen in vele cryptografische protocollen. De bijkomende voorwaarden van onvoorspelbaarheid en geheimhouding maken de nonce echter meer verwant aan een sleutel, en daarom uiterst belangrijk.
het is niet alleen moeilijk om te zorgen voor echte willekeur binnen een machine, maar onjuiste implementatie kan encryptie breken. Bijvoorbeeld::
- Android ‘ s Java SecureRandom klasse was bekend dat botsende R waarden te creëren. Met andere woorden, de klasse hergebruikt een aantal willekeurig gegenereerde nummers. Dit blootgesteld een aantal verschillende Android-gebaseerde Bitcoin portefeuilles aan het hebben van hun persoonlijke sleutels gestolen. De vereisten van de nonce m betekenen dat elke twee gevallen met dezelfde nonce-waarde reverse-engineered kunnen worden en de private sleutel onthullen die wordt gebruikt om transacties te ondertekenen.
- een stap verder, fail0verflow ontdekte de private sleutel die wordt gebruikt om firmware-updates voor de Sony Playstation 3 te ondertekenen. Met andere woorden, programmeurs konden hun eigen code schrijven, ondertekenen met de geopenbaarde private sleutel, en draaien op de PS3. Het blijkt dat Sony hetzelfde willekeurige nummer gebruikte om elk bericht te ondertekenen.
ECDSA en EdDSA
de twee voorbeelden hierboven zijn niet geheel oprecht. Zowel Sony en de Bitcoin protocol dienst ECDSA, niet DSA juiste. ECDSA is een elliptische curve implementatie van DSA. Functioneel, waar RSA en DSA sleutellengtes van 3072 bits vereisen om 128 bits beveiliging te bieden, kan ECDSA hetzelfde bereiken met slechts 256-bits sleutels. Echter, ECDSA vertrouwt op hetzelfde niveau van willekeur als DSA, dus de enige winst is snelheid en lengte, niet veiligheid.
als reactie op de gewenste snelheden van elliptische krommen en de ongewenste veiligheidsrisico ‘ s, heeft een andere klasse krommen enige bekendheid gekregen. EdDSA Lost hetzelfde discrete log probleem op als DSA / ECDSA, maar gebruikt een andere familie van elliptische krommen bekend als de Edwards Curve (EdDSA gebruikt een Twisted Edwards Curve). Terwijl het aanbieden van lichte voordelen in snelheid ten opzichte van ECDSA, de populariteit komt van een verbetering van de veiligheid. In plaats van te vertrouwen op een willekeurig getal voor de nonce waarde, genereert EdDSA een nonce deterministisch als een hash waardoor het botsingsbestendig is.
Als u een stap terug doet, garandeert het gebruik van elliptische krommen niet automatisch een zeker veiligheidsniveau. Niet alle curves zijn hetzelfde. Slechts een paar bochten hebben de strenge tests doorstaan. Gelukkig heeft de PKI-industrie langzaam Curve25519 ingevoerd — met name voor EdDSA. Samen te stellen dat maakt de publieke-sleutel handtekening algoritme, Ed25519.
implementatie | EdDSA is vrij nieuw. Crypto++ en cryptlib ondersteunen momenteel geen EdDSA. |
Compatibiliteit | Compatibel met nieuwere clients, Ed25519 heeft gezien de grootste adoptie onder de Edward Curves; hoewel NIST ook voorgesteld Ed448 in hun recente ontwerp van SP 800-186. |
Performance | Ed25519 is het snelst presterende algoritme in alle statistieken. Net als bij ECDSA zijn publieke sleutels tweemaal de lengte van de gewenste bit beveiliging. |
beveiliging | EdDSA biedt het hoogste beveiligingsniveau in vergelijking met sleutellengte. Het verbetert ook de onzekerheden in ECDSA. |
in principe, RSA of EdDSA
als het erop aankomt, is de keuze tussen RSA 2048/4096 en Ed25519 en de afweging is tussen prestaties en compatibiliteit. RSA wordt universeel ondersteund door SSH-clients, terwijl EdDSA veel sneller presteert en hetzelfde beveiligingsniveau biedt met aanzienlijk kleinere sleutels. Peter Ruppel geeft het antwoord bondig:
” het korte antwoord hierop is: zolang de sleutelsterkte goed genoeg is voor de nabije toekomst, maakt het niet echt uit. Want hier overwegen we een handtekening voor authenticatie binnen een SSH sessie. De cryptografische kracht van de handtekening hoeft alleen maar de huidige, state-of-the-art aanvallen te weerstaan.”- Ed25519 voor SSH
gebruik gewoon geen ECDSA / DSA!
Feature image via .
de nieuwe Stack is een volledige dochteronderneming van Insight Partners, een investeerder in de volgende in dit artikel genoemde ondernemingen: Bit.
Leave a Reply