Non esiste alcuna debolezza nota per qualsiasi esponente pubblico breve o lungo per RSA, a patto che l'esponente pubblico sia "corretto" (ovvero relativamente primo a p-1 per tutti i numeri primi p che dividono il modulo).
Se usi un piccolo esponente e non usi alcun padding per la crittografia e cripti lo stesso identico messaggio con più pubblico distinto le chiavi, quindi il tuo messaggio è a rischio: se e = 3 e cripti il messaggio m con le chiavi pubbliche n 1 , n 2 e n 3 , allora hai c i = m 3 mod n i per i = 1 a 3 . Tramite il Teorema dei rimanenti cinesi , puoi quindi ricostruire m 3 mod n 1 n 2 n 3 , che risulta essere m 3 (senza alcun modulo) perché
n 1 n 2 n 3 è un numero intero maggiore. Un'estrazione di radice cubica (non modulare) è quindi sufficiente per estrarre m .
Il punto debole, qui, è not il piccolo esponente; piuttosto, è l'uso di un padding improprio (vale a dire, nessun padding a tutti) per la crittografia. Il riempimento è molto importante per la sicurezza di RSA, indipendentemente dalla crittografia o dalla firma; se non utilizzi un padding adeguato (come quelli descritti in PKCS # 1 ), allora hai molti punti deboli, e quello delineato nel paragrafo sopra non è il più grande, di gran lunga. Tuttavia, ogni volta che qualcuno fa riferimento a una debolezza correlata all'esponente, egli si riferisce più o meno direttamente a questo evento. È un po 'di tradizione antica e scorretta, che a volte è invertita in una proibizione contro gli eminenti big (poiché è un mito, il mito inverso è anche un mito e non è più - e non meno - - motivata); Credo che questo sia ciò che osservi qui.
Tuttavia, si possono trovare alcuni motivi per cui un grande esponente pubblico deve essere evitato:
-
I piccoli esponenti pubblici promuovono l'efficienza (per le operazioni a chiave pubblica).
-
Ci sono problemi di sicurezza riguardo al fatto di avere un piccolo esponente privato ; un attacco per il recupero delle chiavi è stato descritto quando la lunghezza dell'esponente privato non supera il 29% della lunghezza dell'esponente pubblico. Quando si vuole forzare l'esponente privato a essere breve (ad esempio per accelerare le operazioni con le chiavi private), è più o meno necessario utilizzare un grande esponente pubblico (grande quanto il modulo); richiedere che l'esponente pubblico sia breve può quindi essere considerato una sorta di contromisura indiretta.
-
Alcune implementazioni RSA ampiamente implementate soffocano su grandi esponenti pubblici RSA. Per esempio. il codice RSA in Windows (CryptoAPI, utilizzato da Internet Explorer per HTTPS) insiste sulla codifica dell'esponente pubblico all'interno di una singola parola a 32 bit; non può elaborare una chiave pubblica con un esponente pubblico più grande.
Tuttavia, "i rischi possono essere grandi" sembra la giustificazione generica ("questo è un problema di sicurezza" è il solito modo di dire "non l'abbiamo implementato ma non vogliamo ammettere alcun tipo di pigrizia").