Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
about-hmac — Ejemplo de implementación y explicación de HMAC | Kitploit
Herramientas/GitHubGitHub/password123456/about-hmac
CriptografíaAutenticaciónAprendizaje y EducaciónSeguridad de APIs
GitHubpassword123456/about-hmac

about-hmac

Ejemplo de implementación y explicación de HMAC

Ver Repositorio
24hace 2 añosAún no revisado

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

Acerca de HMAC

made-with-python Python Versions Hits

Un ejemplo de implementación básica de HMAC (Código de autenticación de mensajes basado en hash) usando Flask en Python.

¿Qué es HMAC?!

El código de autenticación de mensajes basado en hash (HMAC) proporciona al servidor y al cliente una clave privada que solo es conocida por ese servidor y ese cliente específicos. El cliente crea un HMAC único, o hash, por solicitud al servidor aplicando hash a los datos de la solicitud con las claves privadas y enviándolo como parte de la solicitud. Lo que hace que HMAC sea más seguro que el Código de Autenticación de Mensajes (MAC) es que la clave y el mensaje se someten a hash en pasos separados.

img

Ejemplo

(1) Solicitud del Cliente al Servidor

  • Cuando un cliente envía una solicitud al servidor, incluye los siguientes encabezados:

  • X-Authorization-Content-HMAC: hash HMAC (URI completa de la solicitud, marca de tiempo Unix actual (UTC) y clave secreta HMAC)

  • X-Authorization-Timestamp: Marca de tiempo Unix actual del cliente (UTC)

root@kitploit:~
(request)
GET /example/users?user=test&institutionID=999&signature=7e745d74b69b7f62e8e2 HTTP/1.1
Host: example.com
X-Authorization-Content-HMAC: 1c73495878ccea24af9dd281a4c883c40a3551ba799d30f4ad7d9afb6a60fbd4
X-Authorization-Timestamp: 1711662980

[ Proceso de Solicitud del Cliente ]

  • El cliente prepara y envía la solicitud al servidor.
  • El servidor valida la solicitud verificando la integridad del HMAC y la validez de la marca de tiempo.
  • Si la validación tiene éxito, el servidor procesa la solicitud; de lo contrario, envía una respuesta de error.

(2) Respuesta del Servidor al Cliente

  • Cuando el servidor responde a una solicitud válida, incluye los siguientes encabezados:

  • X-Response-Content-HMAC: hash HMAC (Cuerpo completo de la respuesta, marca de tiempo Unix actual (UTC) y clave secreta HMAC)

  • X-Response-Content-TimeStamp: Marca de tiempo Unix actual (UTC)

root@kitploit:~
(response)
HTTP/2 200 OK
Date: Fri, 29 Mar 2024 06:50:49 GMT
Content-Type: text/html; charset=utf-8
Content-Length: 52
X-Response-Content-HMAC: 529c33aac3e33bf2a95d534f8b3ac61dee2ed79232d729e571dc669417a1a2ae
X-Response-Content-TimeStamp: 1711663027
Connection: close

{"result": "ok", "users": "test", "sub": 2840345654}

[ Proceso de Respuesta ]

  • El servidor prepara y envía los datos de respuesta al cliente.
  • (Adicional) Si es necesario, el cliente puede verificar la integridad del HMAC de los datos de respuesta.
  • Si la validación falla, el cliente rechaza los datos de respuesta.
root@kitploit:~
Server response HMAC verification successful
--------------
Response timestamp: 2024-03-29T09:25:31
Current time: 2024-03-29T09:25:31
Time difference: 0

Notas Adicionales

  • No hay una regla estricta sobre si usar GET o POST; sin embargo, POST se prefiere comúnmente por razones de seguridad. El uso de solicitudes GET puede hacer que todas las cadenas de consulta se registren en los registros de acceso web.
  • Utilice siempre la marca de tiempo Unix UTC para la información de la marca de tiempo para garantizar la coherencia y evitar problemas relacionados con la zona horaria.
  • El alcance del cálculo de HMAC puede variar. Si bien normalmente implica aplicar hash a todo el cuerpo de la respuesta, también es posible el hash selectivo de datos, especialmente cuando el cuerpo de la respuesta es extenso.
  • La elección del algoritmo HMAC (por ejemplo, Hmac-SHA256, Hmac-SHA512) y la longitud de la clave secreta deben basarse en los requisitos de seguridad y las mejores prácticas.

Prevención de Ataques de Replay

  • El servidor puede almacenar solicitudes procesadas en memoria (por ejemplo, Redis) y descartar solicitudes repetidas dentro de un período de tiempo específico para prevenir ataques de replay.
  • Adicionalmente, el servidor puede mejorar la prevención de ataques de replay comparando el encabezado de marca de tiempo (X-Authorization-Timestamp) enviado por el cliente en el encabezado de la solicitud con la hora actual del servidor. Si la marca de tiempo cae fuera de un cierto período, el servidor puede descartar la solicitud.

Y...

Si encuentras esto útil, por favor da una "estrella"🌟 para apoyar mejoras adicionales.

Descargar herramienta