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.