Señales de portador de AWS Signature V4 vs OAuth + JWT

3

Para proteger las API de REST, una opción lógica para el control de acceso es JWT, ya sea por sí misma o en combinación con OAuth. Si solo me importa autenticar a la persona que llama, verificar una firma JWT es suficiente por sí mismo. Si también me importa la autorización, también usaría OAuth o algún tipo de servicio de token. De cualquier manera, estoy incluyendo un encabezado como Authorization: Bearer [JWT token] en la solicitud HTTP.

AWS tiene su propio estándar para el control de acceso a la API donde firma partes de solicitarse e incluir un encabezado como Authorization: AWS4-HMAC-SHA256 ....

Mis preguntas:

  • ¿Es el enfoque de AWS más seguro contra los ataques de repetición? Creo que sí, porque incluso si tiene una caducidad de token corta, es hipotéticamente posible reutilizar un token de portador en una solicitud diferente. La firma significa que la solicitud no ha sido alterada.

  • si es más seguro, ¿debería considerarse un estándar de la industria como OAuth y JWT? ¿En qué medida los marcos de aplicaciones estándar proporcionan soporte en el lado de la validación? etc.

pregunta wrschneider 29.06.2017 - 17:54
fuente

2 respuestas

2
  

¿Es el enfoque de AWS más seguro contra los ataques de repetición? Creo que sí, porque incluso si tiene una caducidad de token corta, es hipotéticamente posible reutilizar un token de portador en una solicitud diferente. La firma significa que la solicitud no ha sido alterada.

Sí, es más seguro contra los ataques de reproducción. Como sugirió, los tokens de portador se pueden usar con cualquier solicitud (no solo teóricamente). Son completamente independientes de la solicitud que autorizan. Las firmas de AWS, por otro lado, están "vinculadas" a la solicitud a la que se adjuntan. La solicitud firmada también contiene una marca de tiempo que AWS verifica para asegurarse de que esté dentro de una ventana determinada. La solicitud solo se puede reproducir en esta ventana.

Tal como ha dicho, la firma garantiza la integridad de la solicitud. La integridad también es proporcionada por HTTPS. El esquema de AWS mantiene la integridad incluso si se quita HTTPS.

  

si es más seguro, ¿debería considerarse un estándar de la industria como OAuth y JWT? ¿En qué medida los marcos de aplicaciones estándar proporcionan soporte en el lado de la validación? etc.

Te da más propiedades de seguridad. Hay otros esquemas de firma HTTP que intentan replicar lo que hace AWS. Aquí hay un borrador . Joyent también creó su propio esquema . También hay una biblioteca llamada Escher , que reproduce completamente el esquema de AWS. También es compatible con él e incluye el lado de validación también.

DESCARGO DE RESPONSABILIDAD: trabajo para la compañía que desarrolló Escher. Lo usamos en producción para conectar muchos servicios.

    
respondido por el Daniel Szpisjak 29.07.2017 - 23:23
fuente
1
  

¿Es el enfoque de AWS más seguro contra los ataques de repetición? Creo que sí, porque incluso si tiene una caducidad de token corta, es hipotéticamente posible reutilizar un token de portador en una solicitud diferente. La firma significa que la solicitud no ha sido alterada.

Todas las solicitudes que se envían utilizando la API tienen una marca de tiempo asociada a ellas. AWS rechaza las solicitudes que se recibieron más de 5 minutos después de la marca de tiempo. Para la reproducción dentro de los 5 minutos, pueden simplemente mantener una ventana deslizante de solicitudes almacenadas en caché. Puede hacer coincidir el hash con el del caché y detectar la reproducción.

  

si es más seguro, ¿debería considerarse un estándar de la industria como OAuth y JWT? ¿En qué medida los marcos de aplicaciones estándar proporcionan soporte en el lado de la validación? etc.

Si está hablando sobre el concepto básico de hashear una solicitud y enviar el hash junto con la solicitud, es algo que ya se está haciendo. Siento que el sistema que Amazon usa aquí está inspirado en el sistema Kerberos, que tiene un mecanismo similar para detectar ataques de repetición y la idea de modificar la solicitud y adjuntarla para garantizar que no se altere en el camino.

    
respondido por el Limit 29.06.2017 - 21:00
fuente

Lea otras preguntas en las etiquetas