Confrontando i due direttamente è un po 'come paragonare un trattore a un treno - sono entrambi veicoli ma hanno funzioni e costruzioni completamente diverse.
RSA è un codice asimmetrico. È ideale per lo scambio sicuro di messaggi su una rete non sicura, perché la chiave pubblica può essere conosciuta da tutti: un messaggio crittografato con la chiave pubblica può essere decifrato solo dalla chiave privata. Pertanto, se due parti conoscono le rispettive chiavi pubbliche, possono scambiare messaggi in modo sicuro. Ciò significa che non devono essere trasmesse informazioni segrete - purché autenticità e integrità vengano mantenuti al sicuro. Fortunatamente, RSA fornisce un metodo per generare firme sui dati, che aiutano a dimostrare che è autentico. Dato un messaggio firmato da una chiave privata, è possibile verificare tale firma utilizzando la chiave pubblica corrispondente.
Come regola generale, puoi crittografare solo i dati della lunghezza della chiave RSA. Quindi, se hai una chiave RSA a 4096 bit, puoi solo crittografare messaggi lunghi fino a 4096 bit. Non solo, ma è incredibilmente lento. RSA non è progettato come un codice di trasporto dati a velocità piena.
AES è un codice 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, i cifrari simmetrici come AES richiedono prima una chiave segreta da scambiare. 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 trovare è che gli schemi entrambi sono implementati insieme, in modo tale che RSA sia usato per scambiare la chiave per un codice a blocchi come AES:
- Alice e Bob conoscono le rispettive chiavi pubbliche RSA. In generale questi sono scambiati fuori banda, ad es. tramite un certificato distribuito come parte del tuo sistema operativo.
- Alice sceglie una chiave casuale a 256 bit per AES e crittografa quella chiave 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 usa la sua chiave privata per decodificare il messaggio.
- Eve (un intercettatore) ha visto il messaggio crittografato, ma non può decodificarlo 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 usano per crittografare i messaggi utilizzando un codice simmetrico, come AES.
Questo soddisfa alcuni requisiti:
- La conversazione può verificarsi su una rete non affidabile senza che un utente malintenzionato possa leggere i messaggi.
- Lo scambio delle chiavi di sessione può essere fatto in modo sicuro, cioè l'autenticità e l'integrità sono 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. Noi 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 Aa a 256 bit e RSA a 4096 bit dovrebbe essere più che sufficiente per il prossimo decennio, presupponendo che l'implementazione sia corretta.
Si noti che tutto ciò è una semplificazione, poiché ci sono molte avvertenze e dettagli coinvolti, e la descrizione e lo scambio RSA come "crittografia" non sono strettamente corretti, ma tutto sommato dovrebbe essere una ragionevole panoramica ad alto livello di il modo in cui i due tipi di crittografia funzionano.