¿Qué tan seguro es el HMAC?

4

Estoy construyendo una API sin estado RESTful y estoy usando un token para la autenticación. El problema que tengo es que no estoy seguro de qué tan seguro es HMAC.

Estoy usando una biblioteca token web JSON que permite cifrar y descifrar los datos que paso.

Básicamente, la forma en que funciona es la siguiente:

Si lo paso este JSON:

{
    token: "asdasdasdass",
    userId: 1234    
}

Devuelve 325345ljljn5llnk4.245j4k5j4525ñ4j55n , donde la primera parte es la codificación JSON base64 y la segunda parte es HMAC.

Por ejemplo si pongo:

{
    sessionId: 145
}

¿Hay alguna forma en que un atacante pueda generar un token válido con el ID de sesión que desea? ¿Es factible?

Además, ¿cuánto tiempo debe ser la longitud de mi clave?

No encontré respuestas en este sitio ... y he estado leyendo mucho.

    
pregunta Gaston Sanchez 14.10.2014 - 19:45
fuente

1 respuesta

3

HMAC es una construcción de código de autenticación de mensaje con clave. Como mencionó Bernie en los comentarios, un atacante que no tenga su clave secreta (suponiendo que la implementación sea sólida, por supuesto), no puede crear un HMAC válido para los datos modificados.

La respuesta a tu segunda pregunta: "¿Cuánto debe ser la longitud de mi clave?" depende de la función hash específica que esté usando dentro de HMAC. Lo ideal es que la longitud de la clave sea igual a la longitud de salida, por lo que para HMACSHA1, usaría una clave de 160 bits, para HMACSHA256, una clave de 256 bits, para HMACSHA512, una clave de 512 bits, etc.

    
respondido por el Xander 15.10.2014 - 15:07
fuente

Lea otras preguntas en las etiquetas