Algoritmo basado en HMAC para compartir públicamente mensajes autenticados

-1

Estoy tratando de diseñar un algoritmo para compartir públicamente mensajes autenticados.

Obviamente, los esquemas asimétricos de clave pública / privada hacen esto, pero quiero evitar el requisito de que los usuarios tengan que realizar un seguimiento de una clave asimétrica larga. En su lugar, solo quiero que los usuarios realicen un seguimiento de una contraseña que se puede hashear para crear las claves que necesitan. Toda otra información se comparte públicamente.

Espero lograr esto utilizando un esquema elaborado que involucre HMACs donde se liberen las claves HMAC después de que el mensaje se haya firmado y publicado con éxito. Un atacante no puede falsificar un mensaje, ya que solo podría firmar y publicar un mensaje después de que se haya liberado la clave HMAC correspondiente.

El autor real debe demostrar que la clave HMAC que utilizaron es la clave HMAC correcta. Para hacer esto, deben publicar un hash (o HMAC) de la clave HMAC de antemano, por lo que cuando comparten la clave HMAC también se puede autenticar.

Así que básicamente funcionará así:

  • Alice quiere compartir públicamente mensajes autenticados usando solo una contraseña secreta.
  • Ella genera una clave HMAC inicial usando su contraseña.
  • Ella publica el hash de esa clave HMAC para que luego pueda verificarse.
  • Más tarde, cuando quiere publicar un mensaje, hace lo siguiente:

    • Utiliza su contraseña y un contador para generar una clave HMAC de reemplazo y un hash de esa clave HMAC de reemplazo.
    • utiliza la clave HMAC anterior para firmar el mensaje que desea publicar.
    • utiliza la clave HMAC anterior para firmar el hash de la clave HMAC de reemplazo.
    • comparte el mensaje firmado y el hash firmado de la clave HMAC de reemplazo.
    • Una vez que ambos se han publicado, ella comparte la clave HMAC anterior.
    • Todos los demás usan el hash de clave HMAC publicado anteriormente para verificar que la clave HMAC sea correcta.
    • Luego, usan esa clave HMAC para autenticar el mensaje y la clave HMAC de reemplazo.

Apreciaría algunos comentarios sobre las implicaciones de seguridad de mi esquema inventado si tiene tiempo para entender completamente el algoritmo descrito.

Este es mi mejor intento de crear un esquema para autenticar mensajes públicamente usando solo una contraseña. Lo que realmente me gustaría saber es si existe una forma viable de hacer esto.

Me he convencido de que la mejor alternativa es que los usuarios que no desean realizar un seguimiento de una clave privada prolongada utilicen un servicio de terceros de confianza que almacene una versión cifrada de esa clave. Cuando quieren firmar un mensaje, descargan su clave cifrada de ese servicio, la descifran y luego firman su mensaje de la manera habitual. Si pudiera hacerlo mejor, me gustaría saber.

    
pregunta derekmc 21.09.2014 - 18:23
fuente

1 respuesta

1

Su esquema inventado libera "un hash (o HMAC) de la clave HMAC",
se basa en la marca de tiempo de confianza y permite que un atacante intercambie
"el mensaje que quiere publicar" con "el hash de la clave HMAC de reemplazo".



La siguiente es una forma viable de hacer lo que está intentando:

  • Alice quiere compartir públicamente mensajes autenticados usando solo una contraseña secreta.
  • Ella genera un par de claves de firma usando su contraseña.
  • Ella publica el hash de la clave de verificación.

    • Utiliza su contraseña para regenerar el par de claves.
    • utiliza la clave privada para firmar el mensaje que quiere publicar.
    • comparte el mensaje firmado y la clave de verificación.
    • Todos los demás utilizan el hash previamente publicado para verificar que la clave de verificación es correcta.
    • Luego, usan esa clave de verificación de firma para autenticar el mensaje.



Su "mejor alternativa" podría mejorarse haciendo que un tercero de confianza almacene una autenticación
token también "Cuando quieren firmar un mensaje, descargan su" sal "de ese servicio"
derivar regenerar el token y la clave de autenticación, enviar el token de autenticación ", descargar
su clave encriptada de ese servicio, descifre y luego firme su mensaje de la manera normal ".
(El punto es que eso evita que todos los demás que no sean terceros realicen una búsqueda de contraseña sin conexión.)

    
respondido por el user49075 21.09.2014 - 19:22
fuente

Lea otras preguntas en las etiquetas