¿Cómo se verificará la validación de firmas en el lado del servidor?

3

Lo siento, puede ser posible que algunas cosas se repitan en mi pregunta.

He revisado la documentación / discusión firmando una solicitud de API y documentación de firmas de Twitter

Según la discusión aquí firmar una solicitud de API Con una solicitud firmada, la contraseña se mantiene segura y un atacante no puede usar la información de la consulta para firmar otra solicitud.

Pero para la generación de firmas utiliza la función de hash sin revertir SHA-1.

Mi pregunta es: - Si la firma se usó para autorizar / autenticar la solicitud del cliente, ¿cómo se usó esa firma en el lado del servidor para verificar y validar la solicitud del usuario?

    
pregunta Swapnil Kotwal 26.08.2013 - 11:39
fuente

1 respuesta

4

En primer lugar, el uso del término firma aquí es incorrecto. Sé que lo están utilizando en la documentación de Twitter , pero ese no es el nombre correcto. "Firma" normalmente se refiere a firmas digitales que forman parte de la criptografía asimétrica; por ejemplo, RSA, DSA ... Aquí tenemos un MAC .

No se utiliza "SHA-1", sino "HMAC / SHA-1". HMAC es un algoritmo de MAC que se basa en un función hash (aquí SHA-1) como un bloque de construcción, pero HMAC es más que una simple función hash. HMAC es un MAC, lo que significa que utiliza una clave secreta que la documentación de Twitter llama al "secreto del consumidor" (una vez más, esa documentación usa el término "clave" para designar algo diferente, lo cual es una gran fuente de confusión). Esta clave secreta está involucrada en el cálculo; es necesario para producir la salida HMAC pero también para verificarla. Esta clave secreta es conocida tanto por el cliente como por el servidor, pero no por ninguna otra (es "secreta"). HMAC es para que cada salida HMAC sea específica para un mensaje de entrada dado, y no es factible forjar una salida HMAC válida para un mensaje nuevo sin conocer la clave secreta, incluso si se observan muchos otros mensajes de pares + salida HMAC.

Para resumir, el servidor puede verificar la "firma" del cliente usando el "secreto del consumidor" que tanto el cliente como el servidor conocen. Cuando el servidor ve una salida HMAC válida, sabe que el mensaje proviene de alguien que conoce el "secreto del consumidor", que solo puede ser el cliente o el servidor en sí. El servidor sabe que nunca produce mensajes con ese formato exacto, por lo que debe provenir del cliente, el cliente específico que conoce ese "secreto del consumidor" específico. Por lo tanto, el cliente está autenticado .

    
respondido por el Thomas Pornin 26.08.2013 - 14:56
fuente

Lea otras preguntas en las etiquetas