den bedste offentlige og Private Keygen algoritme-og hvorfor

gravitation sponsoreret dette indlæg.

Virag Mody
Virag sluttede gravitationelle i januar 2020, efter medstifter ET program kode revision selskab for Ethereum applikationer. Han fortsætter med at lære om trending teknologier og producerer høj kvalitet skrevet og videoindhold.

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.

Sponsor Note

sponsorlogo

gravitation tilbyder OSS til at levere, få adgang til og administrere cloud-native applikationer på tværs af enhver infrastruktur med minimal indsats. Teleport er vores sikkerhedsport til styring af privilegeret adgang til serverinfrastruktur gennem SSH og Kubernetes. Prøv dem på gravitational.com.

det er ikke kun vanskeligt at sikre ægte tilfældighed i en maskine, men forkert implementering kan bryde kryptering. For eksempel:

  1. 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.
  2. 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