Ora farò una strana domanda, ma sopporti me. Non riesco a condividere l'intero caso, ma il punto è consentire al possessore di una chiave segreta di creare "stringhe" (utilizzate in altri sistemi). Le stringhe devono essere: non reversibili (= > hash) e nessuno dovrebbe essere in grado di crearle, basandosi su un testo in chiaro noto.
So che suona come un (H) MAC, ma l'obiettivo non è l'autenticazione dei messaggi.
Quindi, per ottenere quel risultato (una stringa non reversibile che solo il proprietario della chiave può generare), è crittografato (AES) -questo-hash una buona opzione in alternativa a HMAC?
Un chiarimento: poiché dovrebbe essere riproducibile, la crittografia AES (in modalità CBC) dovrebbe utilizzare un vettore di inizializzazione costante piuttosto che casuale. Questo è in generale sbagliato, ma poiché il risultato della crittografia verrà immediatamente cancellato, lo svantaggio della costante IV potrebbe essere mitigato.
HMAC è più veloce dell'hash AES + (sulla mia macchina circa 5 volte), ma entrambi sono abbastanza veloci per non essere rilevanti.
Gli HSM supportano sia la crittografia che l'HMAC. AWS KMS non supporta HMAC.
Esistono altri svantaggi o vantaggi dell'hash AES + su HMAC? O c'è un altro modo canonico per raggiungere lo stesso obiettivo - "risultato irreversibile che solo il portatore di chiavi può generare"