0Pricing
Cryptology Academy · Lección

HS256 frente a RS256: JWT simétricos y asimétricos

Elija el algoritmo de firma adecuado para su sistema de autenticación.

HS256 frente a RS256: JWT simétricos y asimétricos es una lección gratuita de Cryptology Academy en CoddyKit. Esta es la lección 2 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Cryptology Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Cryptology Academy incluye 4 lecciones en total.

Familias de algoritmos

La firma de JWT utiliza algoritmos simétricos (HMAC) o asimétricos (RSA, ECDSA). HS256 = HMAC-SHA256. RS256 = RSA-PKCS1v1.5-SHA256. ES256 = ECDSA-P256-SHA256. La elección afecta a la distribución de claves y al modelo de confianza.

HS256: HMAC simétrico

HS256 utiliza una única clave secreta compartida tanto para firmar como para verificar. Tanto el emisor como cada verificador deben poseer el mismo secreto. Es sencillo de implementar, pero requiere distribuir la clave de forma segura a todos los verificadores.

Casos de uso de HS256

HS256 es adecuado cuando el emisor y el verificador son el mismo servicio (por ejemplo, una API monolítica que firma y verifica sus propios tokens). Nunca use HS256 si varios servicios independientes necesitan verificar tokens, ya que todos necesitarían el secreto.

RS256: RSA asimétrico

RS256 utiliza una clave privada para firmar y una clave pública para verificar. Solo el servidor de autenticación conserva la clave privada. Todos los servidores de recursos obtienen la clave pública del endpoint de JWKS y verifican localmente, sin necesidad de compartir secretos.

Casos de uso de RS256

RS256 es ideal para arquitecturas de microservicios: el proveedor de identidad firma los tokens y cada servicio posterior los verifica con la clave pública sin ponerse en contacto con el IDP en cada solicitud. Permite escalar horizontalmente sin el riesgo de distribuir claves.

ES256: alternativa basada en ECDSA

ES256 utiliza ECDSA sobre P-256. El tamaño de la firma es de 64 bytes frente a los 256 bytes de RS256 para una clave de 2048 bits. La verificación es aproximadamente 10 veces más rápida que con RS256. Se prefiere cuando el ancho de banda o la velocidad de verificación son críticos, como en API móviles o IoT.

Rotación de claves

Para RS256/ES256: rote las claves publicando la nueva clave (nuevo kid) en JWKS, firmando los tokens nuevos con la nueva clave, permitiendo un periodo de gracia para que caduquen los tokens antiguos y, después, eliminando la clave antigua. La rotación de HMAC requiere redistribuir el nuevo secreto.

Comparación de rendimiento

Verificación HS256: ~1 µs. Verificación RS256: ~100 µs (2048 bits). Verificación ES256: ~50 µs (P-256). HS256 es el más rápido, pero requiere compartir el secreto. ES256 ofrece el mejor equilibrio entre seguridad y rendimiento para sistemas distribuidos.

Avance del ataque al encabezado alg

Una vulnerabilidad crítica: si el verificador confía ciegamente en el encabezado alg, un atacante puede cambiar alg de RS256 a HS256 y firmar el token con la clave pública del servidor (que es pública) como secreto HMAC. Solución: nunca confíe en el encabezado alg.

Selección de un algoritmo

Decisión: servicio único → HS256. Varios servicios/microservicios → RS256 o ES256. Aplicaciones móviles de gran volumen → ES256. En caso de duda, use ES256 (P-256) o RS256 con claves de al menos 2048 bits. No use RS512 en rutas sensibles al rendimiento.

Bibliotecas y estándares

Use PyJWT (Python), jose (Node.js) o auth0/java-jwt. Fije siempre el algoritmo esperado en la llamada de verificación: jwt.decode(token, secret, algorithms=["HS256"]). Nunca pase algorithms=None ni omita el parámetro.

Comprobación rápida

¿Por qué se prefiere RS256 a HS256 en arquitecturas de microservicios?

Resumen

HS256 es simétrico (secreto compartido); RS256/ES256 son asimétricos (firma privada, verificación pública). Use algoritmos asimétricos para sistemas con varias partes. Siguiente: explotación de vulnerabilidades de JWT.

Preguntas frecuentes

¿La lección «HS256 frente a RS256: JWT simétricos y asimétricos» es gratis?

Sí — el texto completo de «HS256 frente a RS256: JWT simétricos y asimétricos» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Cryptology Academy, actualiza a CoddyKit PRO. El curso de Cryptology Academy incluye 4 lecciones en total.

¿Qué aprenderé en «HS256 frente a RS256: JWT simétricos y asimétricos»?

Elija el algoritmo de firma adecuado para su sistema de autenticación. Practicas Cryptology Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar Cryptology Academy?

No se requiere experiencia previa. Cryptology Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 2 de 4.

¿Cuánto tiempo toma la lección «HS256 frente a RS256: JWT simétricos y asimétricos»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de Cryptology Academy?

Sí. Cada lección de Cryptology Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Anatomía de un JWT: encabezado, payload y firma
  2. HS256 frente a RS256: JWT simétricos y asimétricos
  3. Vulnerabilidades de JWT: alg=none y confusión de claves
  4. Buenas prácticas para implementar JWT de forma segura
← Volver a Cryptology Academy