¿Cómo proteger con contraseña un volumen de Truecrypt usando un intercambio de clave pública Diffie Hellman?

0

Quiero enviar un volumen de Truecrypt por correo electrónico. Por supuesto, necesito protegerla con contraseña, y el destinatario también debe saber la contraseña. Un intercambio de clave pública Diffie-Hellman parece ser la solución. ¿Cuál es la forma más fácil y segura de hacer esto? Las instrucciones específicas ayudarían.

    
pregunta Peter 09.10.2014 - 10:45
fuente

2 respuestas

1

Llamemos a la persona a la que le envías el volumen a Bob, ya que es tradicional. Entonces:

  1. Usted elige un número primo muy grande (al menos de 300 dígitos) p , y un pequeño g y los envía a Bob (la persona a quien envía el mensaje). Truecrypt volumen a).
  2. Selecciona un número secreto grande (al menos 100 dígitos) a .
  3. Bob elige un número secreto grande (al menos 100 dígitos) b .
  4. Calculas el valor de g ^ a mod p y lo envías a Bob. Llama esto C .
  5. Bob calcula g ^ b mod p y se lo envía a usted. Llama a esto D .
  6. Calculas D ^ a mod p . Esto le da un número secreto S .
  7. Bob calcula C ^ b mod p . Esto le da a él también S .

Ahora, ambos Bob saben S . Eve, que ha escuchado toda la conversación, conoce los valores de p , g , C y D pero no puede calcular el valor de S porque no conoce los valores de a o b , esos eran secretos y nunca pasaron por alto lo inseguro canal de comunicación.

Sin embargo, tenga en cuenta que esto no es suficiente para resolver su problema . Todavía eres vulnerable a un ataque Man-In-The-Middle. Si Eve puede hacerse pasar por Bob y engañarte para que hagas lo anterior con ella en lugar de él, entonces puede elegir b y así poder trabajar con nuestra S . Por lo tanto, debe agregar alguna autenticación para estar seguro de que realmente está hablando con Bob.

    
respondido por el Graham Hill 09.10.2014 - 12:04
fuente
1

La forma más sencilla sería utilizar algún tipo de correo electrónico seguro: S / MIME o PGP. Ambos tienen ventajas y desventajas que están fuera del alcance, pero ambos le permitirán proteger la contraseña (también puede proteger el archivo TC, pero es innecesario).

Usted podría realizar un intercambio de acuerdo de clave DH por correo electrónico , fíjate:

No te recomiendo que sigas estos pasos: usar un paquete estándar de seguridad de correo será más simple y más seguro

Así es como lo harías, sin embargo:

  • Envíe un primer mensaje donde esté de acuerdo con los valores de P y G (hay muchas bibliotecas que pueden ayudarlo a hacerlo o incluso podría elegir una combinación existente)
  • Cada uno elige su entero secreto (lo suficientemente grande) a y b
  • Cada uno realiza (A = G ^ a mod P) y (B = G ^ b mod P) e intercambia A y B
  • Cada uno realiza (s = b ^ a mod P) y (s = b ^ a mod P) para obtener un secreto compartido s
  • use s como contraseña para su archivo TC.

Sin embargo, tenga en cuenta que necesita usar valores de tamaño razonable para la seguridad (P debe tener al menos 1024 bits, por ejemplo), así que tendrá que usar la aritmética de números grandes para manipularlos y necesitará para verificar que no pertenecen a una clase especial de valores débiles (consulte la respuesta a esta pregunta que describe el problema).

Debido a eso, elegir P y G puede ser complicado y complejo. Le recomendaría que use OpenSSL para que lo haga por usted de la siguiente manera:

openssl dhparam 1024 -text

Esto generará una P larga de 1024 usando el generador predeterminado G = 2 y lo mostrará en un formato legible. (

)     
respondido por el Stephane 09.10.2014 - 12:11
fuente

Lea otras preguntas en las etiquetas