Table of Contents
La crittografia asimmetrica è una pietra angolare della moderna sicurezza informatica, consentendo la trasmissione sicura dei dati attraverso reti non attendibili come Internet. A differenza della crittografia simmetrica, che si basa su una singola chiave segreta condivisa per la crittografia e la decrittografia, la crittografia asimmetrica utilizza una coppia matematicamente collegata di chiavi applicate: una chiave pubblica, che può essere liberamente distribuita, e una chiave privata, che deve rimanere riservata.
Cos'è la Crittografia Asimmetrica?
La crittografia asimmetrica, nota anche come crittografia chiave pubblica, è stata concepita per la prima volta da Whitfield Diffie e Martin Hellman nel 1976. L'idea fondamentale è che la crittografia e la decrittografia potrebbero essere separate: una crittografia chiave chiave, una diversa decifrazione.
Questa separazione dei ruoli consente anche servizi di sicurezza aggiuntivi oltre la riservatezza. Ad esempio, una chiave privata può essere utilizzata per creare una firma digitale che dimostra autenticità e integrità, mentre la chiave pubblica permette a chiunque di verificare che la firma. Questa dualità rende la crittografia asimmetrica indispensabile per l'autenticazione, la non-repudiazione e lo scambio di chiavi sicuro in protocolli come TLS, SSH e PGP.
Il ruolo delle chiavi pubbliche e private
Le chiavi pubbliche e private non sono stringhe arbitrarie; sono generate insieme da un algoritmo di key-generation che produce una coppia matematicamente legata. La chiave pubblica può essere distribuita tramite directory, certificati o addirittura incorporata nelle firme e-mail. La chiave privata viene memorizzata in modo sicuro – spesso in moduli di sicurezza hardware (HSM), moduli di piattaforma di fiducia firmati (TPMs), o contenitori di file crittografati.
Per illustrare, supponiamo che Alice voglia inviare un messaggio confidenziale a Bob. Ottenga la chiave pubblica di Bob da una fonte attendibile (ad esempio, il suo sito web o un server chiave pubblica). Alice crittografa il suo messaggio usando la chiave pubblica di Bob e invia il testo cifrato su una rete di insicure. Anche se un attaccante intercetta il testo cifrato, non possono recuperare il testo chiaro senza la chiave privata di Bob.
Generazione chiave: La matematica dietro la coppia
La generazione di chiavi si basa su problemi matematici che sono facili da eseguire in un modo ma estremamente difficile da invertire senza ulteriori informazioni segrete.
- RSA (Rivest–Shamir–Adleman): Basato sulla difficoltà di calcolare il prodotto di due grandi numeri primi. Un algoritmo di key-generation sceglie due grandi primi (p e q), calcola il loro prodotto n = p × q, deriva un eponent pubblico e un esponente privato recupera tale e × d φd ̧ 1 (
- Cryptography Curve Elliptic (ECC): si basa sul problema della curva ellittica del logaritmo discreto. Una chiave privata è un intero scelto casualmente; la chiave pubblica è il risultato di moltiplicare un punto generatore fisso sulla curva da quella integer.
Altri algoritmi includono Diffie‐Hellman (per lo scambio di chiavi) e la sua variante ellittica-curve ECDH, così come i sistemi di firma digitale come DSA, ECDSA, e il moderno Ed25519. In tutti i casi, il processo di generazione chiave deve essere crittograficamente sicuro: la qualità casuale è fondamentale per impedire agli aggressori di indovinare o prevedere chiavi private.
Crittografia e Decrittografia nella pratica
Per RSA, la crittografia solleva il testo chiaro (rappresentato come numero) alla potenza di e modulo n; la decrittografia solleva il testo cifrario alla potenza di d modulo n, recuperando il numero originale. Per i programmi di crittografia basati su ECC (ad esempio, ECIES), il processo utilizza coppie di tasti effimeri e un cipher simmetrico per codificare il codice reale.
Gli algoritmi di chiave pubblica sono ordini di grandezza più lenti di cifrature simmetriche come AES. Invece, i protocolli pratici utilizzano un approccio ibrido: viene generata una chiave simmetrica casuale (chiamata chiave di sessione) che viene crittografata con quella chiave simmetrica usando un cifrario veloce, e la chiave di sessione è la chiave pubblica del destinatario.
Algoritmi di crittografia asimmetrica comuni
Diversi algoritmi sono stati standardizzati e ampiamente implementati, ognuno offre diversi trade-off in prestazioni, dimensioni chiave e garanzie di sicurezza.
- RSA]: L'algoritmo di punta pubblica più riconosciuto. È utilizzato sia per la crittografia che per le firme digitali. La lunghezza minima raccomandata è di 2048 bit; molte organizzazioni ora mandano 3072 o 4096 bit. RSA è relativamente lenta per la crittografia e la generazione della firma, ma la verifica è più veloce.
- Diffie‐Hellman (DH) e Elliptic Curve Diffie‐Hellman (ECDH)]: Non direttamente algoritmi di crittografia, ma protocolli di scambio di chiavi che permettono a due parti di concordare su un segreto condiviso su un canale di insicuro. Il segreto condiviso viene quindi utilizzato come chiave simmetrica.
- Algorithm della firma digitale (DSA) e ECDSA[[]: Standard federale di elaborazione delle informazioni (FIPS) approvato per le firme. ECDSA è ampiamente utilizzato nei sistemi blockchain (ad esempio, Bitcoin, Ethereum) per la firma delle transazioni.
- Ed25519 e X25519[[[]: Moderni schemi di curvatura ad alte prestazioni ellittica progettati da Daniel J. Bernstein. Ed25519 offre firme veloci e sicure; X25519 fornisce uno scambio chiave efficiente. Entrambi sono resistenti a diversi attacchi laterali e sono sempre più adottati in applicazioni SSH, OpenPGP e messaggistica.
Applicazioni reali del mondo della crittografia asimmetrica
La crittografia asimmetrica non è un concetto astratto, alimenta direttamente l'infrastruttura di sicurezza del mondo digitale.
- HTTPS / SSL/TLS[[[]: Quando si visita un sito web sicuro, il handshake TLS utilizza la crittografia asimmetrica (ad esempio, RSA o ECDHE) per negoziare una chiave di sessione simmetrica. Il certificato del server contiene la sua chiave pubblica; il client verifica il certificato e utilizza la chiave pubblica per crittografare un segreto pre-master.
- Pretty Good Privacy (PGP) e GNU Privacy Guard (GPG)[: Usato per la crittografia e la firma via email. Gli utenti generano coppie chiave; la chiave pubblica viene caricata su server chiave. Quando si invia un'email crittografata, il mittente si dichiara di inviare la chiave pubblica del destinatario e crittografare la chiave di sessione simmetrica con esso.
- Cryptocurrencies and Blockchain[[: Bitcoin, Ethereum e altre criptovalute usano ECDSA o Ed25519 per firmare transazioni. Il “wallet” di un utente è essenzialmente una chiave privata; la chiave pubblica corrispondente (o il suo hash) è l’indirizzo del portafoglio.
- Secure Shell (SSH)[[]: SSH utilizza l'autenticazione a chiave pubblica per il login remoto senza password. Gli utenti generano una coppia chiave; la chiave pubblica viene posta sul server in [. Il server sfida il client a dimostrare il possesso della chiave privata firmando un messaggio.
- Code Signing[[]: Gli sviluppatori di software firmano binari e script con la loro chiave privata. I sistemi operativi e i browser verificano la firma utilizzando la chiave pubblica dello sviluppatore per garantire che il codice non sia stato manomesso e provenga da una fonte attendibile.
Firme digitali e autenticazione
Una firma digitale è uno schema matematico per dimostrare l'autenticità di un messaggio digitale. Per firmare un messaggio, il mittente utilizza la chiave privata per produrre un valore di firma che dipende sia dal messaggio che dalla chiave privata. Chiunque abbia accesso alla chiave pubblica corrispondente può verificare che la firma sia stata creata dal titolare del codice privato e che il messaggio non sia stato modificato.
Le firme digitali forniscono tre proprietà di sicurezza essenziali:
- Autorizzazione[[]: Il destinatario può verificare che il messaggio sia stato firmato dal mittente, perché solo la chiave privata del mittente avrebbe potuto produrre una firma che convalida con la chiave pubblica del mittente.
- Integrity[[]: Qualsiasi cambiamento al messaggio dopo aver firmato invalida la firma, assicurando che il messaggio non sia stato manomesso in transito.
- Non-repudiazione[[]]: Poiché la chiave privata è sotto il controllo esclusivo del firmatario, il firmatario non può negare in seguito di aver firmato il messaggio (a patto che la chiave non sia stata compromessa).
Le firme digitali sono la base dell’infrastruttura pubblica (PKI). Le autorità di certificazione (CA) firmano certificati digitali, che legano la chiave pubblica di un’entità alla sua identità, utilizzando le proprie chiavi private. Quando il browser si fida del certificato del sito web, verifica la firma digitale della CA, stabilendo una catena di fiducia da una CA radice fino al certificato del sito.
Vantaggi e limitazioni della crittografia asimmetrica
Vantaggi
- Distribuzione semplificata delle chiavi[[[]: Le chiavi pubbliche possono essere condivise apertamente, eliminando la necessità di un canale sicuro per scambiare una chiave simmetrica in anticipo.
- Sicurezza stabile[[]: In una rete di n utenti, la crittografia asimmetrica richiede solo n coppie chiave (ogni utente possiede una coppia).
- Firme digitali e non-repudiazione[[]: Solo la crittografia asimmetrica fornisce firme verificabili che legano un messaggio a una chiave privata specifica.
- Per ulteriori informazioni (con chiavi effimere): Protocolli come TLS 1.3 utilizzare ricambi Diffie‐Hellman che generano chiavi temporanee, assicurando che il compromesso di una chiave privata a lungo termine non decifra le sessioni passate.
Limitazioni
- Performance[]: Le operazioni asimmetriche sono costose computazionalmente – a volte più lente di crittografia simmetrica per livelli di sicurezza equivalenti.
- Key size[]: RSA e altri algoritmi richiedono grandi dimensioni (ad esempio, 2048 bit o più) per mantenere la sicurezza, che aumenta la memoria e la trasmissione in testa.
- Pulnerabilità del quantum[[]: Sia RSA che ECC sono vulnerabili agli attacchi da computer quantici di grandi dimensioni che implementano l'algoritmo di Shor. La comunità crittografica sta attivamente standardizzando algoritmi post-quantum (ad esempio Kyber, Dilithium) per sostituirli quando il calcolo quantistico diventa pratico.
- Key management complessit[: I tasti privati devono essere memorizzati in modo sicuro e protetto dal furto. Una chiave privata compromessa mina tutta la sicurezza – i messaggi crittografati possono essere decifrati, le firme possono essere falsificate.
- Nessun inerente autenticazione del mittente per la crittografia[[]: Utilizzando una chiave pubblica per crittografare non si dimostra chi ha crittografato il messaggio – chiunque con la chiave pubblica può crittografare. L'autenticazione del mittente richiede una firma digitale oltre alla crittografia o uno schema di crittografia autenticata separata.
Conclusioni
I sistemi di crittografia a prestazioni pubbliche e private costituiscono il fondamento della crittografia asimmetrica, consentendo la comunicazione sicura, l'autenticazione e l'integrità dei dati su Internet.
Per ulteriori informazioni sui dettagli e gli standard tecnici, fare riferimento al NIST SP 800-57 serie su gestione chiave e Guida al cluster di crittografia asimmetrica Per una panoramica della crittografia ellittica-Ncurve, vedere il