HAWK (HTTP Authenticated Key-Exchange) es un esquema de autenticación HTTP diseñado para proteger las comunicaciones entre un cliente y un servidor. A diferencia de la autenticación Basic o Digest, HAWK no transmite contraseñas directamente. En su lugar, utiliza una clave compartida secreta para generar un 'MAC' (Message Authentication Code) para cada solicitud HTTP. Este MAC se calcula sobre partes específicas de la solicitud (como el método, la URL, el 'timestamp' y el 'body' de la solicitud) y se incluye en la cabecera 'Authorization'. El servidor realiza el mismo cálculo con la clave compartida y compara el MAC generado localmente con el recibido, autenticando así la solicitud. HAWK también incorpora un 'nonce' y un 'timestamp' para proteger contra ataques de retransmisión ('replay attacks').
HAWK ha sido implementado en diversos sistemas y bibliotecas para asegurar APIs y servicios. Un ejemplo notable es la biblioteca 'hawk' para Node.js, que permite a los desarrolladores integrar fácilmente este esquema de autenticación en sus aplicaciones. También se ha utilizado en microservicios y arquitecturas de API Gateway donde la seguridad de las comunicaciones entre servicios es crítica. Por ejemplo, en entornos donde los servicios necesitan comunicarse de forma segura sin depender de tokens de sesión de corta duración o de la transmisión repetida de credenciales, HAWK proporciona una alternativa robusta. Aunque no es tan omnipresente como OAuth 2.0 o JWT, HAWK es valorado por su simplicidad criptográfica y su enfoque directo en la autenticación de mensajes HTTP.
Para un Arquitecto de Sistemas, HAWK es relevante por varias razones estratégicas. Ofrece una alternativa segura a la autenticación basada en 'bearer tokens' o credenciales directas, especialmente útil para comunicaciones 'server-to-server' o 'client-to-server' donde la gestión de sesiones complejas no es deseable. Los 'trade-offs' incluyen la necesidad de una gestión segura de claves compartidas entre cliente y servidor, lo cual puede ser un desafío en sistemas distribuidos a gran escala. Sin embargo, su resistencia a ataques de retransmisión y la no exposición de credenciales en cada solicitud son ventajas significativas. Al considerar HAWK, un arquitecto debe evaluar la complejidad de la gestión de claves frente a los beneficios de seguridad, y si el modelo de autenticación de mensajes es más adecuado que un modelo de autorización basado en tokens para el caso de uso específico.