Ahora haré una pregunta extraña, pero ten paciencia. No puedo compartir todo el caso de uso, pero el punto es permitir que el titular de una clave secreta cree "cadenas" (utilizadas en otros sistemas). Las cadenas deben ser: no reversibles (= > hash) y nadie más que el titular de la clave debe poder crearlas basándose en un texto plano conocido.
Sé que esto suena como un (H) MAC, pero el objetivo no es la autenticación de mensajes.
Entonces, para lograr ese resultado (una cadena no reversible que solo puede generar el propietario de la clave), ¿es encriptación (AES) -a continuación, hash es una buena opción como alternativa a HMAC?
Una aclaración: como debería ser reproducible, el cifrado AES (en modo CBC) debe usar un vector de inicialización constante, en lugar de aleatorio. En general, esto es incorrecto, pero como el resultado del cifrado se eliminará de inmediato, el inconveniente de la constante IV podría mitigarse.
HMAC es más rápido que AES + hash (en mi máquina alrededor de 5 veces), pero ambos son lo suficientemente rápidos como para que no sean relevantes.
Los HSM admiten tanto el cifrado como el HMAC. AWS KMS no es compatible con HMAC.
¿Existen otros inconvenientes o beneficios del hash de AES + sobre HMAC? ¿O hay otra forma canónica de lograr el mismo objetivo: "resultado irreversible que solo el titular de la clave puede generar"