Puoi generare rapidamente i parametri di Diffie-Hellman [chiuso]

1

Sto lavorando a un progetto Android per scuola e dovrei fare un DHKE (Diffie Hellman Key Exchange). Tutto funziona bene, il problema è che ci vuole molto tempo (davvero molto) per generare DHParameters. Fondamentalmente, nel mio codice, questa è la parte che consuma più tempo (e batteria):

KeyPairGenerator kpgDH = KeyPairGenerator.getInstance("DH");
kpgDH.initialize(512);
KeyPair kpDH = kpgDH.generateKeyPair();

Come puoi vedere, la lunghezza della chiave è di soli 512 bit, quindi non è lunga, e richiede ancora almeno 30-40 secondi (scenario migliore), ma può arrivare fino a 400 secondi. E l'ho provato su diversi telefoni: Samsung Galaxy s2 (quad core), Samsung Galaxy s4 (quad core), Samsung Galaxy Note 10.1 (quad core). Qualcuno conosce un'alternativa per generare più rapidamente p e g per il Diffie Hellman al fine di accelerare il processo?

    
posta user2435860 07.02.2014 - 21:08
fonte

1 risposta

6

Primo, 512 bit è troppo piccolo. Parametri che la dimensione può essere spezzata in un mese da un piccolo cluster di computer. Usa 2048.

In secondo luogo, i parametri di Diffie-Hellman sono informazioni pubbliche. Qualsiasi libreria crittografica ragionevole includerebbe i parametri predefiniti, probabilmente da RFC 3526 . (Anche se la tua libreria non li include, puoi comunque utilizzare i parametri RFC 3526 se li converti nel suo formato di input.) Se insisti a generarne uno, fallo una volta e inseriscilo con hardcode. Puoi anche farlo sul tuo PC se preferisci non aspettare.

Questa domanda di overflow dello stack (principalmente) dimostra come eseguirlo (sebbene usi 1024 bit; come ho detto, dovresti usare 2048):

link

Generare la coppia di chiavi DH è fondamentalmente istantaneo.

In terzo luogo, scrivere il proprio protocollo crittografico per imparare è ottimo, ma non usarlo nel codice reale, con dati reali dell'utente, denaro e vite in gioco. Progettare la crittografia sicura è estremamente difficile. Crypto è particolarmente pericoloso perché qualcosa può sembrare bello, sembra funzionare e comunque essere mal insicuri. Ci vogliono team di esperti per anni e diversi tentativi per farlo bene. Utilizza TLS.

    
risposta data 07.02.2014 - 21:23
fonte

Leggi altre domande sui tag