user / pass auth vs hmac firmado para REST API

5

Sé que ambos evitan el abuso de las API RESTful. Hmac firmado api es comúnmente utilizado que el otro. Pero creo que usar un par de usuarios / pases para la autorización es más seguridad, aquí está la razón:

  1. Para firmar una API utilizando hmac, se necesita un secreto compartido entre el cliente y el servidor. Así que el servidor DEBE almacenar el secreto en un formato legible por la computadora (reversible). Si el servidor se rompe (no es un evento de pequeña probabilidad), todos los usuarios están en peligro.

  2. Al usar user / pass para autorizar al cliente, el servidor podría guardar la contraseña del cliente con hash (con salt) en la base de datos. Entonces es inútil después de robado. Además de usar tls / ssl para proteger la contraseña durante la transferencia, no hay ningún ataque MITM.

Entonces, la verdad es que la mayoría de las empresas utilizan hmac firmadas por hmac. ¿Podría alguien decirme lo que me he perdido?

    
pregunta user23832 31.03.2013 - 07:44
fuente

1 respuesta

2

Aquí hay algunas cosas en que pensar:

  1. Para aplicaciones móviles: ¿almacenó la contraseña del usuario en el dispositivo? En ese punto usted agrega riesgo en caso de que el dispositivo sea robado. Si utiliza algún tipo de autenticación basada en token, almacena el token y no la contraseña; dado que los usuarios reutilizan las contraseñas, cualquier posibilidad de reducir la posibilidad de exposición es buena.
  2. No llamaría inútiles los hash de contraseña con sal, ya que pueden romperse siempre y cuando se tome la sal. Dependiendo de cómo se realiza el hash, incluso con sal, es probable que un atacante tenga una alta tasa de éxito.
  3. A menos que la aplicación de llamada haya "fijado" el certificado, no asuma la seguridad de los ataques de MiTM. Si bien puede requerir circunstancias inusuales (CA pirateada, certificados de firma que emiten CA, etc.), puede (y ha) ocurrido.

Sin embargo, para encontrar la respuesta correcta, depende de las amenazas específicas que enfrenta un servicio y de los riesgos que se consideran más importantes.

    
respondido por el Adam Caudill 31.03.2013 - 08:07
fuente

Lea otras preguntas en las etiquetas