Con RSA, la crittografia utilizza solo la chiave pubblica, in modo che tutti possano prendere una chiave pubblica RSA e crittografare trilioni di messaggi con essa. Nessun limite lì. RSA decryption utilizza la chiave privata. Se un utente malintenzionato può inviarti "messaggi" di sua scelta per te da decifrare, e può elaborare la chiave privata tra le tue risposte, allora si chiama attacco cifrato scelto . RSA dovrebbe resistere al CCA.
Nel 1998, Bleichenbacher ha pubblicato un CCA contro RSA, come definito da PKCS # 1 (il " v1.5 padding "). Vale a dire, se si invia posta indesiderata a un motore di decrittografia RSA, tale posta indesiderata risulterà "decrittografata con successo" (riempimento sintatticamente corretto) con probabilità 1/65536 o così; questa informazione è sufficiente per recuperare la chiave privata in un milione di richieste o giù di lì.
Rotazione frequente delle chiavi private (ad es. una volta ogni 100000 utilizzi) poteva essere una risposta, ma non è pratico perché un PC di base, utilizzato come server SSL, può essere usato per usare la sua chiave privata 100000 volte in molto meno di un ora. Invece, i crittografi iniziarono a pensare e trovarono due soluzioni:
-
"Nascondi" le informazioni sul successo della decrittografia. Questo è ciò che fanno i server SSL: se la decrittografia non produce un valore corretto, basta usarne uno casuale e continuare; l'handshake SSL fallirà un paio di messaggi dopo. Questo impedisce l'attacco perché l'attaccante non può distinguere tra "la decrittografia fallita perché il padding non è corretto" e "la decrittografia è riuscita e ha ottenuto un segreto pre-master che l'utente malintenzionato non ha".
-
Utilizzare un riempimento migliore con una probabilità di "successo su posta indesiderata casuale" considerevolmente più piccolo. Questo è chiamato Padding OAEP .
Bottom-line is: SE esiste un numero di numero massimo di messaggi che puoi elaborare con RSA, oltre il quale la chiave privata è in qualche modo esposta, POI sei facendo sbagliato.
A proposito, i soliti mantra sulla rotazione delle chiavi per gli algoritmi simmetrici sono spesso un richiamo più ambiguo e una tradizione tradizionale dimenticata rispetto alle misure di sicurezza razionali. Come suggerisce @CodesInChaos, AES è stato progettato con una dimensione di blocco di 128 bit, in modo tale da poter essere utilizzato su gigatonnellate di dati senza perdere la chiave segreta.