Estoy revisando para un curso de seguridad informática y estoy atascado en una de las preguntas anteriores. Aquí es:
Alice ( ) quiere enviar un mensaje corto a Bob ( ) usando un secreto compartido para autenticar que el mensaje proviene de ella. Ella propone enviar un solo mensaje con dos piezas:
donde es una función hash y denota concatenación.
- Explique con cuidado qué hace Bob para verificar que el mensaje proviene de Alice y por qué (aparte de las propiedades de ) puede creerlo.
- Suponga que no satisface la propiedad unidireccional y es posible generar imágenes previas. Explica qué puede hacer un atacante y cómo.
- Si generar imágenes previas es relativamente lento, sugiera una contramedida simple para mejorar el protocolo sin cambiar .
Creo que sé el primero. Bob necesita tomar un hash del mensaje recibido junto con su clave compartida y comparar ese hash con el hash recibido de Alice, si coinciden, esto debería probar que Alice lo envió.
Sin embargo, no estoy seguro de las segundas dos preguntas. Para el segundo, ¿la respuesta sería que un atacante simplemente puede obtener el mensaje original dado un hash? Sin embargo, no estoy seguro de cómo se haría eso.
Respuestas:
Para la segunda pregunta: si es fácil generar imágenes previas de , el adversario podría aprender la clave secreta de rompiendo así el esquema. (Tenga en cuenta que esto puede no ser trivial. El proceso de inversión puede generar modo que , pero esto no es útil para el adversario. Además, si si el adversario intenta nuevamente invertir , podría obtener la misma imagen previa).h Sab h(M∥Sab)
M1,S1 h(M∥Sab)=h(M1∥S1) h
Para la tercera pregunta: ahora suponemos que invertir lleva mucho tiempo, así que hagamos la vida del adversario más difícil al exigirle que la invierta muchas veces para romper el esquema. Por ejemplo, use el hash veces . También existen otras soluciones.k h ( h ( h ( . . . . h ( M ‖ S un b ) . . ) )h k h(h(h(....h(M∥Sab)..))
fuente