Cum funcționează de fapt criptografia cu cheie publică
O prezentare practică a criptării asimetrice, perechilor de chei și semnăturilor digitale, fără analogiile matematice vagi.
De fiecare dată când te conectezi SSH la un server sau încarci un site HTTPS, două chei legate matematic fac grosul muncii. Una este publică, una este privată, iar relația dintre ele este ceea ce face posibilă comunicarea securizată peste o rețea neîncredată.
Ideea de bază
Cu criptarea simetrică, o singură cheie atât încuie cât și deschide datele. Asta funcționează bine dacă ambele părți deja Share-uiesc un secret, dar distribuirea acelui secret în siguranță este partea grea. Criptografia cu cheie publică (asimetrică) rezolvă asta generând o pereche legate matematic: o cheie publică pe care o dai oricui, și o cheie privată pe care nu o share-uiezi niciodată.
Datele criptate cu cheia publică pot fi decriptate doar cu cheia privată potrivită. Datele semnate cu cheia privată pot fi verificate de oricine deține cheia publică. Aceste două proprietăți acoperă aproape totul pentru care folosim asta: confidențialitate și autentificare.
RSA, exemplul clasic
RSA se bazează pe faptul că înmulțirea a două numere prime mari este rapidă, dar factorizarea produsului înapoi în acele numere prime este brutal din punct de vedere computațional la scară. O cheie RSA de 2048 biți este construită din două numere prime de aproximativ 1024 biți fiecare. Cheia publică este (n, e) — n fiind produsul numerelor prime, e un exponent fix cum ar fi 65537. Cheia privată este derivată folosind totientul lui n și implică cunoașterea numerelor prime originale.
Criptarea este exponențiere modulară: c = m^e mod n. Decriptarea o inversează cu exponentul privat d: m = c^d mod n. Nimeni de fapt nu criptează direct cu RSA sarcini mari în practică — este lentă și are limite de dimensiune legate de lungimea cheii. În schimb, RSA de obicei înfășoară o cheie de sesiune simetrică (AES-256, de exemplu), și cifrul simetric gestionează datele în masă. Asta este abordarea hibridă pe care TLS o folosește.
Criptografia pe curbe eliptice și de ce o ia în primire
ECC îți dă securitate echivalentă cu RSA cu chei mult mai mici. O cheie ECC de 256 biți (ca secp256r1 sau Curve25519) este aproximativ comparabilă în putere cu o cheie RSA de 3072 biți. Cheile mai mici înseamnă apărtări mai rapide și mai puțină lățime de bandă, ceea ce este de ce configurările moderne TLS, implementările SSH și protocolul Signal se bazează pe ECC.
Matematica este diferită — se bazează pe problema logaritmului discret peste puncte pe o curbă eliptică mai degrabă decât pe factorizarea întregilor — dar relația cheie publică/privată și garanțiile sunt conceptual aceleași.
Semnături digitale: cealaltă jumătate a ecuației
Criptarea păstrează datele confidențiale. Semnăturile dovedesc autenticitate și integritate. Pentru a semna un mesaj, îl hash-uiești (SHA-256, de obicei) și criptezi acel hash cu cheia ta privată. Oricine are cheia ta publică poate hash-a mesajul singur, decripta semnătura ta și verifica dacă cele două hash-uri se potrivesc.
Aceasta este exact ce se întâmplă când rulezi git commit -S cu o cheie GPG, sau când o Certificate Authority semnează un certificat TLS. Cheia privată a CA semnează certificatul tău; browserele sunt livrate cu cheia publică a CA pre-trusted, deci pot verifica autenticitatea certificatului tău fără a vorbi vreodată direct cu CA.
Unde apare asta zilnic
Autentificarea cu cheie SSH este o aplicație directă: ssh-keygen -t ed25519 generează o pereche de chei, arunci jumătatea publică în ~/.ssh/authorized_keys pe server, și autentificarea se întâmplă printr-o provocare-răspuns folosind cheia privată, nicio parolă niciodată transmisă.
Apărturile TLS folosesc criptografia asimetrică scurt, doar pentru a stabili o cheie simetrică Share-ă (via schimb de cheie ECDHE în configurările moderne), apoi scad în criptare simetrică rapidă pentru sesiunea de fapt. Criptarea e-mail PGP/GPG urmează și ea pattern-ul hibrid — criptează mesajul cu o cheie AES aleatorie, apoi criptează acea cheie AES cu cheia publică RSA sau ECC a destinatarului.
Ce se sparge de fapt în practică
Matematica din spatele RSA și ECC nu a fost spargă prin calculul clasic. Ceea ce merge prost este aproape întotdeauna implementare: generație de numere aleatoare slabă la crearea cheilor (bug-ul Debian OpenSSL din 2008 este cazul din manual), nonce-uri refolosite în semnături ECDSA scurgând chei private, sau atacuri oracle de padding împotriva RSA implementat prost (atacul Bleichenbacher împotriva padding-ului PKCS#1 v1.5). Calculul cuantic este amenințarea teoretică pe termen lung — algoritmul Shor ar sparge atât RSA cât și ECC dacă ar exista un computer cuantic suficient de mare — ceea ce este de ce NIST a deja standardizat algoritmi post-cuantici cum ar fi ML-KEM (fost Kyber) pentru migrație viitoare.
Dacă vrei să mergi mai departe cu asta, pista de criptografie a Korra Studio acoperă protocoale de schimb de chei și internals de funcții hash în mai multă profunzime, și segmentele de rețea te plimbă prin cum se potrivește totul asta într-o apărare TLS de fapt byte cu byte.
Scris cu asistență AI, revizuit și publicat de Michal Pilch (CISSP), Korra Studio.
Aceasta este o notă din baza de cunoștințe Korra Studio — platforma asociază fiecare subiect cu mentorat 1-la-1.
Început gratuitarrow_forward