Перейти к содержимому
ecdsa.com
JOSE, JWK и COSE

Алгоритмы JOSE: значения alg и enc для JWS и JWE

Идентификаторы алгоритмов JWS и JWE из реестра IANA JOSE, от HS256 и ES256 до ML-DSA и HPKE, с требованиями к реализации и RFC, в которых они определены.

Показано: 67 из 67

Алгоритмы JOSE · 67 записей

Идентификаторы алгоритмов JWS и JWE (alg и enc) и требования к их реализации.

НазваниеОписаниеИспользованиеСсылки
A128CBCA128CBC — идентификатор WebCrypto в JOSE, который может встречаться только в JWK: AES-CBC без аутентификации. Требование к реализации: запрещено.JWKW3C Web Cryptography API
A128CBC-HS256A128CBC-HS256 — алгоритм шифрования содержимого в JOSE (enc в JWE): AES-CBC с HMAC с SHA-256. Требование к реализации: обязательно.encRFC 7518, Section 5.2.3
A128CTRA128CTR — идентификатор WebCrypto в JOSE, который может встречаться только в JWK: AES-CTR без аутентификации. Требование к реализации: запрещено.JWKW3C Web Cryptography API
A128GCMA128GCM — алгоритм шифрования содержимого в JOSE (enc в JWE): AES-GCM. Требование к реализации: рекомендуется.encRFC 7518, Section 5.3
A128GCMKWA128GCMKW — алгоритм управления ключами в JOSE (alg в JWE): обёртывание ключа AES-GCM. Требование к реализации: необязательно.algRFC 7518, Section 4.7
A128KWA128KW — алгоритм управления ключами в JOSE (alg в JWE): обёртывание ключа AES. Требование к реализации: рекомендуется.algRFC 7518, Section 4.4
A192CBCA192CBC — идентификатор WebCrypto в JOSE, который может встречаться только в JWK: AES-CBC без аутентификации. Требование к реализации: запрещено.JWKW3C Web Cryptography API
A192CBC-HS384A192CBC-HS384 — алгоритм шифрования содержимого в JOSE (enc в JWE): AES-CBC с HMAC с SHA-384. Требование к реализации: необязательно.encRFC 7518, Section 5.2.4
A192CTRA192CTR — идентификатор WebCrypto в JOSE, который может встречаться только в JWK: AES-CTR без аутентификации. Требование к реализации: запрещено.JWKW3C Web Cryptography API
A192GCMA192GCM — алгоритм шифрования содержимого в JOSE (enc в JWE): AES-GCM. Требование к реализации: необязательно.encRFC 7518, Section 5.3
A192GCMKWA192GCMKW — алгоритм управления ключами в JOSE (alg в JWE): обёртывание ключа AES-GCM. Требование к реализации: необязательно.algRFC 7518, Section 4.7
A192KWA192KW — алгоритм управления ключами в JOSE (alg в JWE): обёртывание ключа AES. Требование к реализации: необязательно.algRFC 7518, Section 4.4
A256CBCA256CBC — идентификатор WebCrypto в JOSE, который может встречаться только в JWK: AES-CBC без аутентификации. Требование к реализации: запрещено.JWKW3C Web Cryptography API
A256CBC-HS512A256CBC-HS512 — алгоритм шифрования содержимого в JOSE (enc в JWE): AES-CBC с HMAC с SHA-512. Требование к реализации: обязательно.encRFC 7518, Section 5.2.5
A256CTRA256CTR — идентификатор WebCrypto в JOSE, который может встречаться только в JWK: AES-CTR без аутентификации. Требование к реализации: запрещено.JWKW3C Web Cryptography API
A256GCMA256GCM — алгоритм шифрования содержимого в JOSE (enc в JWE): AES-GCM. Требование к реализации: рекомендуется.encRFC 7518, Section 5.3
A256GCMKWA256GCMKW — алгоритм управления ключами в JOSE (alg в JWE): обёртывание ключа AES-GCM. Требование к реализации: необязательно.algRFC 7518, Section 4.7
A256KWA256KW — алгоритм управления ключами в JOSE (alg в JWE): обёртывание ключа AES. Требование к реализации: рекомендуется.algRFC 7518, Section 4.4
dirdir — алгоритм управления ключами в JOSE (alg в JWE): прямое использование общего симметричного ключа. Требование к реализации: рекомендуется.algRFC 7518, Section 4.5
ECDH-ESECDH-ES — алгоритм управления ключами в JOSE (alg в JWE): эфемерно-статический ECDH. Требование к реализации: рекомендуется; вероятно, станет обязательным.algRFC 7518, Section 4.6
ECDH-ES+A128KWECDH-ES+A128KW — алгоритм управления ключами в JOSE (alg в JWE): эфемерно-статический ECDH с последующим обёртыванием ключа AES. Требование к реализации: рекомендуется.algRFC 7518, Section 4.6
ECDH-ES+A192KWECDH-ES+A192KW — алгоритм управления ключами в JOSE (alg в JWE): эфемерно-статический ECDH с последующим обёртыванием ключа AES. Требование к реализации: необязательно.algRFC 7518, Section 4.6
ECDH-ES+A256KWECDH-ES+A256KW — алгоритм управления ключами в JOSE (alg в JWE): эфемерно-статический ECDH с последующим обёртыванием ключа AES. Требование к реализации: рекомендуется.algRFC 7518, Section 4.6
Ed25519Ed25519 — алгоритм подписи или MAC в JOSE (alg в JWS): EdDSA на кривой edwards25519. Требование к реализации: необязательно.edwards25519algRFC 9864, Section 2.2
Ed448Ed448 — алгоритм подписи или MAC в JOSE (alg в JWS): EdDSA на кривой edwards448. Требование к реализации: необязательно.edwards448algRFC 9864, Section 2.2
EdDSAПримечаниеEdDSA — алгоритм подписи или MAC в JOSE (alg в JWS): EdDSA. Требование к реализации: объявлен устаревшим.algRFC 9864, Section 2.2
ES256ПримечаниеES256 — алгоритм подписи или MAC в JOSE (alg в JWS): ECDSA на кривой P-256 с SHA-256. Требование к реализации: рекомендуется; вероятно, станет обязательным.P-256algRFC 7518, Section 3.4
ES256KES256K — алгоритм подписи или MAC в JOSE (alg в JWS): ECDSA на кривой secp256k1 с SHA-256. Требование к реализации: необязательно.secp256k1algRFC 8812, Section 3.2
ES384ES384 — алгоритм подписи или MAC в JOSE (alg в JWS): ECDSA на кривой P-384 с SHA-384. Требование к реализации: необязательно.P-384algRFC 7518, Section 3.4
ES512ES512 — алгоритм подписи или MAC в JOSE (alg в JWS): ECDSA на кривой P-521 с SHA-512. Требование к реализации: необязательно.P-521algRFC 7518, Section 3.4
HPKE-0HPKE-0 — алгоритм управления ключами в JOSE (alg в JWE): гибридное шифрование с открытым ключом (HPKE) на кривой P-256. Требование к реализации: необязательно.P-256algRFC-ietf-jose-hpke-encrypt-22, Section 5.1
HPKE-0-KEHPKE-0-KE — алгоритм управления ключами в JOSE (alg в JWE): гибридное шифрование с открытым ключом (HPKE) на кривой P-256. Требование к реализации: необязательно.P-256algRFC-ietf-jose-hpke-encrypt-22, Section 6.2
HPKE-1HPKE-1 — алгоритм управления ключами в JOSE (alg в JWE): гибридное шифрование с открытым ключом (HPKE) на кривой P-384. Требование к реализации: необязательно.P-384algRFC-ietf-jose-hpke-encrypt-22, Section 5.1
HPKE-1-KEHPKE-1-KE — алгоритм управления ключами в JOSE (alg в JWE): гибридное шифрование с открытым ключом (HPKE) на кривой P-384. Требование к реализации: необязательно.P-384algRFC-ietf-jose-hpke-encrypt-22, Section 6.2
HPKE-2HPKE-2 — алгоритм управления ключами в JOSE (alg в JWE): гибридное шифрование с открытым ключом (HPKE) на кривой P-521. Требование к реализации: необязательно.P-521algRFC-ietf-jose-hpke-encrypt-22, Section 5.1
HPKE-2-KEHPKE-2-KE — алгоритм управления ключами в JOSE (alg в JWE): гибридное шифрование с открытым ключом (HPKE) на кривой P-521. Требование к реализации: необязательно.P-521algRFC-ietf-jose-hpke-encrypt-22, Section 6.2
HPKE-3HPKE-3 — алгоритм управления ключами в JOSE (alg в JWE): гибридное шифрование с открытым ключом (HPKE) на кривой curve25519. Требование к реализации: необязательно.curve25519algRFC-ietf-jose-hpke-encrypt-22, Section 5.1
HPKE-3-KEHPKE-3-KE — алгоритм управления ключами в JOSE (alg в JWE): гибридное шифрование с открытым ключом (HPKE) на кривой curve25519. Требование к реализации: необязательно.curve25519algRFC-ietf-jose-hpke-encrypt-22, Section 6.2
HPKE-4HPKE-4 — алгоритм управления ключами в JOSE (alg в JWE): гибридное шифрование с открытым ключом (HPKE) на кривой curve25519. Требование к реализации: необязательно.curve25519algRFC-ietf-jose-hpke-encrypt-22, Section 5.1
HPKE-5HPKE-5 — алгоритм управления ключами в JOSE (alg в JWE): гибридное шифрование с открытым ключом (HPKE) на кривой curve448. Требование к реализации: необязательно.curve448algRFC-ietf-jose-hpke-encrypt-22, Section 5.1
HPKE-5-KEHPKE-5-KE — алгоритм управления ключами в JOSE (alg в JWE): гибридное шифрование с открытым ключом (HPKE) на кривой curve448. Требование к реализации: необязательно.curve448algRFC-ietf-jose-hpke-encrypt-22, Section 6.2
HPKE-6HPKE-6 — алгоритм управления ключами в JOSE (alg в JWE): гибридное шифрование с открытым ключом (HPKE) на кривой curve448. Требование к реализации: необязательно.curve448algRFC-ietf-jose-hpke-encrypt-22, Section 5.1
HPKE-7HPKE-7 — алгоритм управления ключами в JOSE (alg в JWE): гибридное шифрование с открытым ключом (HPKE) на кривой P-256. Требование к реализации: необязательно.P-256algRFC-ietf-jose-hpke-encrypt-22, Section 5.1
HPKE-7-KEHPKE-7-KE — алгоритм управления ключами в JOSE (alg в JWE): гибридное шифрование с открытым ключом (HPKE) на кривой P-256. Требование к реализации: необязательно.P-256algRFC-ietf-jose-hpke-encrypt-22, Section 6.2
HS1HS1 — идентификатор WebCrypto в JOSE, который может встречаться только в JWK: HMAC с SHA-1. Требование к реализации: запрещено.JWKW3C Web Cryptography API
HS256ПримечаниеHS256 — алгоритм подписи или MAC в JOSE (alg в JWS): HMAC с SHA-256. Требование к реализации: обязательно.algRFC 7518, Section 3.2
HS384HS384 — алгоритм подписи или MAC в JOSE (alg в JWS): HMAC с SHA-384. Требование к реализации: необязательно.algRFC 7518, Section 3.2
HS512HS512 — алгоритм подписи или MAC в JOSE (alg в JWS): HMAC с SHA-512. Требование к реализации: необязательно.algRFC 7518, Section 3.2
ML-DSA-44ML-DSA-44 — алгоритм подписи или MAC в JOSE (alg в JWS): ML-DSA. Требование к реализации: необязательно.algRFC 9964
ML-DSA-65ПримечаниеML-DSA-65 — алгоритм подписи или MAC в JOSE (alg в JWS): ML-DSA. Требование к реализации: необязательно.algRFC 9964
ML-DSA-87ML-DSA-87 — алгоритм подписи или MAC в JOSE (alg в JWS): ML-DSA. Требование к реализации: необязательно.algRFC 9964
noneПримечаниеnone — алгоритм подписи или MAC в JOSE (alg в JWS): вообще без подписи и MAC. Требование к реализации: необязательно.algRFC 7518, Section 3.6
PBES2-HS256+A128KWPBES2-HS256+A128KW — алгоритм управления ключами в JOSE (alg в JWE): шифрование на основе пароля (PBES2) с SHA-256. Требование к реализации: необязательно.algRFC 7518, Section 4.8
PBES2-HS384+A192KWPBES2-HS384+A192KW — алгоритм управления ключами в JOSE (alg в JWE): шифрование на основе пароля (PBES2) с SHA-384. Требование к реализации: необязательно.algRFC 7518, Section 4.8
PBES2-HS512+A256KWPBES2-HS512+A256KW — алгоритм управления ключами в JOSE (alg в JWE): шифрование на основе пароля (PBES2) с SHA-512. Требование к реализации: необязательно.algRFC 7518, Section 4.8
PS256PS256 — алгоритм подписи или MAC в JOSE (alg в JWS): RSASSA-PSS с SHA-256. Требование к реализации: необязательно.algRFC 7518, Section 3.5
PS384PS384 — алгоритм подписи или MAC в JOSE (alg в JWS): RSASSA-PSS с SHA-384. Требование к реализации: необязательно.algRFC 7518, Section 3.5
PS512PS512 — алгоритм подписи или MAC в JOSE (alg в JWS): RSASSA-PSS с SHA-512. Требование к реализации: необязательно.algRFC 7518, Section 3.5
RS1RS1 — идентификатор WebCrypto в JOSE, который может встречаться только в JWK: RSASSA-PKCS1-v1_5 с SHA-1. Требование к реализации: запрещено.JWKW3C Web Cryptography API
RS256ПримечаниеRS256 — алгоритм подписи или MAC в JOSE (alg в JWS): RSASSA-PKCS1-v1_5 с SHA-256. Требование к реализации: рекомендуется.algRFC 7518, Section 3.3
RS384RS384 — алгоритм подписи или MAC в JOSE (alg в JWS): RSASSA-PKCS1-v1_5 с SHA-384. Требование к реализации: необязательно.algRFC 7518, Section 3.3
RS512RS512 — алгоритм подписи или MAC в JOSE (alg в JWS): RSASSA-PKCS1-v1_5 с SHA-512. Требование к реализации: необязательно.algRFC 7518, Section 3.3
RSA-OAEPRSA-OAEP — алгоритм управления ключами в JOSE (alg в JWE): шифрование RSAES-OAEP с SHA-1. Требование к реализации: рекомендуется; вероятно, станет обязательным.algRFC 7518, Section 4.3
RSA-OAEP-256RSA-OAEP-256 — алгоритм управления ключами в JOSE (alg в JWE): шифрование RSAES-OAEP с SHA-256. Требование к реализации: необязательно.algRFC 7518, Section 4.3
RSA-OAEP-384RSA-OAEP-384 — алгоритм управления ключами в JOSE (alg в JWE): шифрование RSAES-OAEP с SHA-384. Требование к реализации: необязательно.algW3C Web Cryptography API
RSA-OAEP-512RSA-OAEP-512 — алгоритм управления ключами в JOSE (alg в JWE): шифрование RSAES-OAEP с SHA-512. Требование к реализации: необязательно.algW3C Web Cryptography API
RSA1_5ПримечаниеRSA1_5 — алгоритм управления ключами в JOSE (alg в JWE): шифрование RSAES-PKCS1-v1_5. Требование к реализации: рекомендуется; вероятно, станет необязательным.algRFC 7518, Section 4.2

Источник: JSON Object Signing and Encryption (JOSE) (IANA), данные получены 2026-10-20. Лицензия на данные: CC0-1.0. JSON Web Signature and Encryption Algorithms

Примечания к отдельным записям

EdDSA

Полиморфный идентификатор EdDSA из RFC 8037; RFC 9864 объявил его устаревшим в пользу Ed25519 и Ed448.

С «EdDSA» кривая определяется ключом (crv: Ed25519 или Ed448), поэтому сторона не может объявить, какую кривую она поддерживает. RFC 9864 регистрирует полностью определённые имена Ed25519 и Ed448 и помечает «EdDSA» как устаревший (Deprecated).

ES256

ECDSA на P-256 с SHA-256 — алгоритм JWS, который чаще всего используют для подписанных JWT с асимметричными ключами.

Подпись JWS с ES256 — это 64-байтовая конкатенация r и s, каждое из которых дополнено до 32 байт (RFC 7518, § 3.4), а не структура DER, которую создают OpenSSL и Java; преобразование между ними — частый источник ошибок «invalid signature», см. конвертер DER ⇄ raw.

RFC 9864 объявляет устаревшим полиморфный идентификатор COSE ES256 (−7) в пользу полностью определённого ESP256 (−9); в JOSE имя ES256 уже фиксирует кривую, поэтому изменение его не затрагивает.

HS256

HMAC с SHA-256, симметричный алгоритм JWS: тот, кто может проверить токен, может и подделать его.

HS256 — единственный алгоритм, который RFC 7518 делает обязательным. Один и тот же секрет и подписывает, и проверяет, поэтому такой алгоритм подходит для одного сервиса, который сам выпускает и проверяет свои токены. Короткий или угадываемый секрет можно подобрать перебором офлайн по любому токену; RFC 7518, § 3.2 требует ключ не короче выхода хеш-функции (256 бит для HS256), и этот ключ должен быть случайным.

ML-DSA-65

ML-DSA-65 (FIPS 204) для JWS, зарегистрирован в RFC 9964 вместе с новым типом ключа AKP.

Постквантовые ключи JWS используют тип ключа Algorithm Key Pair (kty «AKP»): его параметр «pub» содержит открытый ключ ML-DSA в формате raw, а «alg» привязывает ключ к одному набору параметров. Подписи занимают 3 309 байт, поэтому токены вырастают до нескольких килобайт.

none

alg «none» обозначает незащищённый JWS — токен вообще без подписи.

RFC 7518, § 3.6 определяет «none» для контекстов, где целостность обеспечивается другими средствами. Библиотеки, которые позволяют заголовку самого токена выбирать алгоритм, принимали поддельные токены с alg «none» — это самая известная уязвимость JWT (RFC 8725, § 2.1); проверяющие стороны должны отклонять такой алгоритм, если приложение явно не ожидает незащищённых токенов.

RS256

RSASSA-PKCS1-v1_5 с SHA-256 — алгоритм JWS большинства ID-токенов OpenID Connect.

OpenID Connect Core, § 15.1 требует от поставщиков OpenID поддерживать подпись ID-токенов алгоритмом RS256, поэтому большинство ID-токенов и эндпоинтов JWKS используют ключи RSA. Классическая ловушка RS256 — подмена алгоритма: проверяющую сторону, которая принимает HS256 для ключа, предназначенного для RS256, можно заставить использовать открытый ключ как секрет HMAC (RFC 8725, § 2.1). Закрепляйте ожидаемый алгоритм за каждым ключом, как требует RFC 8725, § 3.1.

RSA1_5

RSAES-PKCS1-v1_5 — шифрование ключа для JWE, уязвимое к атакам на оракул дополнения вроде атаки Блейхенбахера.

Если сервер любым способом (сообщением об ошибке, временем ответа) раскрывает, было ли корректным дополнение расшифрованного ключа RSA1_5, злоумышленник может расшифровывать ключи содержимого запрос за запросом. RFC 7518 помечает RSA1_5 как «Recommended-», то есть его статус, вероятно, будет понижен; предпочтительнее RSA-OAEP-256 или ECDH-ES.

Все реестры