Scegli i tuoi esponenti in RSA?

3

In altro post interessante , uno degli sviluppatori / ricercatori della sicurezza dietro < un href="http://nosuchlabs.com"> Phuctor suggerisce che l'utilizzo di diversi esponenti con chiavi RSA "[aumenterà] i costi di attacco astronomico alla tua installazione".

Mentre l'autore afferma che "non è detto né implicito che ci sia qualche tipo di vulnerabilità teorica correlata all'uso di 65537 come esponente per RSA", questo suggerimento mi fa riflettere.

Ho alcune domande interrelate:

  1. È possibile generare (PGP | SSH | SSL) chiavi RSA che usano un esponente diverso?
  2. Un esponente diverso e più grande aumenta lo sforzo di lavoro richiesto per un utente malintenzionato? Aumenta lo sforzo di lavoro richiesto per usi legittimi?
  3. Se si generano chiavi con un esponente diverso, perdo la compatibilità con determinati sistemi? vale a dire: se un sistema supporta RSA a 2048 bit, probabilmente supporta anche RSA a 2048 bit con un esponente diverso?

Usare un esponente diverso mi sembra interessante, ma le persone sono state spesso compromesse quando hanno fatto una scelta che non avevano compreso appieno: anche quando pensano di aggiungere sicurezza, potrebbero, in effetti, diminuirla.

    
posta Naftuli Kay 21.05.2015 - 19:23
fonte

1 risposta

4

RSA stesso, come specificato in PKCS # 1 , non impone alcun valore specifico per l'esponente pubblico e . Quel valore e deve essere relativamente primo per entrambi p-1 e q-1 (dove p e q sono i due fattori che costituiscono il modulo RSA), ma non vi sono altre restrizioni. L'esponente e non è nemmeno primo. Deve essere un numero dispari, perché p-1 e q-1 sono pari (poiché p e q sono grandi numeri primi, quindi strani). L'uso di 65537 è solo una tradizione diffusa. C'è anche un'idea che circonda il fatto che questo specifico valore è in qualche modo "più sicuro" di altri (in particolare usando e = 3), ma è un mito . L'esponente pubblico più efficiente è e = 3, sebbene ciò influisca solo su operazioni a chiave pubblica, che sono estremamente raramente il collo di bottiglia in un dato sistema.

In realtà non esiste alcuna relazione tra questo esponente e il costo dell'attacco. I metodi di attacchi "pratici" per RSA cercano di calcolare il modulo e ignorano completamente il valore dell'esponente pubblico. La pagina a cui ti colleghi appare vuoi per usare un esponente distinto di 65537 per il solo motivo che alcune altre persone (a cui l'autore della pagina non piace) raccomandano l'uso di 65537. Questo è un affascinante esempio di umano psicologia al lavoro, ma scientificamente non ha valore.

Generare una chiave RSA con un esponente pubblico arbitrario non è più difficile, e la maggior parte delle librerie RSA la supporta (gli strumenti da riga di comando potrebbero essere più limitati). Per quanto riguarda l'interoperabilità, è necessario essere consapevoli del fatto che alcune implementazioni RSA diffuse, in particolare quella in Windows (e quindi utilizzate per SSL e per la convalida dei certificati), richiedono che l'esponente pubblico si adatti a 32 bit, non per sicurezza avanzata o ridotta o qualunque cosa, ma semplicemente perché ha reso la vita un po 'più semplice per lo sviluppatore originale, che potrebbe dedicare un campo piccolo a larghezza fissa per la codifica esponenziale pubblica. Se vuoi mantenere la tua interoperabilità, dovresti scegliere il tuo esponente pubblico nell'intervallo da 3 a 4294967295.

    
risposta data 21.05.2015 - 19:49
fonte

Leggi altre domande sui tag