Riduci le dimensioni della chiave Diffie Hellman tramite pbkdf?

2

Ho i seguenti requisiti per il software su cui sto lavorando:

Utilizza un strong scambio di chiavi asimmetriche con dimensione della chiave pubblica < 16 byte.

So che è piuttosto difficile per questa quantità di byte, ma ho trovato la seguente soluzione e volevo un feedback:

Utilizza l'algoritmo Diffie Hellman Key Exchange con parametro P (primo modulo) < 2 ^ 128, e quindi utilizzare un algoritmo di derivazione della chiave come pbkdf2 sul segreto condiviso generato per generare una chiave simmetrica molto più strong e utilizzare questa chiave per crittografare i dati trasmessi.

Voglio sapere se questo migliorerà la sicurezza di tale protocollo rispetto al semplice Diffie Hellman su 2 ^ 128.

    
posta Gregory 28.08.2011 - 22:34
fonte

2 risposte

4

Il tuo schema proposto è altamente insicuro. Non usarlo!

È banale risolvere il problema del registro discreto modulo un primo di 128 bit. Di conseguenza, è banale interrompere Diffie-Hellman se si utilizza un modulo primario a 128 bit. pbkdf2 non ti salverà da quell'attacco.

Invece, ecco cosa dovresti fare. Utilizzare la crittografia a curva ellittica a 127 bit (ECC) (vale a dire, lavorare in un gruppo di ordini attorno a 2 ^ 127). Quindi, la chiave pubblica può essere rappresentata in 127 + 1 = 128 bit, se si utilizza la compressione punto o metodi simili. Ora, puoi fare lo scambio di chiavi con questo gruppo ECC, usando qualsiasi criptosistema ECC ben controllato (ad es. ECMQV). Assicurati di utilizzare lo scambio di chiavi autenticate, in modo che ciascuna parte autentifichi l'altra. Tieni presente che questo fornisce solo una sicurezza di circa 63 bit, quindi non fornisce una protezione avanzata, ma potrebbe essere sufficiente per molti scopi.

Si noti che la sola crittografia di solito non è sufficiente per risolvere tutte le esigenze di sicurezza dei dati. Per garantire la sicurezza, sarà necessario esaminare le minacce che il sistema dovrà affrontare e progettare una soluzione completa. Crypto non è un magico folletto che può risolvere da solo tutti i tuoi problemi di sicurezza; di solito deve essere completato da una progettazione software sicura, pratiche di sviluppo sicure e altri processi di sicurezza.

    
risposta data 29.08.2011 - 01:09
fonte
4

Non penso che sia una buona idea.

Il problema nello scambio di chiavi Diffie-Hellman non è la dimensione della chiave generata (può essere grande quanto richiesto), ma la necessità di autenticare una parte per evitare attacchi man-in-the-middle.

E questa è la ragione per avere un componente a chiave pubblica - senza che ciò avvenga, DH potrebbe persino lavorare in modo anonimo (e funziona, se si ha solo paura di attaccanti passivi).

Quindi, la mia idea sarebbe quella di usare Diffie-Hellman standard (big-modulo) e autenticare il risultato con una firma a chiave pubblica.

Ma poi il problema con le piccole chiavi pubbliche asimmetriche è che non è così difficile ricavarne la chiave privata corrispondente (nel caso RSA, fattorizzando il modulo, nel caso DSA o Diffie-Hellman: risolvere un logaritmo discreto ).

Questo deve essere fatto una sola volta (per ogni chiave), e quindi l'attaccante può giocare man-in-the-middle per ogni sessione successiva autenticata con questa chiave.

(Rimosso l'ultimo paragrafo su ECC, dal momento che non è stato pensato, e ora sono stanco di farlo bene.)

    
risposta data 28.08.2011 - 23:00
fonte

Leggi altre domande sui tag