autenticación basada en hash API

0

Estoy revisando la documentación de la API de un posible proveedor.

Para obtener acceso a las partes útiles de la API, debemos enviar una solicitud GET o POST a un punto final específico que pasa dos parámetros: el nombre de nuestra organización y el "hash de clave pública". Este punto final devolverá un token que usaremos durante el resto de nuestra sesión.

La descripción del "hash de clave pública" es que tomamos una clave pública (suministrada de antemano por el proveedor), agregamos la fecha UTC actual y luego realizamos un hash MD5 del resultado. Su ejemplo es:

Public Key: a8db14aef3810a92e7c9af9f8782e1f0
Current UTC Date: 2013-02-28
Result string: a8db14aef3810a92e7c9af9f8782e1f02013-02-28
MD5 hash: efdb500ca0a4e107aea100554456ea85

No he encontrado un mecanismo de autenticación como este antes. Me siento "enrollado a mano", y el uso de MD5 también está haciendo que los pelos de mi nariz se contraigan. ¿Realmente quiero escribir un nuevo código en 2017 que use MD5?

Pero antes de realmente profundizar en las cosas, ¿es esto realmente un mecanismo de autenticación muy conocido y usado en el que no he podido encontrar documentación? Si es así, ¿todavía se considera seguro?

(La búsqueda en el valor de la clave API en el ejemplo no produce resultados, por lo que al menos han dado como resultado un ejemplo único por alguna razón. La búsqueda en API authentication md5 tampoco encontró resultados prometedores)

    
pregunta Damien_The_Unbeliever 07.03.2017 - 15:18
fuente

1 respuesta

2

EDIT : probablemente esté basado en DIGEST-MD5 o similar - Wikipedia Actualmente afirma que aún es seguro, pero hay una "cita requerida" en un lugar crucial. El uso de MD5 generalmente es una mala idea .

La intención del paso de hash es proteger contra la pérdida accidental del token / contraseña. Al calcular el tiempo, básicamente está derivando un token de vida más corta y enviándolo en lugar del original, por lo que si el token derivado se filtrara, el original aún sería seguro (asumiendo la seguridad de MD5, así que ... .).

A través de HTTPS, este esquema no ofrece mucha más protección que un token de OAuth Bearer. No es más peor que un token de OAuth Bearer de longitud equivalente, pero el hecho de que hayan usado este esquema (al igual que llamar a su token secreto una "clave pública") hace razonable suponer que no están tan al tanto de la seguridad, y eso probablemente se reflejará en otra parte de su negocio (por ejemplo, almacenando de forma segura los datos que les envía).

Si está enviando esto a través de HTTP simple, entonces es mejor que simplemente usar el token real, pero tiene otros problemas, porque necesita HTTPS para evitar MITM (porque un token de portador no ayuda).

    
respondido por el cloudfeet 07.03.2017 - 17:50
fuente

Lea otras preguntas en las etiquetas