In realtà, l'asserzione che la crittografia asimmetrica sia più lenta della crittografia simmetrica non ha molto senso. Non fanno la stessa cosa Che cosa fa la crittografia asimmetrica, la crittografia simmetrica non può fare; meno intuitivamente, questo funziona anche al contrario: ciò che fa la crittografia simmetrica, la crittografia asimmetrica non può fare.
La crittografia asimmetrica consente di rendere pubblica la chiave di crittografia, senza rivelare la chiave di decodifica; questo è l'ovvio vantaggio della crittografia asimmetrica rispetto alla crittografia simmetrica e il motivo per cui è stato inventato in primo luogo.
Nella direzione opposta: la crittografia asimmetrica elabora solo messaggi di dimensioni limitate e comporta intrinsecamente un overhead di dimensioni non fisse. Ad esempio, con una chiave RSA a 2048 bit e seguendo lo standard PKCS # 1 ( RSAES-PKCS1-v1_5
), i messaggi di input non possono superare la lunghezza di 245 byte e tuttavia producono un output a 256 byte. Non è chiaro come un messaggio più lungo debba essere suddiviso in sotto-messaggi da elaborare singolarmente con RSA; questo appare superficialmente come il problema del "concatenamento" con i cifrari a blocchi, per il quale sono state definite le modalità di funzionamento , consentendo l'elaborazione di massa di dati in ingresso. Tuttavia, i cifrari a blocchi sono semplici: funzionano su sequenze di bit gradevoli e i blocchi crittografati sono indistinguibili dalla casualità uniforme. Lo stesso non vale per, per esempio, RSA, dove i messaggi crittografati sono interi formano un grande numero intero che non è una potenza di 2, che induce pregiudizi. Questo problema di incatenamento delle crittografie RSA non è ben studiato e non sembra avere ovviamente soluzioni sicure.
L'overhead delle dimensioni per la crittografia asimmetrica è consustanziale alla sua asimmetria: poiché la chiave di crittografia è pubblica, chiunque può provare a crittografare i dati con la chiave di crittografia. Se la crittografia è deterministica, allora questo consente un attacco immediato di forza bruta sul testo in chiaro (l'utente malintenzionato tenta valori di testo in chiaro fino a quando non viene trovata una corrispondenza). Per evitare ciò, la crittografia DEVE essere non deterministica, che a sua volta implica un aumento delle dimensioni (a causa di pigeonholes ).
La prima conseguenza è che la crittografia asimmetrica non è buona per la crittografia di massa. Quando i dati da crittografare sono più grandi delle dimensioni elementari dell'algoritmo, non sappiamo davvero come farlo in modo sicuro, ma abbiamo ragioni piuttosto fondamentali per ritenere che sarebbe costoso in termini di larghezza di banda della rete.
Nessuno dei precedenti riguarda il costo computazionale. Per fare un confronto significativo che tenga conto del costo computazionale, si deve essere in un contesto in cui esiste, in effetti, una scelta tra la crittografia simmetrica e asimmetrica da effettuare. Fondamentalmente, questa sarebbe una situazione in cui:
- Vuoi la crittografia asimmetrica per un messaggio m .
- È possibile utilizzare la cosiddetta "crittografia ibrida": crittografia asimmetrica per crittografare una chiave casuale K , che verrà quindi utilizzata per elaborare i dati con un algoritmo di crittografia simmetrica.
- Il messaggio m potrebbe essere elaborato direttamente con l'algoritmo di crittografia asimmetrica.
La terza condizione significa che m è abbastanza piccolo da essere l'input di una singola chiamata dell'algoritmo di crittografia asimmetrica, poiché altrimenti non si saprebbe come elaborarlo. In tal caso, la crittografia asimmetrica cruda necessariamente vince, poiché la scelta è tra "una crittografia asimmetrica" e "una crittografia asimmetrica più alcune cose di crittografia simmetrica". D'altra parte, se la dimensione di m può superare quella che può essere elaborata con una singola chiamata all'algoritmo di crittografia, allora si torna al problema della concatenazione e qualsiasi discorso sulle prestazioni è al meglio prematura: prima definisci cosa vuoi fare, vedi se è sicuro, e poi (solo allora) possiamo parlare di velocità.
Per fare un'analogia: potresti chiedere quale veicolo è più veloce, tra questo:
equello:
Se pensi che la risposta sia ovvia, porta la tua Ferrari in un lago ...