Un token es version.purpose.payload con un .footer opcional, por ejemplo v4.public.…. Cada versión fija su criptografía: v3 usa algoritmos del NIST (ECDSA P-384 para los tokens públicos; AES-256-CTR con HMAC-SHA384 para los locales) y v4 usa Ed25519 y XChaCha20 más BLAKE2b-MAC. La codificación previa a la autenticación (PAE, pre-authentication encoding) vincula el encabezado, la carga útil, el pie y las aserciones implícitas opcionales (contexto que se autentica pero no se transmite, como el ID del inquilino o tenant) a lo que se firma o se protege con MAC.
No hay encabezado alg del que abusar ni none; los prefijos de versión y propósito también impiden usar una clave local para tokens públicos. Las claves se serializan con PASERK (k4.public…, k4.local…). Las cargas útiles usan claims registrados al estilo de JWT (exp, iss, aud como ISO 8601 o cadenas simples).
PASETO no es un estándar del IETF (la especificación está en github.com/paseto-standard/paseto-spec), y hay menos bibliotecas, herramientas y proveedores de identidad compatibles que para JWT. Un JWT verificado con un algoritmo fijado, según el RFC 8725, ofrece casi la misma seguridad. El decodificador de PASETO analiza los tokens localmente.