arrow_backTorna alle field notes
CRYPTOGRAPHY Pubblicato 9 Aug 2026

Come funziona davvero la crittografia a chiave pubblica

Una guida pratica sulla crittografia asimmetrica, le coppie di chiavi e le firme digitali, senza analogie matematiche superficiali.

Ogni volta che accedi via SSH a un server o carichi un sito HTTPS, due chiavi matematicamente collegate fanno il lavoro pesante. Una è pubblica, una è privata, e la relazione tra loro è ciò che rende possibile la comunicazione sicura su una rete non affidabile.

L'idea di base

Con la crittografia simmetrica, una sola chiave sia cifra che decifra i dati. Funziona bene se entrambe le parti condividono già un segreto, ma distribuire quel segreto in modo sicuro è la parte difficile. La crittografia a chiave pubblica (asimmetrica) risolve questo generando una coppia matematicamente correlata: una chiave pubblica che distribuisci a chiunque, e una chiave privata che non condividi mai.

I dati cifrati con la chiave pubblica possono essere decifrati solo con la corrispondente chiave privata. I dati firmati con la chiave privata possono essere verificati da chiunque possieda la chiave pubblica. Queste due proprietà coprono quasi tutto quello per cui le usiamo: riservatezza e autenticazione.

RSA, l'esempio classico

RSA si basa sul fatto che moltiplicare due numeri primi grandi è veloce, ma fattorizzare il prodotto per tornare a quei numeri primi è computazionalmente brutale su larga scala. Una chiave RSA a 2048 bit è costruita a partire da due numeri primi di circa 1024 bit ciascuno. La chiave pubblica è (n, e) — n è il prodotto dei numeri primi, e è un esponente fisso come 65537. La chiave privata è derivata usando la totiente di n e implica conoscere i numeri primi originali.

La cifratura è elevamento a potenza modulare: c = m^e mod n. La decifratura lo inverte con l'esponente privato d: m = c^d mod n. In pratica, nessuno cifra davvero payload di grandi dimensioni direttamente con RSA — è lento e ha limiti di dimensione legati alla lunghezza della chiave. Invece, RSA tipicamente avvolge una chiave di sessione simmetrica (AES-256, per esempio), e il cifrario simmetrico gestisce i dati bulk. Questo è l'approccio ibrido che TLS usa.

Crittografia su curve ellittiche e perché sta prevalendo

ECC ti dà sicurezza equivalente a RSA con chiavi molto più piccole. Una chiave ECC a 256 bit (come curve secp256r1 o Curve25519) è approssimativamente comparabile in forza a una chiave RSA a 3072 bit. Chiavi più piccole significano handshake più veloci e meno larghezza di banda, ecco perché le configurazioni TLS moderne, le implementazioni SSH e il protocollo di Signal si affidano tutti a ECC.

La matematica è diversa — è basata sul problema del logaritmo discreto su punti di una curva ellittica piuttosto che sulla fattorizzazione di interi — ma la relazione tra chiave pubblica e privata e le garanzie sono concettualmente le stesse.

Firme digitali: l'altra metà dell'equazione

La cifratura mantiene i dati riservati. Le firme provano autenticità e integrità. Per firmare un messaggio, lo hash (SHA-256, tipicamente) e cifri quell'hash con la tua chiave privata. Chiunque abbia la tua chiave pubblica può hashare il messaggio da sé, decifrare la tua firma e verificare che i due hash coincidano.

Questo è esattamente quello che accade quando esegui git commit -S con una chiave GPG, o quando un'Autorità di Certificazione firma un certificato TLS. La chiave privata della CA firma il tuo certificato; i browser hanno la chiave pubblica della CA pre-fidata, quindi possono verificare l'autenticità del tuo certificato senza parlare mai direttamente con la CA.

Dove appare nel quotidiano

L'autenticazione con chiave SSH è un'applicazione diretta: ssh-keygen -t ed25519 genera una coppia di chiavi, metti la metà pubblica in ~/.ssh/authorized_keys sul server, e l'autenticazione avviene tramite una sfida-risposta usando la chiave privata, nessuna password trasmessa mai.

Gli handshake TLS usano crittografia asimmetrica brevemente, solo per stabilire una chiave simmetrica condivisa (tramite scambio di chiavi ECDHE nelle configurazioni moderne), poi passano alla crittografia simmetrica veloce per la sessione effettiva. La crittografia PGP/GPG per email segue il pattern ibrido — cifri il messaggio con una chiave AES casuale, poi cifri quella chiave AES con la chiave pubblica RSA o ECC del destinatario.

Cosa effettivamente fallisce in pratica

La matematica dietro RSA e ECC non è stata compromessa attraverso il calcolo classico. Quello che va storto è quasi sempre l'implementazione: generazione di numeri casuali debole quando si creano le chiavi (il bug OpenSSL Debian del 2008 è il caso da manuale), nonce riusati nelle firme ECDSA che perdono chiavi private, o attacchi di oracolo di padding contro RSA implementato male (l'attacco di Bleichenbacher contro il padding PKCS#1 v1.5). L'informatica quantistica è la minaccia teorica a lungo termine — l'algoritmo di Shor romperebbe sia RSA che ECC se esistesse un computer quantistico sufficientemente grande — ecco perché NIST ha già standardizzato algoritmi post-quantistici come ML-KEM (precedentemente Kyber) per la migrazione futura.

Se vuoi approfondire, il track di crittografia di Korra Studio copre i protocolli di scambio di chiavi e gli interni delle funzioni hash più in profondità, e i segmenti di networking spiegano come tutto questo si inserisce in un handshake TLS effettivo byte per byte.

Scritto con assistenza AI, revisionato e pubblicato da Michal Pilch (CISSP), Korra Studio.

Pronto per andare oltre?

Questa è una nota dalla knowledge base di Korra Studio — la piattaforma abbina ogni argomento a mentoring 1-to-1.

Inizia gratisarrow_forward