¿Puede generar los parámetros de Diffie-Hellman rápidamente [cerrado]

1

Estoy trabajando en un proyecto de Android para la escuela y se supone que debo hacer un DHKE (Diffie Hellman Key Exchange). Todo funciona bien, el problema es que lleva mucho tiempo (realmente mucho) generar DHParameters. Básicamente, en mi código, esta es la parte que consume más tiempo (y batería):

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

Como puede ver, la longitud de la clave es de solo 512 bits, por lo que no es larga, y todavía toma al menos 30-40 segundos (el mejor de los casos), pero puede llegar hasta los 400 segundos. Y lo he probado en varios teléfonos: Samsung galaxy s2 (quad core), samsung galaxy s4 (quad core), samsung galaxy note 10.1 (quad core). ¿Alguien sabe una alternativa para generar más rápidamente las p y g para el Diffie Hellman para acelerar el proceso?

    
pregunta user2435860 07.02.2014 - 21:08
fuente

1 respuesta

6

Primero, 512 bits es demasiado pequeño. Un pequeño grupo de computadoras puede romper los parámetros de ese tamaño en un mes. Use 2048.

En segundo lugar, los parámetros de Diffie-Hellman son información pública. Cualquier biblioteca criptográfica sensata incluiría parámetros predeterminados, probablemente de RFC 3526 . (Incluso si su biblioteca no los incluye, puede usar los parámetros de RFC 3526 si los convierte a su formato de entrada). Si insiste en generar los suyos propios, hágalo una vez y codifíquelos. Incluso puedes hacerlo en tu PC si prefieres no esperar.

Esta pregunta sobre el desbordamiento de pila (en su mayoría) muestra cómo hacerlo (aunque utiliza 1024 bits; como dije, debería usar 2048):

enlace

La generación del DH par de teclas en sí misma es básicamente instantánea.

Tercero, escribir su propio protocolo criptográfico para aprender es genial, pero no lo use en código real, con datos de usuarios reales, dinero y vidas en juego. Diseñar criptografía segura es extremadamente difícil. Crypto es especialmente peligroso porque algo puede verse bien, parece funcionar y aún así ser muy inseguro. Lleva equipos de expertos años y varios intentan hacerlo bien. Utilice TLS.

    
respondido por el Matt Nordhoff 07.02.2014 - 21:23
fuente

Lea otras preguntas en las etiquetas