cel mai bun algoritm Keygen Public și privat – și de ce

gravitațional a sponsorizat această postare.

Virag Mody
Virag s-a alăturat Gravitational în ianuarie 2020, după ce a cofondat o companie de audit de cod software pentru aplicațiile Ethereum. El continuă să învețe despre tehnologiile de trend și produce conținut scris și video de înaltă calitate.

ce e mai rău decât să lași cheile private nesupravegheate? Având chei publice care pot fi forțate brute.

“secure” din “Secure shell” provine din combinația de hashing, criptare simetrică și criptare asimetrică. Împreună, SSH folosește primitive criptografice pentru a conecta în siguranță clienții și serverele. În cei 25 de ani de la înființare, puterea și viteza de calcul în conformitate cu Legea lui Moore au necesitat algoritmi de nivel scăzut din ce în ce mai complicați.

începând cu 2020, cei mai adoptați algoritmi cripto asimetrici din lumea PKI sunt RSA, DSA, ECDSA și EdDSA. Deci, care este cel mai bun?

Deci, care să folosească?

alegerea algoritmului potrivit depinde de câteva criterii:

  • implementare: se pot descurca Experții sau trebuie să fie rulat?
  • compatibilitate: există clienți SSH care nu acceptă o metodă?
  • performanță: cât timp va dura pentru a genera o cheie suficient de sigură?
  • securitate: cheia publică poate fi derivată din cheia privată? (Utilizarea calculului cuantic pentru a sparge criptarea nu este discutată în acest articol.)

RSA

implementarea bibliotecile RSA pot fi găsite pentru toate limbile majore, inclusiv bibliotecile aprofundate

(JS, Python, Go, Rust, C).

compatibilitate utilizarea SHA-1 (OpenSSH) sau chei publice sub 2048-biți pot fi neacceptate.
performanță tastele mai mari necesită mai mult timp pentru a genera.
securitate algoritmi specializați precum sită pătratică și sită de câmp cu număr General există pentru a factoriza numere întregi cu calități specifice.

timpul a fost cel mai mare aliat și cel mai mare dușman al RSA. Publicat pentru prima dată în 1977, RSA are cel mai larg suport pentru toți clienții și limbile SSH și a trecut cu adevărat testul timpului ca metodă fiabilă de generare a cheilor. Ulterior, a fost, de asemenea, supus legii lui Moore de zeci de ani, iar lungimea bitului cheie a crescut în dimensiune. Conform standardelor NIST, realizarea securității pe 128 de biți necesită o cheie cu o lungime de 3072 biți, în timp ce alți algoritmi folosesc chei mai mici. Bit security măsoară numărul de încercări necesare pentru a forța o cheie. Securitatea pe 128 de biți înseamnă 2128 de încercări de rupt.

DSA

implementarea DSA a fost adoptată de FIPS-184 în 1994. Are o reprezentare amplă în bibliotecile criptografice majore, similar cu RSA.
compatibilitate în timp ce DSA se bucură de suport pentru clienții pe bază de chit, OpenSSH 7.0 dezactivează DSA în mod implicit.
performanță îmbunătățire semnificativă a timpilor cheie de generare pentru a obține puncte forte de securitate comparabile, deși lungimea de biți recomandată este aceeași cu RSA.
securitatea DSA necesită utilizarea unei valori imprevizibile și secrete generate aleatoriu care, dacă este descoperită, poate dezvălui cheia privată.

ceea ce face DSA diferit de RSA este că DSA folosește un algoritm diferit. Rezolvă o problemă complet diferită, cunoscută sub numele de problema logaritmului discret, folosind un set diferit de ecuații, elemente și pași.

acest algoritm implică utilizarea unui număr generat aleatoriu, m, care este utilizat cu semnarea unui mesaj împreună cu o cheie privată, k. acest număr m trebuie păstrat în mod privat. Valoarea mis menit să fie un nonce, care este o valoare unică inclusă în multe protocoale criptografice. Cu toate acestea, condițiile suplimentare de imprevizibilitate și secret fac ca nonce-ul să fie mai asemănător cu o cheie și, prin urmare, extrem de important.

nota sponsorului

sigla sponsorului

Gravitational oferă OSS să livreze, să acceseze și să gestioneze aplicații native din cloud în orice infrastructură cu un efort minim. Teleport este gateway-ul nostru de securitate pentru gestionarea accesului privilegiat la infrastructura serverului prin SSH și Kubernetes. Încercați-le la gravitational.com.

nu numai că este dificil să se asigure o întâmplare adevărată într-o mașină, dar implementarea necorespunzătoare poate rupe criptarea. De exemplu:

  1. clasa Java SecureRandom a Android a fost cunoscută pentru a crea valori R care se ciocnesc. Cu alte cuvinte, clasa a reutilizat unele numere generate aleatoriu. Acest lucru a expus o serie de portofele Bitcoin bazate pe Android la furtul cheilor private. Cerințele nonce M înseamnă că oricare două instanțe cu aceeași valoare nonce ar putea fi inginerie inversă și dezvăluie cheia privată utilizată pentru semnarea tranzacțiilor.
  2. făcând acest pas mai departe, fail0verflow a descoperit cheia privată utilizată pentru a semna actualizări de firmware pentru Sony Playstation 3. Cu alte cuvinte, programatorii ar putea să-și scrie propriul cod, să-l semneze cu cheia privată dezvăluită și să-l ruleze pe PS3. După cum se dovedește, Sony folosea același număr aleatoriu pentru a semna fiecare mesaj.

ECDSA și EdDSA

cele două exemple de mai sus nu sunt în întregime sincere. Atât Sony, cât și protocolul Bitcoin folosesc ECDSA, nu DSA propriu-zis. ECDSA este o implementare curbă eliptică a DSA. Funcțional, în cazul în care RSA și DSA necesită lungimi de cheie de 3072 biți pentru a oferi 128 de biți de securitate, ECDSA poate realiza același lucru cu doar chei de 256 de biți. Cu toate acestea, ECDSA se bazează pe același nivel de aleatorie ca DSA, astfel încât singurul câștig este viteza și lungimea, nu securitatea.

ca răspuns la vitezele dorite ale curbelor eliptice și la riscurile de securitate nedorite, o altă clasă de curbe a câștigat o oarecare notorietate. EdDSA rezolvă aceeași problemă de jurnal discret ca DSA / ECDSA, dar folosește o familie diferită de curbe eliptice cunoscute sub numele de curba Edwards (EdDSA folosește o curbă Edwards răsucită). În timp ce oferă avantaje ușoare în ceea ce privește viteza față de ECDSA, popularitatea sa provine dintr-o îmbunătățire a securității. În loc să se bazeze pe un număr aleatoriu pentru valoarea nonce, EdDSA generează un nonce determinist ca hash, făcându-l rezistent la coliziune.

făcând un pas înapoi, utilizarea curbelor eliptice nu garantează automat un anumit nivel de securitate. Nu toate curbele sunt la fel. Doar câteva curbe au trecut de teste riguroase. Din fericire, industria PKI a ajuns încet să adopte Curve25519-în special pentru EdDSA. Pune împreună, care face algoritmul semnătură publică-cheie, Ed25519.

punerea în aplicare EdDSA este destul de nou. Crypto++ și cryptlib nu acceptă în prezent EdDSA.
compatibilitate compatibil cu clienții mai noi, Ed25519 a cunoscut cea mai mare adopție dintre curbele Edward; deși NIST a propus, de asemenea, Ed448 în proiectul lor recent de SP 800-186.
performanța Ed25519 este algoritmul cu cea mai rapidă performanță din toate valorile. Ca și în cazul ECDSA, cheile publice sunt de două ori lungimea securității bit dorite.
securitate EdDSA oferă cel mai înalt nivel de securitate în comparație cu lungimea cheii. De asemenea, îmbunătățește nesiguranțele găsite în ECDSA.

practic, RSA sau EdDSA

când vine vorba de acesta, alegerea este între RSA 2048/4096 și Ed25519, iar compromisul este între performanță și compatibilitate. RSA este universal acceptat în rândul clienților SSH, în timp ce EdDSA funcționează mult mai rapid și oferă același nivel de securitate cu chei semnificativ mai mici. Peter Ruppel pune răspunsul succint:

“răspunsul scurt la acest lucru este: atâta timp cât puterea cheie este suficient de bună pentru viitorul previzibil, nu contează cu adevărat. Pentru că aici avem în vedere o semnătură pentru autentificare în cadrul unei sesiuni SSH. Puterea criptografică a semnăturii trebuie doar să reziste atacurilor actuale, de ultimă generație.”- Ed25519 pentru SSH

doar nu utilizați ECDSA / DSA!

imagine caracteristică prin .

Noua stivă este o filială deținută integral de Insight Partners, un investitor în următoarele companii menționate în acest articol: Bit.

Leave a Reply