Cifrado de mensajes frente a firma digital para la autenticación

3

Tengo este argumento que me gustaría verificar:

Si SOLO Alice y Bob tienen la clave simétrica compartida, ¿por qué el cifrado de mensajes no sirve para la autenticación en la práctica en lugar de los esquemas de firma digital? Si un atacante puede capturar este mensaje, no podrá hacer nada a menos que conozca las claves. Por lo tanto, el cifrado de mensajes me parece un mecanismo de autenticación válido que requiere menos computación que la firma digital (¡por lo tanto, más eficiente!).

    
pregunta Alli 21.11.2016 - 20:42
fuente

3 respuestas

4

Sí , bien observado. De hecho, esto se usa en sistemas criptográficos del mundo real:

El protocolo Kerberos que respalda toda la autenticación de Windows hace casi exactamente lo que estás sugiriendo (fuente: wikipedia.org / Kerberos_ (protocolo) .

  

Autenticación del cliente

     
  1. El cliente envía un mensaje de texto claro de la ID de usuario al AS (Servidor de autenticación) que solicita servicios en nombre del usuario. (Nota: ni la clave secreta ni la contraseña se envían al AS.) El AS genera la clave secreta al ingresar la contraseña del usuario que se encuentra en la base de datos (por ejemplo, Active Directory en Windows Server) .

  2.   
  3. El AS verifica si el cliente está en su base de datos. Si es así, el AS envía los siguientes dos mensajes al cliente:

         
    • Mensaje A: Clave de sesión del cliente / TGS encriptada usando la clave secreta del cliente / usuario.

    •   
    • Mensaje B: Ticket-Granting-Ticket (TGT, que incluye la identificación del cliente, la dirección de red del cliente, el período de validez del ticket y la clave de sesión cliente / TGS) encriptadas usando la clave secreta del TGS.

    •   
  4.   
  5. Una vez que el cliente recibe los mensajes A y B, intenta descifrar el mensaje A con la clave secreta generada a partir de la contraseña ingresada por el usuario. Si la contraseña ingresada por el usuario no coincide con la contraseña en la base de datos de AS, la clave secreta del cliente será diferente y, por lo tanto, no podrá descifrar el mensaje A . Con una contraseña válida y una clave secreta, el cliente descifra el mensaje A para obtener la clave de sesión del cliente / TGS.

  6.   

Como señala, esto es como un mecanismo de autenticación válido que requiere menos computación que la firma digital, pero requiere un secreto previamente compartido . Esto es GRANDE PERO en muchas situaciones.

Por ejemplo, quiero crear una nueva cuenta en mybank.com , lo que quiero hacer sobre https . Mi navegador nunca ha estado allí antes, así que no tengo un secreto pre-compartido con el servidor mybank.com . Parte del https handshake es que el servidor se autentique ante el cliente (compruebe que es infactamente mybank.com , y no es un hombre en el medio), lo cual es imposible de hacer usando solo criptografía simétrica y no pre Secreto compartido.

En situaciones como esta, la criptografía de clave pública es el rey.

    
respondido por el Mike Ounsworth 21.11.2016 - 21:02
fuente
2

No . El cifrado de mensajes solo funciona en circunstancias bien definidas para autenticar un mensaje, no es una solución de autenticación general.

  

Si un atacante puede capturar este mensaje, no podrá hacer nada a menos que sepa las claves.

Esto es falso. Aquí hay una serie de circunstancias en las que falla por completo: Imagine que está utilizando un cifrado de bloque utilizando bloques de 8 bytes en el modo ecb. En ese modo, un bloque precedente no influye en el siguiente bloque.

Ahora asume que Alice le encripta un secreto a Bob, a saber, "¡Te quiero, Bob!". Esto produce "ztlk43aAb2329iw2". Quiero cambiar este mensaje. A Alice realmente no le gusta el trabajo de Bob, y si puedo incitarla a que encripte algo como "¡Odio tu trabajo!" con la misma clave, eso podría producir algo como "7ZutlwNmsdlfdsaK". Ahora simplemente tomo los primeros 8 bytes de este y pego los últimos 8 bytes del mensaje original hasta el final, dando como resultado "7ZutlwNmb2329iw2". Cuando Bob desencripta esto, produce "Te odio, Bob!".

Falló la autenticación, y el amor incipiente murió a mediados del vuelo.

Como dijo Christian, necesitas usar un hmac para autenticarte. Hmacs funciona mediante la concatenación de un secreto (contraseña) del mensaje que se va a cifrar y su codificación (es un poco más complicado que eso, de hecho, porque la concatenación no sería segura), y usted autentica el mensaje haciendo lo mismo con El secreto conocido y comparando el valor hash resultante.

Solía haber un debate entre las personas de seguridad sobre si cifrar-luego-autenticar o autenticar-y luego cifrar, lo que demuestra que el cifrado por sí solo no se considera suficiente, incluso si la secuencia de las dos operaciones no fuera suficiente. No es inmediatamente obvio.

De hecho, creo que la forma correcta de hacerlo es cifrar y luego autenticar (y en el extremo del receptor autenticar y luego descifrar), de modo que nunca intente descifrar un mensaje que no se autenticó primero.

    
respondido por el Pascal 21.11.2016 - 21:04
fuente
0

Sí, es posible utilizar el cifrado simétrico en lugar del cifrado asimétrico para autenticar. Pero no solo el simple cifrado simétrico, como puede estar pensando.

Lo que estás describiendo se hace correctamente con un MAC - Código de autenticación de mensajes - típicamente por HMAC (Hash basado en MAC) - que hace exactamente eso - Autenticación usando clave criptográfica / compartida simétrica.

    
respondido por el CristianTM 21.11.2016 - 20:50
fuente

Lea otras preguntas en las etiquetas