Confrontare i due direttamente è un po 'come confrontare un trattore con un treno: sono entrambi veicoli ma hanno una funzione e una struttura completamente diverse.
RSA è un codice asimmetrico. È ideale per lo scambio sicuro di messaggi su una rete non affidabile, perché la chiave pubblica può essere conosciuta da tutti: un messaggio crittografato con la chiave pubblica può essere decrittografato solo dalla chiave privata. Pertanto, se due parti conoscono le chiavi pubbliche dell'altra, possono scambiarsi messaggi in modo sicuro. Ciò significa che non è necessario trasmettere alcuna informazione segreta, a condizione che l ' autenticità e l' integrità siano mantenute sei al sicuro. Per fortuna, RSA fornisce un metodo per generare firme sui dati, che aiutano a dimostrare che sono autentici. Dato un messaggio firmato da una chiave privata, è possibile verificare quella firma utilizzando la chiave pubblica corrispondente.
Come regola pratica, puoi crittografare solo dati grandi quanto la lunghezza della chiave RSA. Quindi, se hai una chiave RSA a 4096 bit, puoi crittografare solo messaggi fino a 4096 bit. Non solo, ma è incredibilmente lento. RSA non è progettato come un cifrario di trasporto dati a velocità piena.
AES è un cifrario a blocchi simmetrico ed è incredibilmente veloce. Il testo in chiaro è suddiviso in blocchi chiamati blocchi e ogni blocco è crittografato in una catena. Ci sono diversi modi per farlo, ma uno comune è chiamato Cipher Block Chaining, o CBC in breve. Ciò consente dimensioni dei messaggi teoricamente infinite. Tuttavia, le cifrature simmetriche come AES richiedono prima lo scambio di una chiave segreta. A differenza di RSA, la chiave condivisa deve rimanere sconosciuta agli aggressori, quindi è necessario fornire autenticità, integrità e segretezza. È difficile da fare direttamente.
Quello che tenderai a scoprire è che entrambi gli schemi sono implementati insieme, in modo tale che RSA venga utilizzato per scambiare la chiave con un cifrario a blocchi come AES :
- Alice e Bob conoscono le chiavi pubbliche RSA dell'altro. In generale, questi vengono scambiati fuori banda, ad es. tramite un certificato distribuito come parte del sistema operativo.
- Alice sceglie una chiave casuale a 256 bit per AES e la crittografa con la chiave pubblica di Bob. Firma questo messaggio con la sua chiave privata e lo invia a Bob.
- Bob utilizza la chiave pubblica di Alice per verificare la firma. Quindi utilizza la sua chiave privata per decrittografare il messaggio.
- Eve (un intercettatore) ha visto il messaggio crittografato, ma non può decrittografarlo senza conoscere la chiave privata di Bob. Inoltre, non può modificare il messaggio, poiché renderebbe la firma errata. Non può rigenerare una firma valida senza conoscere la chiave privata di Alice.
- Alice e Bob ora condividono una chiave segreta a 256 bit e la utilizzano per crittografare i messaggi utilizzando una crittografia simmetrica, come AES.
Ciò soddisfa alcuni requisiti:
- La conversazione può avvenire su una rete non attendibile senza che un utente malintenzionato sia in grado di leggere i messaggi.
- Lo scambio della chiave di sessione può essere effettuato in modo sicuro, ovvero l'autenticità e l'integrità vengono mantenute sulla chiave.
- Le prestazioni di crittografia e decrittografia per i dati di conversazione effettivi sono molto buone.
In termini di livello di sicurezza, non ha molto senso confrontare RSA e AES. Fanno lavori diversi. attualmente presumiamo che le chiavi AES a 128 bit siano sicure e che le chiavi RSA a 2048 bit siano sicure, ma questo dipende interamente dai requisiti di sicurezza individuali. L'utilizzo di chiavi AES a 256 bit e RSA a 4096 bit dovrebbe essere più che sufficiente per il prossimo decennio, supponendo che l'implementazione sia valida.
Nota che tutto ciò è una semplificazione, poiché ci sono molti avvertimenti e dettagli coinvolti, e descrivere lo scambio RSA come "crittografia" non è strettamente corretto, ma tutto sommato dovrebbe essere una ragionevole panoramica di alto livello del modo in cui funzionano i due tipi di crittografia.