¿Es posible implementar un nonce sin almacenamiento?

9

Estoy considerando la implementación de un módulo de autenticación utilizando el Cliente OAuth 2.0 y estoy tratando de evitar tener un estado de servidor. Estaba analizando algunas otras preguntas

Parece que implementar un nonce requiere almacenar algo en el servidor para garantizar que los ataques de repetición no ocurran porque la solicitud no debería ocurrir dos veces.

Sin embargo, esto es solo para la autenticación / autorización, no para los datos de envío de formularios, en cuyo caso la implementación de un nonce es fácil, ya que necesitaría tener el estado del servidor de todos modos para capturar los datos.

Entonces, mientras más lo veo, no parece tener sentido utilizar un nonce en este caso de uso (excepto el inicio de sesión, pero ese es el problema del servidor de Autorización), el token (cifrado con una clave secreta que es en el servidor basado en el cliente_secret de OAuth) Debo estar bien para enviar (hasta que caduque).

¿Hay algo que pueda faltar?

    
pregunta Archimedes Trajano 03.07.2014 - 17:14
fuente

1 respuesta

6

De la pregunta: "porque la solicitud no debería ocurrir dos veces".

Sin almacenamiento significa que no hay sentido de la historia, lo cual es necesario para el requisito de que algo no ocurra dos veces. Por tanto, la respuesta es no. Si desea que la aplicación de su servidor recuerde lo que sucedió en el pasado, debe poder almacenarlo en algún lugar.

Podría implementar un nonce con límite de tiempo y sin uso y que puede hacer sin el almacenamiento del lado del servidor. Simplemente adjunte una marca de tiempo al nonce (y fírmelo, para que el servidor pueda verificar y los atacantes no puedan falsificar) y deje de cumplirlo después de X segundos / minutos / horas. Los ataques de repetición serían posibles pero solo en esa ventana de tiempo.

Su servidor también necesita una fuente confiable de tiempo. Si un atacante puede hacer que su servidor piense que es ayer, entonces los horarios de ayer comienzan a funcionar nuevamente.

    
respondido por el u2702 08.07.2014 - 18:31
fuente

Lea otras preguntas en las etiquetas