Questo numero primo è abbastanza grande / troppo grande per un Diffie-Hellman per AES-256?

8

Sto utilizzando uno scambio di chiavi Diffie-Hellman per crittografare i dati usando AES-256. Il numero primo che sto utilizzando è quello del gruppo 8192 bit specificato in RFC 3526 (pagina 6).

La pagina 7 suggerisce che, con un esponente a 620 bit, si tratta di una forza chiave equivalente di 310 bit, quindi abbastanza grande per AES-256. Suggerisce anche che il primo a 6144 bit con un esponente a 540 bit sarebbe abbastanza buono (270 bit).

Ora, entrambi sono piuttosto lenti. Il più grande risulta nello scambio impiegando circa due secondi nel mio scenario.

La mia domanda quindi:

Sono ridicolo? Dovrei usare un primo più piccolo, magari anche AES-128 con il primo bit a 2048 e un esponente a 320 bit? Ho forse frainteso qualcosa del tutto?

Per contesto: la velocità non è poi così importante. Ho bisogno che questa crittografia sia molto strong per i prossimi 10 anni (al massimo). Se ciò richiede due secondi, fallo.

    
posta Stefano Palazzo 13.07.2011 - 09:57
fonte

3 risposte

10

AES-256 e un modulo DH a 8192 bit sono entrambi overkill. Confrontandoli l'uno con l'altro è un esercizio delicato che rasenta l'insignificante, dal momento che entrambi sono piuttosto lontani nel regno di "non posso romperlo ora, non posso farlo neanche tra 30 anni". Puoi dare un'occhiata a questo sito per informazioni e calcolatori su vari modi per stimare la forza relativa degli algoritmi simmetrici e asimmetrici.

I parametri pratici che possono essere raccomandati ora per sicurezza adeguata sono AES-128 e un modulo primario DH 2048-bit (con esponenti 256-bit).

    
risposta data 13.07.2011 - 13:23
fonte
3

Sì. Il tuo approccio è davvero esagerato. AES-128 e un gruppo Diffie-Hellman a 2048 bit (con un esponente a 256 bit) è più che sufficiente. Anche con quei parametri, è eccezionalmente improbabile che la cripto-matematica sia l'anello più debole del tuo sistema. Il tuo sistema è molto più probabile che venga interrotto bypassando la crittografia, piuttosto che spezzando la crittografia a testa alta.

    
risposta data 15.07.2011 - 08:18
fonte
3

Sì. Sei ridicolo nel scegliere AES-256 e 8192 bit DH.

Ci sono molte cose che potresti voler prendere in considerazione.

  1. Stai proteggendo i dati aziendali? Se sì, allora puoi essere felice con AES-128 e 2048 bit DH. La ragione è semplice. AES-256 ha politiche di controllo dell'esportazione e se vuoi impacchettare la tua app, allora devi usare jar speciale (se usi JAVA) ecc. Ma puoi usare AES-256. Nessun problema. Inoltre, è lento se si utilizza qualcosa sopra 2048 bit DH. Devi anche occuparti del sistema su cui verranno decrittografati i dati. Non dovrebbe richiedere troppo tempo. Molte aziende di Fortune-1000 utilizzano ancora 3DES e si sta utilizzando AES, che è un algoritmo di gran lunga migliore. Quindi sei al sicuro con AES-128 e 2048 DH

  2. Stai proteggendo i dati in privato in un piccolo gruppo chiuso? Quindi, è sufficiente AES-128 e 2048 bit DH. Tutto ciò non è più necessario in quanto il periodo di tempo che stai osservando è di soli 10 anni.

Se vuoi davvero più sicurezza e vuoi dimostrarlo in futuro, allora DH è la strada sbagliata. La crittografia a chiave ellittica è la più adatta per questo. Non ci sono molte risorse in questa direzione. Ma ne vale sicuramente la pena.

Bottom line - Le dimensioni non sono tutto in Crittografia. La scelta corretta di algoritmi e implementazione è ciò che effettivamente conta. Vai avanti con AES-128 e 2048 bit DH. È sicuro.

UPDATE:

@stefano - Ciao, ci sono parecchie cose che devono essere considerate da quando hai detto spionaggio governativo nei giornalisti. I governi non ci dicono mai la loro reale capacità. Quindi, è possibile che abbiano già un'infrastruttura per rompere AES-256. La NSA non approverà qualcosa che vada oltre la loro testa. Inoltre, AES non è il più alto livello di sicurezza disponibile. Forma il tier-2 nello stack dell'algoritmo NSA se la mia memoria è corretta. Ma abbiamo opzioni limitate. Quindi possiamo andare con AES-256 per fornire una maggiore sicurezza.

Per garantire una maggiore sicurezza a lungo termine, è necessario prendere in considerazione la crittografia a chiave ellittica. È l'unico sistema disponibile in pubblico in grado di rendere le cose a prova di futuro in modo ragionevole. DH può essere utilizzato quando si desidera trasferire dati tra 2 o più parti. Presumo che tu conosca le basi della crittografia a chiave asimmetrica e perché hai bisogno di DH. Se si memorizzano i dati nel sistema e non si trasferiscono, non è necessario per DH o RSA o crittografia a chiave ellittica.

Inoltre, puoi usare una password molto strong che influenzerà direttamente la chiave selezionata in AES tramite salatura e SHA-512, Ciò ti fornirà la possibilità di cambiare il testo crittografato una volta ogni tanto in modo che una chiave debole che arriva in qualche rivista non guasterebbe i tuoi dati criptati. Esponente 256 bit va bene. Ma, per il tuo scenario attuale, un esponente un po 'più alto può fare un lavoro migliore.

    
risposta data 13.07.2011 - 16:29
fonte

Leggi altre domande sui tag