¿Es esta una forma segura de verificar las claves públicas?

6

Quiero verificar una clave pública como esta:

  1. Alice genera un par de claves públicas / privadas para el cifrado
  2. Alice genera un par de claves pública / privada para la firma
  3. Alice firma una palabra aleatoria de 4 letras + la clave de cifrado pública usando su clave de firma privada
  4. Alice envía sus claves públicas (ambas) y la firma a Bob
  5. Alicia le envía la palabra de 4 letras a Bob utilizando una forma segura y confiable
  6. Bob verifica la clave de cifrado pública de Alice al verificar que la firma se haya creado con la palabra de 4 letras de la manera descrita anteriormente.

Esto es de lo que no estoy seguro:

  1. ¿Es suficiente una palabra de 4 letras?
  2. ¿Verificando la firma verifique que la clave pública sea la clave original y no haya sido alterada por un "hombre en el medio", cuando el mensaje original es el secreto?

Antecedentes: quiero archivar, guardar el intercambio de claves públicas entre otras partes. Pero no hay una autoridad de terceros de confianza en la que pueda confiar.

Pero en cambio las dos partes se reunirán en persona al principio. En ese momento confían el uno en el otro. Una parte puede dar a la otra un secreto (por ejemplo, en una hoja de papel).

Por supuesto, en teoría, la otra parte podría devolver algo. Pero por razones de facilidad de uso, quiero evitar esto.

Por supuesto, la huella digital de la clave pública podría ser el secreto. Pero, una vez más, para que sea fácil de usar, quiero que el secreto sea lo más breve posible.

    
pregunta Nathan 18.12.2015 - 16:47
fuente

1 respuesta

4

1. ¿Es suficiente una palabra de 4 letras?

No importa cuánto tiempo sea la palabra, siempre que pueda considerarse única y se mantenga en secreto. Un atacante que firma su clave pública con muchas secuencias aleatorias de 4 letras donde una de ellas contiene la secuencia correcta es poco probable que tenga éxito, ya que la cantidad de combinaciones aleatorias hace que el ataque sea bastante obvio.

2. ¿Verificando la firma verifique que la clave pública sea la clave original y no haya sido alterada por un "hombre en el medio", cuando el mensaje original es el secreto?

Si la firma es válida, definitivamente sabes que el propietario de la clave privada (pares de firma) que también conoce la secuencia secreta de 4 letras te da una clave pública, nada más. No comprueba si la clave está dentro de un certificado válido, si la secuencia de 4 letras es correcta o si esta es la clave pública correcta (el propietario del par de claves de firma puede firmar lo que quiera).

Ahora imaginemos que tienes un Man-in-the-Middle (MITM) en el paso 4, cuando Alice transfiere las claves públicas y la palabra de 4 letras firmada a Bob. Como no hay CA y asumimos que Bob no puede distinguir el certificado de Alice del certificado de MITM, el MITM podría simplemente reemplazar las claves públicas con las suyas, leer la palabra de 4 letras y firmar la misma palabra con su propia clave. también. Una palabra firmada es fácilmente accesible, por lo que en el momento en que la envió, MITM puede simplemente leerla y usarla para reemplazar todos los datos futuros y ser autenticada por Bob. Por lo tanto, esta no es una forma segura de verificar las claves públicas.

Posibles soluciones

  • Intercambie un hash (sha1 fe) de la huella dactilar en el paso 5. Todavía se puede considerar lo suficientemente seguro si Bob solo recuerda las letras de inicio y fin de par de hash, ya que sería imposible para un MITM crear un certificado cuyo el hash de la huella digital comienza y termina exactamente con las mismas letras.
  • Utilice cifrado simétrico. Coloque su certificado público en un archivo protegido por contraseña (zip, por ejemplo) e intercambie esta contraseña.

Por cierto, no necesita dos pares de claves, puede firmar & cifrar con las mismas claves.

    
respondido por el James Cameron 18.12.2015 - 17:18
fuente

Lea otras preguntas en las etiquetas