¿Qué ventajas tendrían los certificados del lado del cliente sobre la autenticación basada en firmas, como Oauth2 o HMAC para solicitudes HTTP?

2

Actualmente, mi aplicación admite estos dos métodos de autenticación OAuth2 y HMAC Auth.

OAuth2 enlace HMAC enlace

Tenemos una solicitud para admitir certificados del lado del cliente para nuestra infraestructura API. Actualmente no veo ninguna ventaja de seguridad para el uso de certificados del lado del cliente sobre OAuth2 o HMAC.

¿Alguien sabe cuáles serían las ventajas?

Desde mi perspectiva, los certificados del lado del cliente simplemente crean más gastos generales para administrar la API, al requerir que la infraestructura PKI emita y revoque certificados.

    
pregunta Xamus 15.03.2018 - 23:58
fuente

1 respuesta

1

Windows tiene una historia bastante buena para la administración de certificados y claves privadas con el almacén de certificados y el almacén de claves. Muchos (en su mayoría) servicios en la nube tienen una historia bastante buena para el transporte de certificados, por lo que pueden utilizarse para SSL / TLS. No conozco ninguna administración particularmente buena para las claves HMAC (lo más cercano es un sistema de transporte de configuración general).

Los certificados tienen suficientes metadatos para que un sistema / servicio admin / (dev) op pueda ver cuál se está utilizando para ayudar a diagnosticar por qué algo no está funcionando, y se puede hacer en la parte no sensible de los datos ( la clave pública). Una clave HMAC, por otro lado, debe ser revelada en su totalidad y comparada byte por byte (o hexadecimal hexadecimal por nybble hexadecimal, etc.) o tener alguna forma de hashing aplicada para ofuscar el valor pero aún así permitir el valor para ser comparado a través de máquinas.

Estas razones, principalmente, se refieren a la "facilidad de gestión" por parte del cliente. Ser capaz de ser usado correctamente es un aspecto importante para la seguridad, pero es menos obvio. Aún necesita tener un modelo de registro adecuado para los certificados, ya sea utilizando su propia CA para controlar la denominación de los sujetos (que requiere la revocación como un mecanismo de cancelación) o almacenando el certificado (o clave pública) de la misma manera que habría almacenado sus certificados. La clave HMAC (que puede evitar la necesidad de revocación) ... usted solo desea que los certificados apropiados autentiquen a un usuario en particular.

La administración de la clave privada de Windows permite que las aplicaciones utilicen la clave sin poder exportarla, lo que significa que los operadores del sistema que solo tienen acceso a las instancias en ejecución no pueden actuar como el sistema en casa. Una clave HMAC tiene el problema de que "usarlo" y "exfiltrarlo" son los mismos permisos. Este es un problema de seguridad operacional. Una aplicación de cliente demasiado loggy puede fácilmente tener problemas con el registro de la clave HMAC; pero para un certificado se requerirían a) los permisos de clave privada para permitir la exportación del material de clave yb) alguien que esté haciendo todo lo posible para mover el objeto clave a un formato de registro.

Ah, y los certificados de autenticación de clientes también pueden tener sus claves privadas en un HSM, lo que dificulta aún más la exfiltración, y dependiendo de lo que permita su API, algunas de las personas que llaman pueden sentir que necesitan seguridad de HSM.

Por lo tanto: en su mayoría, facilidad de administración, y un par de razones op-sec.

    
respondido por el bartonjs 16.03.2018 - 17:24
fuente

Lea otras preguntas en las etiquetas