qué es un Token y cuál es su objetivo?
Un token es una representación digital de un acceso, identidad o permiso. En desarrollo web y seguridad, es una cadena de caracteres generada por un servidor que sirve como comprobante de autenticación.
¿Cuál es su objetivo principal?
Sustituir credenciales sensibles (como un usuario y contraseña) por una credencial temporal.
El usuario solo envía su usuario y contraseña una vez al hacer login. A cambio recibe un token. En las siguientes peticiones, envía únicamente el token.
Desacoplamiento y escalabilidad: Permite autenticar peticiones en arquitecturas sin estado (stateless), como APIs REST o microservicios, sin necesidad de consultar la base de datos o la sesión en servidor en cada request.
Imaginá que vas a un festival de música:
- Autenticación (Mostrar el DNI/Entrada): Vas a la boletería, mostrás tu documento y pagás.
- Entrega del Token (La pulsera): El personal te valida y te pone una pulsera de plástico.
- Uso del Token: Para entrar al escenario principal, comprar una bebida o ir al sector VIP, no volvés a mostrar tu DNI ni a pagar la entrada; solo mostrás la pulsera.
- Expiración y Seguridad: La pulsera dura solo por ese día. El guardia no necesita llamarte por tu nombre ni buscarte en un padrón: ve la marca de la pulsera, comprueba que no esté rota y te deja pasar.
Un token de software es exactamente esa pulsera digital.
Minimiza la exposición: Tu contraseña viaja por la red una sola vez (al loguearte). Después, solo viaja el token.
Tienen fecha de vencimiento: Si un atacante intercepta un token, su margen de daño es limitado porque el token expira (por ejemplo, a las 2 horas).
Permisos limitados (Scope): Podés emitir un token que solo sirva para leer datos, pero no para eliminar la cuenta.
Revocación: Podés invalidar un token en particular desde el servidor sin necesidad de cambiar tu contraseña real.
que tipo de tokens hay:
- okens de Sesión / Acceso (Access Tokens): Acreditan que ya te autenticaste. Viajan en el encabezado de las peticiones HTTP para autorizar acciones.
- Ejemplos: JWT (JSON Web Token), Opaque Tokens (strings aleatorios que el servidor busca en Redis/DB), Paseto.
- Tokens de Refresco (Refresh Tokens): Tienen una vida útil más larga (días o semanas) y sirven exclusivamente para obtener un nuevo Access Token cuando este expira, sin pedirle al usuario que vuelva a ingresar su clave.
- Tokens de Acceso Personal (PAT – Personal Access Tokens): Claves estáticas generadas manualmente por el usuario para que scripts, bots o herramientas de CLI se conecten a una cuenta.
- Ejemplo: Los tokens de GitHub o GitLab para hacer
git push.
- Ejemplo: Los tokens de GitHub o GitLab para hacer
- Tokens de Un Solo Uso / OTP (One-Time Password): Códigos temporales y efímeros diseñados para una única transacción o verificación.
- Ejemplos: Códigos de 6 dígitos de 2FA (Google Authenticator / TOTP), links para restablecer contraseña o validar email.
- Tokens de Identidad (ID Tokens): Utilizados en protocolos como OpenID Connect (OIDC). Su función no es dar acceso a un recurso, sino informarle a la aplicación cliente quién es el usuario (nombre, email, foto).
- Tokens de Anti-CSRF: Cadenas aleatorias asociadas a la sesión del navegador para validar que los formularios enviados provienen realmente de la interfaz de la aplicación y no de un sitio malicioso (Cross-Site Request Forgery).
2. Según la tecnología o el dominio
- Tokens de Pago (Tokenización financiera): Identificadores aleatorios que reemplazan datos sensibles (como los 16 dígitos de una tarjeta de crédito) para procesar cobros sin almacenar la tarjeta real en la base de datos.
- Ejemplo: Las pasarelas de pago como Stripe o Mercado Pago.
- Tokens en Inteligencia Artificial y NLP: Bloques mínimos de texto (palabras, subpalabras o caracteres) en los que un modelo de lenguaje (LLM) divide un texto para procesarlo.
- Ejemplo: La frase “Hola mundo” puede procesarse como 2 o 3 tokens según el tokenizer.
- Tokens Criptográficos / Blockchain: Representaciones digitales de un activo o utilidad registradas en un contrato inteligente sobre una red distribuida.
- Fungibles (ERC-20): Intercambiables e idénticos entre sí (ej. USDT, UNI).
- No Fungibles / NFT (ERC-721): Únicos e indivisibles, representan propiedad digital o física (ej. arte digital, coleccionables).
- Utility Tokens: Dan acceso a un producto o servicio dentro de un ecosistema específico.
- Tokens de Hardware (Seguridad física): Dispositivos físicos que generan claves o firman accesos mediante contacto o USB.
- Ejemplo: Llaves de seguridad YubiKey o los viejos “tokens bancarios” con pantalla digital.
Criptografía Simétrica vs. Asimétrica
La diferencia fundamental está en cuántas llaves se utilizan para cifrar y descifrar la información.
SIMÉTRICA:
[Texto Plano] ---> 🔑 (Llave Secreta) ---> [Texto Cifrado] ---> 🔑 (Misma Llave) ---> [Texto Plano]
ASIMÉTRICA:
[Texto Plano] ---> 🔓 (Llave Pública) ---> [Texto Cifrado] ---> 🔑 (Llave Privada) ---> [Texto Plano]
Criptografía Simétrica (Una sola llave)
Utiliza la misma llave secreta tanto para cifrar como para descifrar el mensaje.
En criptografía, la “simetría” no se refiere a la forma visual, sino al equilibrio del conocimiento y de la operación entre quienes se comunican, Existe una igualdad perfecta entre ambos lados de la comunicación
- Misma capacidad: Quien puede cifrar, también puede descifrar con exactamente la misma herramienta.
- Mismo conocimiento: Ambas partes comparten la misma y única pieza de información (la llave secreta).
- Espejo operacional: Si miras el proceso desde el emisor o desde el receptor, la operación utiliza la misma clave ejecutada en sentido inverso.
Analogía: Un candado físico tradicional. Si le das a alguien un duplicado exacto de tu llave, ambos tienen exactamente el mismo poder sobre la cerradura. Hay simetría de acceso.
- Ventaja: Es sumamente rápida y eficiente para procesar grandes volúmenes de datos.
- Desventaja: El reto principal es la distribución segura de la llave. Si alguien intercepta la llave durante el envío, puede descifrar toda la comunicación.
- Algoritmos populares: AES (Advanced Encryption Standard), ChaCha20.
- Caso de uso común: Cifrado de discos duros o bases de datos.
asimétrica (o Criptografía de Clave Pública) (Par de llaves):
Existe una desigualdad o falta de simetría en los roles y en la información
Es la tecnología base que usa un par de claves (Privada y Pública):
Llave Pública: Se comparte libremente con cualquiera. Sirve para cifrar mensajes o verificar firmas.
Llave Privada: Se mantiene en secreto absoluto. Sirve para descifrar mensajes cifrados con la pública correspondiente o para firmar datos.
Resuelve el problema de la distribución de llaves. No importa quién obtenga la llave pública, solo el dueño de la llave privada puede descifrar el mensaje.
Cualquier persona en el mundo puede cifrar un mensaje usando tu llave pública, pero solo tú puedes descifrarlo usando tu llave privada
Conocimiento desigual: La llave pública es de dominio general, mientras que la llave privada la conoce una sola persona
- Operación unidireccional: El proceso no es un espejo. La matemática que se usa para transformar el texto plano con la llave pública no es la misma que se usa para revertir el proceso con la llave privada (se basan en funciones matemáticas “de una sola vía”, como la factorización de números primos grandes).
Analogía: Un buzón de correo postal. Cualquiera puede pasar por la calle y meter una carta por la ranura (llave pública / cifrar), pero solo el cartero con la llave del buzón (llave privada / descifrar) puede abrirlo y sacar el contenido. El acceso no es simétrico.
Es computacionalmente pesada y mucho más lenta que la simétrica.
- Algoritmos populares: RSA, ECC (Criptografía de Curva Elíptica).
- Caso de uso común: Conexiones HTTPS (TLS/SSL), firmas digitales, acceso SSH.
Uso A: Firma Digital (Lo que hace JWT)
- Objetivo: Autenticidad e Integridad (demostrar quién lo mandó y que no cambió).
- El mensaje: Es público y visible.
- Operación: Se aplica la clave privada para firmar; la pública para verificar.
Uso B: Cifrado Asimétrico (Encriptación pura)
- Objetivo: Confidencialidad (ocultar la información para que nadie la lea).
- El mensaje: Se vuelve ilegible (basura matemática).
- Operación: Se aplica la clave pública para cifrar; la privada para descifrar.
- Si querés firmar (Caso JWT): El payload es legible por cualquiera (si hacés Base64 decode a un JWT, ves todo su contenido JSON). La firma solo dice “esto no cambió y lo hice yo”.
- Si querés ocultar (Cifrado): Tendrías que usar JWE (JSON Web Encryption), donde se usa la clave pública para que nadie pueda leer el contenido salvo quien posea la clave privada para desencriptarlo.
Por eso, en un JWT tradicional nunca tenés que guardar información sensible como contraseñas o números de tarjeta de crédito en el payload: cualquiera puede leerlo, pero nadie puede truchar la firma.


el verbo cifrar significa estrictamente ocultar/encriptar un mensaje para que nadie lo pueda leer
Acá tenés la tabla completa y unificada con la corrección aplicada:
| Término | ¿Oculta el contenido? | Propósito principal | Uso típico |
| Firma Digital | ❌ No | Garantizar que no se modificó y quién lo creó | JWT, Firmas de PDF, Git commits |
| Cifrado Asimétrico | ✅ Sí | Que solo el destinatario pueda leer el contenido | Enviar claves secretas, SSH inicial |
JWT (JSON Web Token)
se pronuncia “jot”
no encripta ni oculta la información; es un token cuyo objetivo principal es garantizar la autenticidad y la integridad de los datos mediante una firma digital.
El payload de un JWT se codifica en Base64Url, lo cual es solo una codificación de texto y no un cifrado. Cualquier persona que intercepte el token puede decodificarlo y leer su contenido
cifrar/encriptar significa volver el contenido ilegible (garantizar confidencialidad)
Firma Digital (lo que hace JWT): ❌ No oculta el contenido. Su propósito es garantizar que no se modificó y quién lo creó.
Cifrado Asimétrico: ✅ Sí oculta el contenido. Su propósito es que solo el destinatario con la llave privada pueda leerlo
Un JWT estándar no ciframos nada: el mensaje es público y visible. La firma digital que lleva al final sirve para asegurar que nadie alteró los datos en el camino y para confirmar quién lo emitió (garantizar autenticidad e integridad).
es un estándar abierto (RFC 7519) para transmitir información entre partes de forma segura como un objeto JSON.
Lo crucial de un JWT es que está firmado digitalmente. No oculta la información (no está cifrado por defecto), pero garantiza que la información no haya sido alterada.
Firma pero no encripta. Por eso en el post se remarca que nunca se deben guardar datos sensibles (como contraseñas, números de tarjeta o datos personales) en el payload.
JWT no es cifrado asimétrico. Tampoco es cifrado simétrico, La confusión suele darse porque JWT puede usar criptografía asimétrica, pero para firmar, no para cifrar.
Cifrar vs. Firmar (La diferencia clave)
- Cifrar (Encriptar): Toma un texto y lo transforma en un garabato incomprensible para que nadie lo pueda leer sin la clave.
- Firmar: Deja el texto legible para todo el mundo, pero le pega un sello matemático al final para que nadie pueda modificarlo o truchar quién lo envió.
JWT hace esto último: Firma, no cifra.
JWT tradicional / JWS (JSON Web Signature): firma y no encripta
JWE (JSON Web Encryption): si realmente se necesitara ocultar/encriptar el contenido del token, se tendría que usar la especificación JWE, donde los datos sí quedan transformados en basura ilegible salvo para quien posea la clave de descifrado.
Un JWT consta de 3 partes separadas por puntos (.): AAAAA.BBBBB.CCCCC

tanto el Header como el Payload están en Base64Url. Cualquier persona puede copiar un JWT, pegarlo en un decodificador web (o hacerle un decode en la terminal) y leer absolutamente todo lo que hay dentro.
- header: Contiene el algoritmo de firma usado (ej. HS256 para simétrico, RS256 para asimétrico) y el tipo de token (
JWT). Codificado en Base64Url. - Payload: Contiene la información o “claims” (ej.
id_usuario,rol, fecha de expiraciónexp). También codificado en Base64Url. Cualquiera puede leer el contenido del Payload, por lo que nunca deben guardarse contraseñas o datos sensibles aquí. - Signature: Se calcula tomando el Header en Base64, el Payload en Base64, un secreto (o llave privada) y pasándolos por el algoritmo especificado. Sirve para verificar que el token no haya sido modificado por un tercero.
Dónde entra la Criptografía Asimétrica en JWT?
Para calcular la Signature (Firma), el servidor necesita un algoritmo criptográfico. Y aquí es donde tiene dos opciones:
- Opción Simétrica (ej. HS256): El servidor usa una sola clave secreta para firmar el token y para verificar que la firma sea válida.
- Opción Asimétrica (ej. RS256 / ES256): El servidor usa un par de llaves:
- Firma el JWT usando su llave privada.
- Cualquiera (u otros microservicios) puede verificar que la firma sea auténtica usando la llave pública del servidor.
En ambos casos (simétrico o asimétrico), la criptografía solo se usa para calcular la firma, jamás para ocultar los datos del Payload
Si necesitas enviar información confidencial (como una contraseña o número de tarjeta) dentro de un token para que nadie la lea, un JWT común (JWS) no te sirve. Tendrías que usar JWE (JSON Web Encryption), que es una variante que sí aplica cifrado sobre el contenido.

El cliente envía usuario y password al backend.
El backend valida las credenciales y genera un JWT firmado con un secreto interno.
El servidor responde enviando el JWT al cliente.
Para subsiguientes peticiones a rutas protegidas, el cliente envía el JWT en el encabezado: Authorization: Bearer <TOKEN_JWT>
El servidor recibe el JWT, verifica la firma con su secreto y, si es válida, procesa la petición sin necesidad de consultar la base de datos.
