Pular para o conteúdo
ecdsa.com
JOSE, JWK e COSE

Algoritmos JOSE: valores alg e enc para JWS e JWE

Identificadores de algoritmos JWS e JWE do registro JOSE da IANA, de HS256 e ES256 a ML-DSA e HPKE, com os requisitos de implementação e as RFCs.

Exibindo 67 de 67

Algoritmos JOSE · 67 entradas

Identificadores de algoritmo JWS e JWE (alg e enc) com os requisitos de implementação.

NomeDescriçãoUsoReferências
A128CBCA128CBC é um identificador WebCrypto do JOSE que só pode aparecer em uma JWK: AES-CBC sem autenticação. Requisito de implementação: proibido.JWKW3C Web Cryptography API
A128CBC-HS256A128CBC-HS256 é um algoritmo de criptografia de conteúdo do JOSE (enc em um JWE): AES-CBC com HMAC com SHA-256. Requisito de implementação: obrigatório.encRFC 7518, Section 5.2.3
A128CTRA128CTR é um identificador WebCrypto do JOSE que só pode aparecer em uma JWK: AES-CTR sem autenticação. Requisito de implementação: proibido.JWKW3C Web Cryptography API
A128GCMA128GCM é um algoritmo de criptografia de conteúdo do JOSE (enc em um JWE): AES-GCM. Requisito de implementação: recomendado.encRFC 7518, Section 5.3
A128GCMKWA128GCMKW é um algoritmo de gerenciamento de chaves do JOSE (alg em um JWE): AES-GCM key wrap. Requisito de implementação: opcional.algRFC 7518, Section 4.7
A128KWA128KW é um algoritmo de gerenciamento de chaves do JOSE (alg em um JWE): AES key wrap. Requisito de implementação: recomendado.algRFC 7518, Section 4.4
A192CBCA192CBC é um identificador WebCrypto do JOSE que só pode aparecer em uma JWK: AES-CBC sem autenticação. Requisito de implementação: proibido.JWKW3C Web Cryptography API
A192CBC-HS384A192CBC-HS384 é um algoritmo de criptografia de conteúdo do JOSE (enc em um JWE): AES-CBC com HMAC com SHA-384. Requisito de implementação: opcional.encRFC 7518, Section 5.2.4
A192CTRA192CTR é um identificador WebCrypto do JOSE que só pode aparecer em uma JWK: AES-CTR sem autenticação. Requisito de implementação: proibido.JWKW3C Web Cryptography API
A192GCMA192GCM é um algoritmo de criptografia de conteúdo do JOSE (enc em um JWE): AES-GCM. Requisito de implementação: opcional.encRFC 7518, Section 5.3
A192GCMKWA192GCMKW é um algoritmo de gerenciamento de chaves do JOSE (alg em um JWE): AES-GCM key wrap. Requisito de implementação: opcional.algRFC 7518, Section 4.7
A192KWA192KW é um algoritmo de gerenciamento de chaves do JOSE (alg em um JWE): AES key wrap. Requisito de implementação: opcional.algRFC 7518, Section 4.4
A256CBCA256CBC é um identificador WebCrypto do JOSE que só pode aparecer em uma JWK: AES-CBC sem autenticação. Requisito de implementação: proibido.JWKW3C Web Cryptography API
A256CBC-HS512A256CBC-HS512 é um algoritmo de criptografia de conteúdo do JOSE (enc em um JWE): AES-CBC com HMAC com SHA-512. Requisito de implementação: obrigatório.encRFC 7518, Section 5.2.5
A256CTRA256CTR é um identificador WebCrypto do JOSE que só pode aparecer em uma JWK: AES-CTR sem autenticação. Requisito de implementação: proibido.JWKW3C Web Cryptography API
A256GCMA256GCM é um algoritmo de criptografia de conteúdo do JOSE (enc em um JWE): AES-GCM. Requisito de implementação: recomendado.encRFC 7518, Section 5.3
A256GCMKWA256GCMKW é um algoritmo de gerenciamento de chaves do JOSE (alg em um JWE): AES-GCM key wrap. Requisito de implementação: opcional.algRFC 7518, Section 4.7
A256KWA256KW é um algoritmo de gerenciamento de chaves do JOSE (alg em um JWE): AES key wrap. Requisito de implementação: recomendado.algRFC 7518, Section 4.4
dirdir é um algoritmo de gerenciamento de chaves do JOSE (alg em um JWE): uso direto de uma chave simétrica compartilhada. Requisito de implementação: recomendado.algRFC 7518, Section 4.5
ECDH-ESECDH-ES é um algoritmo de gerenciamento de chaves do JOSE (alg em um JWE): ECDH efêmero-estático. Requisito de implementação: recomendado, provavelmente se tornará obrigatório.algRFC 7518, Section 4.6
ECDH-ES+A128KWECDH-ES+A128KW é um algoritmo de gerenciamento de chaves do JOSE (alg em um JWE): ECDH efêmero-estático seguido de AES key wrap. Requisito de implementação: recomendado.algRFC 7518, Section 4.6
ECDH-ES+A192KWECDH-ES+A192KW é um algoritmo de gerenciamento de chaves do JOSE (alg em um JWE): ECDH efêmero-estático seguido de AES key wrap. Requisito de implementação: opcional.algRFC 7518, Section 4.6
ECDH-ES+A256KWECDH-ES+A256KW é um algoritmo de gerenciamento de chaves do JOSE (alg em um JWE): ECDH efêmero-estático seguido de AES key wrap. Requisito de implementação: recomendado.algRFC 7518, Section 4.6
Ed25519Ed25519 é um algoritmo de assinatura ou MAC do JOSE (alg em um JWS): EdDSA na curva edwards25519. Requisito de implementação: opcional.edwards25519algRFC 9864, Section 2.2
Ed448Ed448 é um algoritmo de assinatura ou MAC do JOSE (alg em um JWS): EdDSA na curva edwards448. Requisito de implementação: opcional.edwards448algRFC 9864, Section 2.2
EdDSANotaEdDSA é um algoritmo de assinatura ou MAC do JOSE (alg em um JWS): EdDSA. Requisito de implementação: descontinuado.algRFC 9864, Section 2.2
ES256NotaES256 é um algoritmo de assinatura ou MAC do JOSE (alg em um JWS): ECDSA na curva P-256 com SHA-256. Requisito de implementação: recomendado, provavelmente se tornará obrigatório.P-256algRFC 7518, Section 3.4
ES256KES256K é um algoritmo de assinatura ou MAC do JOSE (alg em um JWS): ECDSA na curva secp256k1 com SHA-256. Requisito de implementação: opcional.secp256k1algRFC 8812, Section 3.2
ES384ES384 é um algoritmo de assinatura ou MAC do JOSE (alg em um JWS): ECDSA na curva P-384 com SHA-384. Requisito de implementação: opcional.P-384algRFC 7518, Section 3.4
ES512ES512 é um algoritmo de assinatura ou MAC do JOSE (alg em um JWS): ECDSA na curva P-521 com SHA-512. Requisito de implementação: opcional.P-521algRFC 7518, Section 3.4
HPKE-0HPKE-0 é um algoritmo de gerenciamento de chaves do JOSE (alg em um JWE): criptografia híbrida de chave pública (HPKE) na curva P-256. Requisito de implementação: opcional.P-256algRFC-ietf-jose-hpke-encrypt-22, Section 5.1
HPKE-0-KEHPKE-0-KE é um algoritmo de gerenciamento de chaves do JOSE (alg em um JWE): criptografia híbrida de chave pública (HPKE) na curva P-256. Requisito de implementação: opcional.P-256algRFC-ietf-jose-hpke-encrypt-22, Section 6.2
HPKE-1HPKE-1 é um algoritmo de gerenciamento de chaves do JOSE (alg em um JWE): criptografia híbrida de chave pública (HPKE) na curva P-384. Requisito de implementação: opcional.P-384algRFC-ietf-jose-hpke-encrypt-22, Section 5.1
HPKE-1-KEHPKE-1-KE é um algoritmo de gerenciamento de chaves do JOSE (alg em um JWE): criptografia híbrida de chave pública (HPKE) na curva P-384. Requisito de implementação: opcional.P-384algRFC-ietf-jose-hpke-encrypt-22, Section 6.2
HPKE-2HPKE-2 é um algoritmo de gerenciamento de chaves do JOSE (alg em um JWE): criptografia híbrida de chave pública (HPKE) na curva P-521. Requisito de implementação: opcional.P-521algRFC-ietf-jose-hpke-encrypt-22, Section 5.1
HPKE-2-KEHPKE-2-KE é um algoritmo de gerenciamento de chaves do JOSE (alg em um JWE): criptografia híbrida de chave pública (HPKE) na curva P-521. Requisito de implementação: opcional.P-521algRFC-ietf-jose-hpke-encrypt-22, Section 6.2
HPKE-3HPKE-3 é um algoritmo de gerenciamento de chaves do JOSE (alg em um JWE): criptografia híbrida de chave pública (HPKE) na curva curve25519. Requisito de implementação: opcional.curve25519algRFC-ietf-jose-hpke-encrypt-22, Section 5.1
HPKE-3-KEHPKE-3-KE é um algoritmo de gerenciamento de chaves do JOSE (alg em um JWE): criptografia híbrida de chave pública (HPKE) na curva curve25519. Requisito de implementação: opcional.curve25519algRFC-ietf-jose-hpke-encrypt-22, Section 6.2
HPKE-4HPKE-4 é um algoritmo de gerenciamento de chaves do JOSE (alg em um JWE): criptografia híbrida de chave pública (HPKE) na curva curve25519. Requisito de implementação: opcional.curve25519algRFC-ietf-jose-hpke-encrypt-22, Section 5.1
HPKE-5HPKE-5 é um algoritmo de gerenciamento de chaves do JOSE (alg em um JWE): criptografia híbrida de chave pública (HPKE) na curva curve448. Requisito de implementação: opcional.curve448algRFC-ietf-jose-hpke-encrypt-22, Section 5.1
HPKE-5-KEHPKE-5-KE é um algoritmo de gerenciamento de chaves do JOSE (alg em um JWE): criptografia híbrida de chave pública (HPKE) na curva curve448. Requisito de implementação: opcional.curve448algRFC-ietf-jose-hpke-encrypt-22, Section 6.2
HPKE-6HPKE-6 é um algoritmo de gerenciamento de chaves do JOSE (alg em um JWE): criptografia híbrida de chave pública (HPKE) na curva curve448. Requisito de implementação: opcional.curve448algRFC-ietf-jose-hpke-encrypt-22, Section 5.1
HPKE-7HPKE-7 é um algoritmo de gerenciamento de chaves do JOSE (alg em um JWE): criptografia híbrida de chave pública (HPKE) na curva P-256. Requisito de implementação: opcional.P-256algRFC-ietf-jose-hpke-encrypt-22, Section 5.1
HPKE-7-KEHPKE-7-KE é um algoritmo de gerenciamento de chaves do JOSE (alg em um JWE): criptografia híbrida de chave pública (HPKE) na curva P-256. Requisito de implementação: opcional.P-256algRFC-ietf-jose-hpke-encrypt-22, Section 6.2
HS1HS1 é um identificador WebCrypto do JOSE que só pode aparecer em uma JWK: HMAC com SHA-1. Requisito de implementação: proibido.JWKW3C Web Cryptography API
HS256NotaHS256 é um algoritmo de assinatura ou MAC do JOSE (alg em um JWS): HMAC com SHA-256. Requisito de implementação: obrigatório.algRFC 7518, Section 3.2
HS384HS384 é um algoritmo de assinatura ou MAC do JOSE (alg em um JWS): HMAC com SHA-384. Requisito de implementação: opcional.algRFC 7518, Section 3.2
HS512HS512 é um algoritmo de assinatura ou MAC do JOSE (alg em um JWS): HMAC com SHA-512. Requisito de implementação: opcional.algRFC 7518, Section 3.2
ML-DSA-44ML-DSA-44 é um algoritmo de assinatura ou MAC do JOSE (alg em um JWS): ML-DSA. Requisito de implementação: opcional.algRFC 9964
ML-DSA-65NotaML-DSA-65 é um algoritmo de assinatura ou MAC do JOSE (alg em um JWS): ML-DSA. Requisito de implementação: opcional.algRFC 9964
ML-DSA-87ML-DSA-87 é um algoritmo de assinatura ou MAC do JOSE (alg em um JWS): ML-DSA. Requisito de implementação: opcional.algRFC 9964
noneNotanone é um algoritmo de assinatura ou MAC do JOSE (alg em um JWS): nenhuma assinatura nem MAC. Requisito de implementação: opcional.algRFC 7518, Section 3.6
PBES2-HS256+A128KWPBES2-HS256+A128KW é um algoritmo de gerenciamento de chaves do JOSE (alg em um JWE): criptografia baseada em senha (PBES2) com SHA-256. Requisito de implementação: opcional.algRFC 7518, Section 4.8
PBES2-HS384+A192KWPBES2-HS384+A192KW é um algoritmo de gerenciamento de chaves do JOSE (alg em um JWE): criptografia baseada em senha (PBES2) com SHA-384. Requisito de implementação: opcional.algRFC 7518, Section 4.8
PBES2-HS512+A256KWPBES2-HS512+A256KW é um algoritmo de gerenciamento de chaves do JOSE (alg em um JWE): criptografia baseada em senha (PBES2) com SHA-512. Requisito de implementação: opcional.algRFC 7518, Section 4.8
PS256PS256 é um algoritmo de assinatura ou MAC do JOSE (alg em um JWS): RSASSA-PSS com SHA-256. Requisito de implementação: opcional.algRFC 7518, Section 3.5
PS384PS384 é um algoritmo de assinatura ou MAC do JOSE (alg em um JWS): RSASSA-PSS com SHA-384. Requisito de implementação: opcional.algRFC 7518, Section 3.5
PS512PS512 é um algoritmo de assinatura ou MAC do JOSE (alg em um JWS): RSASSA-PSS com SHA-512. Requisito de implementação: opcional.algRFC 7518, Section 3.5
RS1RS1 é um identificador WebCrypto do JOSE que só pode aparecer em uma JWK: RSASSA-PKCS1-v1_5 com SHA-1. Requisito de implementação: proibido.JWKW3C Web Cryptography API
RS256NotaRS256 é um algoritmo de assinatura ou MAC do JOSE (alg em um JWS): RSASSA-PKCS1-v1_5 com SHA-256. Requisito de implementação: recomendado.algRFC 7518, Section 3.3
RS384RS384 é um algoritmo de assinatura ou MAC do JOSE (alg em um JWS): RSASSA-PKCS1-v1_5 com SHA-384. Requisito de implementação: opcional.algRFC 7518, Section 3.3
RS512RS512 é um algoritmo de assinatura ou MAC do JOSE (alg em um JWS): RSASSA-PKCS1-v1_5 com SHA-512. Requisito de implementação: opcional.algRFC 7518, Section 3.3
RSA-OAEPRSA-OAEP é um algoritmo de gerenciamento de chaves do JOSE (alg em um JWE): criptografia RSAES-OAEP com SHA-1. Requisito de implementação: recomendado, provavelmente se tornará obrigatório.algRFC 7518, Section 4.3
RSA-OAEP-256RSA-OAEP-256 é um algoritmo de gerenciamento de chaves do JOSE (alg em um JWE): criptografia RSAES-OAEP com SHA-256. Requisito de implementação: opcional.algRFC 7518, Section 4.3
RSA-OAEP-384RSA-OAEP-384 é um algoritmo de gerenciamento de chaves do JOSE (alg em um JWE): criptografia RSAES-OAEP com SHA-384. Requisito de implementação: opcional.algW3C Web Cryptography API
RSA-OAEP-512RSA-OAEP-512 é um algoritmo de gerenciamento de chaves do JOSE (alg em um JWE): criptografia RSAES-OAEP com SHA-512. Requisito de implementação: opcional.algW3C Web Cryptography API
RSA1_5NotaRSA1_5 é um algoritmo de gerenciamento de chaves do JOSE (alg em um JWE): criptografia RSAES-PKCS1-v1_5. Requisito de implementação: recomendado, provavelmente se tornará opcional.algRFC 7518, Section 4.2

Fonte: JSON Object Signing and Encryption (JOSE) (IANA), consultada em 2026-10-20. Licença dos dados: CC0-1.0. JSON Web Signature and Encryption Algorithms

Observações sobre entradas relevantes

EdDSA

O identificador polimórfico EdDSA da RFC 8037, descontinuado pela RFC 9864 em favor de Ed25519 e Ed448.

Com “EdDSA”, a curva vem da chave (crv: Ed25519 ou Ed448), então uma parte não consegue anunciar qual curva aceita. A RFC 9864 registra os nomes totalmente especificados Ed25519 e Ed448 e marca “EdDSA” como descontinuado (Deprecated).

ES256

ECDSA na P-256 com SHA-256, o algoritmo JWS mais usado em JWTs assinados com chaves assimétricas.

Uma assinatura JWS com ES256 é a concatenação de 64 bytes de r e s, cada um preenchido até 32 bytes (RFC 7518 §3.4), e não a estrutura DER que o OpenSSL e o Java produzem; a conversão entre as duas é uma fonte comum de erros “invalid signature” — veja o conversor DER ⇄ bruto.

A RFC 9864 descontinua o identificador COSE polimórfico ES256 (−7) em favor do ESP256 (−9), totalmente especificado; no JOSE, o nome ES256 já fixa a curva, então ele não é afetado.

HS256

HMAC com SHA-256, um algoritmo JWS simétrico: quem consegue verificar um token também consegue forjar um.

O HS256 é o único algoritmo que a RFC 7518 torna obrigatório. Como o mesmo segredo assina e verifica, ele serve para um único serviço que emite e verifica os próprios tokens. Um segredo curto ou fácil de adivinhar pode ser descoberto por força bruta, offline, a partir de qualquer token; a RFC 7518 §3.2 exige uma chave pelo menos do tamanho da saída do hash — 256 bits para o HS256 — e ela precisa ser aleatória.

ML-DSA-65

ML-DSA-65 (FIPS 204) para JWS, registrado pela RFC 9964 junto com o novo tipo de chave AKP.

As chaves JWS pós-quânticas usam o tipo de chave Algorithm Key Pair (par de chaves de algoritmo, kty “AKP”), cujo membro “pub” contém a chave pública ML-DSA bruta e cujo “alg” a vincula a um único conjunto de parâmetros. As assinaturas têm 3.309 bytes, então os tokens passam a ter vários kilobytes.

none

O alg “none” identifica um JWS não protegido — um token sem nenhuma assinatura.

A RFC 7518 §3.6 define “none” para contextos em que a integridade é garantida por outros meios. Bibliotecas que deixam o próprio cabeçalho do token escolher o algoritmo já aceitaram tokens forjados com alg “none”, a vulnerabilidade de JWT mais conhecida (RFC 8725 §2.1); os verificadores precisam rejeitá-lo, a menos que a aplicação espere explicitamente tokens não protegidos.

RS256

RSASSA-PKCS1-v1_5 com SHA-256, o algoritmo JWS da maioria dos tokens de ID do OpenID Connect.

O OpenID Connect Core §15.1 exige que os provedores ofereçam suporte à assinatura de tokens de ID com RS256, e é por isso que a maioria dos tokens de ID e dos endpoints JWKS usa chaves RSA. A armadilha clássica dele é a confusão de algoritmo: um verificador que aceita HS256 para uma chave destinada ao RS256 pode ser induzido a usar a chave pública como segredo HMAC (RFC 8725 §2.1). Fixe o algoritmo esperado para cada chave, como exige a RFC 8725 §3.1.

RSA1_5

Criptografia de chave RSAES-PKCS1-v1_5 para JWE, exposta a ataques de padding oracle no estilo Bleichenbacher.

Um servidor que revela de qualquer forma — por uma mensagem de erro, pelo tempo de resposta — se o padding de uma chave RSA1_5 descriptografada era válido permite que um atacante descriptografe chaves de conteúdo uma consulta por vez. A RFC 7518 classifica o RSA1_5 como “Recommended-” (recomendado, mas provavelmente será rebaixado); prefira RSA-OAEP-256 ou ECDH-ES.

Todos os registros