den bedste offentlige og Private Keygen algoritme-og hvorfor
gravitation sponsoreret dette indlæg.
hvad er værre end at lade private nøgler ligge uden opsyn? At have offentlige nøgler, der kan være brute-tvunget.
“secure” i “secure shell” kommer fra kombinationen af hashing, symmetrisk kryptering og asymmetrisk kryptering. Sammen bruger SSH kryptografiske primitiver til sikkert at forbinde klienter og servere. I de 25 år siden grundlæggelsen har computerkraft og hastigheder i overensstemmelse med Moores lov nødvendiggjort stadig mere komplicerede algoritmer på lavt niveau.
fra og med 2020 er de mest udbredte asymmetriske kryptoalgoritmer i PKI-verdenen RSA, DSA, ECDSA og EdDSA. Så hvilken er bedst?
så hvilken skal du bruge?
valg af den rigtige algoritme afhænger af nogle få kriterier:
- implementering: kan eksperterne håndtere det, eller skal det rulles?
- kompatibilitet: er der SSH-klienter, der ikke understøtter en metode?
- ydelse: hvor lang tid tager det at generere en tilstrækkelig sikker nøgle?
- sikkerhed: kan den offentlige nøgle udledes af den private nøgle? (Brugen af kvanteberegning til at bryde kryptering diskuteres ikke i denne artikel.)
RSA
implementering | RSA biblioteker kan findes for alle større sprog, herunder dybdegående biblioteker
(JS, Python, Go, Rust, C). |
Kompatibilitet | brug af SHA-1 (OpenSSH) eller offentlige nøgler under 2048-bits understøttes muligvis ikke. |
ydeevne | større taster kræver mere tid til at generere. |
sikkerhed | specialiserede algoritmer som kvadratisk sigte og generelt Talfeltsigte findes for at faktorere heltal med specifikke kvaliteter. |
tiden har været RSA ‘ s største allierede og største fjende. Først offentliggjort i 1977, RSA har den bredeste støtte på tværs af alle SSH klienter og sprog og har virkelig stået sin prøve som en pålidelig nøgle generation metode. Derefter har det også været underlagt Moores lov i årtier, og nøglebitlængden er vokset i størrelse. I henhold til NIST-standarder kræver opnåelse af 128-bit sikkerhed en nøgle med en længde på 3072 bit, mens andre algoritmer bruger mindre taster. Bit sikkerhed måler antallet af forsøg, der kræves for at brute-force en nøgle. 128-bit sikkerhed betyder 2128 forsøg at bryde.
DSA
implementering | DSA blev vedtaget af FIPS-184 i 1994. Det har rigelig repræsentation i større kryptobiblioteker, der ligner RSA. |
Kompatibilitet | mens DSA nyder støtte til PuTTY-baserede klienter, deaktiverer OpenSSH 7.0 som standard DSA. |
ydeevne | Signifikant forbedring i nøglegenereringstider for at opnå sammenlignelige sikkerhedsstyrker, selvom anbefalet bitlængde er den samme som RSA. |
sikkerhed | DSA kræver brug af en tilfældigt genereret uforudsigelig og hemmelig værdi, der, hvis den opdages, kan afsløre den private nøgle. |
Hvad gør DSA forskellig fra RSA er, at DSA bruger en anden algoritme. Det løser et helt andet problem, kendt som det diskrete logaritmeproblem, ved hjælp af et andet sæt ligninger, elementer og trin.
denne algoritme involverer brugen af et tilfældigt genereret nummer, m, som bruges til at underskrive en besked sammen med en privat nøgle, k. dette nummer m skal holdes privat. Værdien mis betød at være en nonce, som er en unik værdi inkluderet i mange kryptografiske protokoller. De yderligere betingelser for uforudsigelighed og hemmeligholdelse gør imidlertid nonce mere beslægtet med en nøgle og derfor ekstremt vigtig.
det er ikke kun vanskeligt at sikre ægte tilfældighed i en maskine, men forkert implementering kan bryde kryptering. For eksempel:
- Androids Java SecureRandom-klasse var kendt for at skabe kolliderende R-værdier. Med andre ord genbrugte klassen nogle tilfældigt genererede tal. Dette udsatte en række forskellige Android-baserede Bitcoin-tegnebøger for at få deres private nøgler stjålet. Kravene i nonce m betyder, at to tilfælde med samme nonce-værdi kan være omvendt konstrueret og afsløre den private nøgle, der bruges til at underskrive transaktioner.
- ved at tage dette et skridt videre opdagede fail0verstrøm den private nøgle, der blev brugt til at underskrive opdateringer til Sony Playstation 3. Med andre ord kunne programmører skrive deres egen kode, underskrive den med den afslørede private nøgle og køre den på PS3. Som det viser sig, brugte Sony det samme tilfældige tal til at underskrive hver besked.
ECDSA og EdDSA
de to eksempler ovenfor er ikke helt oprigtige. Både Sony og Bitcoin-protokollen anvender ECDSA, ikke DSA korrekt. ECDSA er en elliptisk kurve implementering af DSA. Funktionelt, hvor RSA og DSA kræver nøglelængder på 3072 bit for at give 128 bit sikkerhed, kan ECDSA opnå det samme med kun 256-bit nøgler. ECDSA er dog afhængig af det samme niveau af tilfældighed som DSA, så den eneste gevinst er hastighed og længde, ikke sikkerhed.
som reaktion på de ønskede hastigheder af elliptiske kurver og de uønskede sikkerhedsrisici har en anden klasse af kurver fået en vis berygtethed. EdDSA løser det samme diskrete logproblem som DSA/ECDSA, men bruger en anden familie af elliptiske kurver kendt som kurvekurve (EdDSA bruger en snoet kurvekurve). Mens den tilbyder små fordele i hastighed i forhold til ECDSA, kommer dens popularitet fra en forbedring af sikkerheden. I stedet for at stole på et tilfældigt tal for nonce-værdien genererer EdDSA en nonce deterministisk som en hash, der gør den kollisionsbestandig.
ved at tage et skridt tilbage garanterer brugen af elliptiske kurver ikke automatisk et vist sikkerhedsniveau. Ikke alle kurver er ens. Kun få kurver har gjort det forbi streng test. Heldigvis er PKI-industrien langsomt kommet til at vedtage Curve25519 — især for EdDSA. Sæt sammen, der gør den offentlige nøgle signaturalgoritme, Ed25519.
implementering | EdDSA er ret ny. Crypto++ og cryptlib understøtter i øjeblikket ikke EdDSA. |
Kompatibilitet | kompatibel med nyere klienter har Ed25519 set den største vedtagelse blandt Eduard-kurverne; skønt NIST også foreslog Ed448 i deres nylige udkast til SP 800-186. |
ydeevne | Ed25519 er den hurtigste udfører algoritme på tværs af alle målinger. Som med ECDSA er offentlige nøgler dobbelt så lange som den ønskede bitsikkerhed. |
sikkerhed | EdDSA giver det højeste sikkerhedsniveau sammenlignet med nøglelængde. Det forbedrer også usikkerheden, der findes i ECDSA. |
grundlæggende, RSA eller EdDSA
når det kommer til stykket, er valget mellem RSA 2048/4096 og Ed25519, og afvejningen er mellem ydelse og kompatibilitet. RSA understøttes universelt blandt SSH-klienter, mens EdDSA udfører meget hurtigere og giver det samme sikkerhedsniveau med betydeligt mindre nøgler. Peter Ruppel sætter svaret kortfattet:
“det korte svar på dette er: så længe nøglestyrken er god nok i overskuelig fremtid, betyder det ikke rigtig noget. Fordi her overvejer vi en signatur til godkendelse inden for en SSH-session. Den kryptografiske styrke af signaturen skal bare modstå de nuværende, state-of-the-art angreb.”- Ed25519 til SSH
brug bare ikke ECDSA/DSA!
Feature billede via .
den nye stak er et helejet datterselskab af Insight Partners, en investor i følgende virksomheder nævnt i denne artikel: Bit.
Leave a Reply