差距
PASETO 是“JWT 的安全替代品”——没有算法混淆带来的隐患,采用版本化协议和合理的默认设置。在 Node.js 环境中,参考实现是 panva/paseto。它在 2025 年 3 月被归档为只读状态。目前仍在维护的库仅支持 v4 版本,且未实现 PASERK——这是用于序列化、封装和密封密钥的配套标准。
因此,当时没有一个正在维护的 JavaScript 库能同时涵盖 PASETO 和完整的 PASERK 功能。这正是 paseto-kit 所填补的空白。
包含内容
- PASETO v4 — XChaCha20 + BLAKE2b(本地模式),Ed25519(公共模式)
- PASETO v3 — 符合 NIST/FIPS 标准的配置:P-384 / AES-256-CTR / HMAC-SHA384
- 完整 PASERK(每个版本的所有 11 种类型):
local/public/secret序列化,lid/pid/sid密钥标识符,local-wrap/secret-wrap,使用 Argon2id(v4) 和 PBKDF2(v3)进行密码封装,以及seal(X25519 / P-384 ECDH)- 注册声明验证(
exp、nbf、iss、aud、sub),支持时钟容差- 运行时无关 — 为 Node.js、Deno、Bun、浏览器和边缘计算提供单一构建版本。无
node:导入, 无Buffer;仅使用Uint8Array+ WebCrypto 的加密安全伪随机数生成器,基于经过审计的@noble/*原语使用方法
import { generateKeyPair, sign, verify } from 'paseto-kit'; const { secretKey, publicKey } = generateKeyPair(); const token = sign(secretKey, { role: 'admin' }); const { payload } = verify(publicKey, token);需要 NIST 配置吗?所有内容都在
v3命名空间下镜像,具有不同的密钥类型,因此 v4 密钥绝不可能用于 v3 令牌:import { v3 } from 'paseto-kit'; const key = v3.generateLocalKey(); v3.decrypt(key, v3.encrypt(key, { data: 'hello' }));
免责声明:本文内容来自互联网,该文观点不代表本站观点。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请到页面底部单击反馈,一经查实,本站将立刻删除。