PASETO
- title
- PASETO
- type
- concept
- summary
- Platform-Agnostic Security Tokens - строгая альтернатива JWT без выбора алгоритмов и типичных ловушек JOSE
- tags
- authentication, security, cryptography
- sources
- samsch-jwt-auth-gist
- created
- 2026-04-25
- updated
- 2026-04-25
- lang
- ru
- translation_of
- paseto
- source_updated
- 2026-04-25
- translated
- 2026-09-01
- translator
- lllm/antigravity/gemini-3.7-flash-medium
Platform-Agnostic Security Tokens, разработанные Скоттом Арсишевски (Scott Arciszewski, Paragon Initiative) как прямой ответ на проблемы в архитектуре JWT и семейства JOSE в целом. Спецификация опубликована на paseto.io. PASETO - это рекомендация, на которую ссылаются gist samsch и похожие критические разборы везде, где действительно нужен короткоживущий подписанный токен: разумная замена JWT для тех случаев, где подписанные токены действительно к месту.
PASETO - это не замена механизму управления сессиями. Он не отменяет базового аргумента: для поддержания сессий пользователей в браузере нужно использовать сессии на cookie и избегать JWT в качестве сессионных токенов. PASETO - инструмент для оставшихся сценариев с временем жизни порядка пяти минут: транспорт в SSO, ссылки для сброса пароля, ссылки подтверждения почты, capability-токены, межсервисная аутентификация.
Что не так с JWT и как это исправляет PASETO
Архитектура PASETO построена как список решений, принятых в противовес JWT:
- Никакого поля
alg, никакого согласования алгоритмов. Идентификатором служат версия и назначение (purpose) токена. Нельзя попросить проверяющую сторону использовать более слабый алгоритм, нельзя перепутать симметричный ключ с асимметричным (атака key confusion в JOSE), и нет никакогоalg: none. - Версионированные криптографические наборы. Каждая версия PASETO жёстко закрепляет конкретные алгоритмы. Актуальны v3 и v4: v3 для наборов NIST (P-384 ECDSA, AES-CTR + HMAC), v4 для современных не-NIST (Ed25519, XChaCha20). Здесь нет выбора алгоритма на уровне отдельного токена, в котором можно ошибиться.
- Ровно два назначения.
local(симметричное шифрование) иpublic(асимметричная подпись). Всё. Матрица вариантов JOSE из JWS x JWE x алгоритмы сворачивается в четыре чётко определённые комбинации на две версии. - Аутентифицированное шифрование по умолчанию для симметричного случая. PASETO
v4.localиспользует XChaCha20-Poly1305. В JWE сделать это с ошибкой можно множеством способов. - Footer'ы и неявные утверждения (implicit assertions) для привязки токенов к конкретному контексту (аудитория, издатель, идентификатор ключа), при этом сами эти значения не попадают в изменяемый набор claims.
Как это выглядит
Внешне токены PASETO похожи на JWT - сегменты в base64url, разделённые точками, - но версия и назначение закодированы прямо в начале:
v4.public.eyJkYXRhIjoidGhpcyBpcyBhIHNpZ25lZCBtZXNzYWdlIn0.<sig>
Первые два сегмента (v4.public) - это версия и назначение; всё остальное однозначно следует из этого выбора. Проверяющая сторона не считывает подсказку об алгоритме из токена; она точно знает, какой алгоритм соответствует v4.public, и откажется проверять токен любым другим.
Когда стоит выбрать PASETO
- Передача данных в системах SSO - короткоживущие bearer-токены, передающие статус входа с одного хоста или сервиса на другой.
- Токены сброса пароля, magic link'ов и подтверждения email.
- Подписанные capability-токены (ссылки на скачивание, токены действий со встроенным сроком действия).
- Межсервисная аутентификация в микросервисной архитектуре (альтернатива mTLS или JWT).
Для всех этих случаев срок жизни порядка пяти минут вполне подходит, а польза от отсутствия граблей с выбором алгоритма перевешивает небольшое неудобство от использования менее известной спецификации.
Когда PASETO выбирать не стоит
Для управления сессиями в браузере используйте cookie-session-auth. PASETO не решает проблему несоответствия времени жизни и проблему того, что "stateless - это иллюзия", из-за которых не стоит использовать jwt-for-sessions - эти свойства присущи самой идее bearer-токенов в долгоживущих сессиях, какой бы формат подписанных токенов для них ни был выбран.
Связанные страницы
- jwt-for-sessions - антипаттерн, который PASETO не исправляет; для сессий всё ещё нужны cookie
- cookie-session-auth - подходящий инструмент для сессий в браузере
- samsch-jwt-auth-gist - короткий gist, рекомендующий PASETO для оставшихся сценариев с короткоживущими токенами