Técnicamente, HMAC es un MAC , no un firma . Algunas personas entienden mal la terminología (en particular, la documentación de Microsoft) y llaman a HMAC una firma, pero las cosas son más claras si usa las palabras correctas.
HMAC, cuando se usa con una función hash segura (por ejemplo, SHA-256, pero SHA-1 también está bien), es resistente a las falsificaciones; es decir, el atacante no puede calcular correctamente un par válido (m, h) donde h es el valor HMAC correcto para el mensaje m , incluso si el atacante tiene acceso a muchos pares (m ', h') (donde todos m ' son distintos de m ). En particular, el atacante no puede adivinar la clave HMAC, ya que obtener la clave HMAC le permitiría crear muchas falsificaciones.
Salts , y PBKDF2, solo tienen sentido si imaginas que podría funcionar una búsqueda exhaustiva de la clave. La salazón y el hashing lento (PBKDF2 hace ambas cosas) son medidas de mitigación para hacer la vida más difícil para el atacante en ese caso. En su escenario, la clave HMAC es "fuerte", es decir, inmune a una búsqueda exhaustiva (por ejemplo, es una secuencia de 128 bits obtenida de una fuente aleatoria criptográficamente fuerte). Por lo tanto, las sales, PBKDF2 u otros elementos rituales no lo harán más seguro. HMAC ya está bien como está.
Tenga en cuenta que, en el caso de las cookies, varios usuarios pueden coludir e intercambiar sus valores de cookies HMACed. Un usuario también podría registrar un valor de cookie y enviarlo nuevamente a usted, incluso si el servidor le envió un valor de cookie más reciente . Dependiendo de su contexto de uso, esto puede o no ser un problema.