SD-JWT VC vs mdoc (ISO/IEC 18013-5): comparação dos formatos da EUDI Wallet
SD-JWT VC vs mdoc (ISO/IEC 18013-5) para programadores: divulgação seletiva, key binding, OpenID4VP e ISO/IEC 18013-7, o que o Regulamento de Execução (UE) 2026/1731 exige para o PID e de que formato precisa um verificador.

Em resumo
SD-JWT VC e mdoc (ISO/IEC 18013-5) são os dois formatos de credencial que qualquer carteira europeia de identidade digital (EUDI Wallet) tem de suportar. O SD-JWT VC é JSON e foi concebido para utilização remota. O mdoc é CBOR binário e é o único que também funciona em proximidade.[1]
- Ambos ocultam e revelam atributos com a mesma ideia: hashes com salt assinados pelo emissor.[1]
- Desde o Regulamento de Execução (UE) 2026/1731, os dados de identificação pessoal são emitidos em ambos.[2]
- Um verificador remoto pode ler qualquer um deles através do OpenID4VP. Um leitor de proximidade precisa de mdoc.[1]
Um SD-JWT VC é uma credencial verificável empacotada como um JSON Web Token assinado, cujas declarações podem ser divulgadas uma a uma. Um mdoc é um documento móvel no formato da ISO/IEC 18013-5, a norma escrita inicialmente para cartas de condução móveis. O Architecture and Reference Framework (ARF) da EUDI Wallet indica ambos como obrigatórios para as carteiras. Indica também um terceiro formato, o W3C Verifiable Credentials Data Model 2.0, como opcional e "destinado apenas a EAAs não qualificados".[1]
Este guia compara os dois formatos para programadores que desenvolvem um verificador. Baseia-se no ARF v3.0.0, no texto do OpenID for Verifiable Presentations (OpenID4VP) 1.0 e no Jornal Oficial. PID significa dados de identificação pessoal.
O que é um SD-JWT VC
O ARF descreve as "SD-JWT-based Verifiable Credentials" como um formato de dados e um conjunto de regras de processamento para exprimir credenciais verificáveis, em que SD-JWT "significa 'Selectively Disclosable JSON Web Token'".[1] Abrange a codificação JSON, um mecanismo de prova com divulgação seletiva e uma vinculação opcional ao dispositivo.[1]
No OpenID4VP, o identificador de formato é dc+sd-jwt e uma consulta indica o tipo de credencial através de vct_values.[4] Segue-se o exemplo de payload emitido da especificação, reduzido a dois dos seus oito digests:[4]
{ "_sd": [ "jsu9yVulwQQlhFlM_3JlzMaSFzglhQG0DpfayQwLUK4", "TGf4oLbgwd5JQaHyKVQZU9UdGE0w5rtDsrZzfUaomLo" ], "vct": "https://credentials.example.com/identity_credential", "_sd_alg": "sha-256", "cnf": { "jwk": { "kty": "EC", "crv": "P-256" } } }
Nota
O SD-JWT VC deixa muitas opções em aberto. O ARF afirma que o High Assurance Interoperability Profile (HAIP) "é necessário para garantir a interoperabilidade entre as unidades de carteira e as partes utilizadoras".[1] Desenvolva com base no HAIP.
O que é um mdoc (ISO/IEC 18013-5)
A ISO/IEC 18013-5 define os atributos da carta de condução e a sua codificação em Concise Binary Object Representation (CBOR). Define também namespaces que evitam colisões entre identificadores, um mecanismo de prova com divulgação seletiva, a vinculação obrigatória ao dispositivo e a troca em proximidade.[1]
Apenas o modelo de dados da carta de condução é específico da condução. O ARF refere que todos os outros aspetos "são genéricos e podem ser utilizados para qualquer outro tipo de atestado, incluindo PID".[1]
O OpenID4VP descreve estas credenciais como "codificadas em CBOR e protegidas com COSE_Sign1" e atribui-lhes o identificador de formato mso_mdoc. Uma consulta indica o tipo de documento através de doctype_value.[4]
Nota
Está em preparação uma norma geral para a apresentação de documentos móveis, a ISO/IEC 23220-4. O ARF afirma que "ainda não está concluída" e continua a remeter para a ISO/IEC 18013-5.[1]
Como funciona a divulgação seletiva em cada formato
A divulgação seletiva permite ao utilizador partilhar alguns atributos e ocultar os restantes. O verificador continua a validar a assinatura do emissor. O eIDAS 2 exige que as carteiras tornem isto possível.[6] O ARF chama ao mecanismo do SD-JWT "hashes com salt" e afirma que "é conceptualmente idêntico ao mecanismo utilizado para o mesmo fim na [ISO/IEC 18013-5]".[1]
JSON
SD-JWT VC
- O emissor assina um JWT que contém digests e não valores
- Cada declaração oculta segue como uma divulgação separada
- A carteira envia apenas as divulgações aprovadas
OpenID4VP 1.0, Apêndice B.3
CBOR
mdoc (ISO/IEC 18013-5)
- O emissor assina hashes com salt dos elementos de dados
- Os elementos de dados ficam em namespaces
- A carteira devolve apenas os elementos aprovados
ARF v3.0.0, secções 5.4.2 e 5.4.3
Um mecanismo, duas codificações.[1][4]
No exemplo acima, o array _sd contém digests SHA-256. Cada divulgação é um array com um valor aleatório, o nome da declaração e o valor da declaração. Para o nome próprio é ["2GLC42sKQveCfGfryNRN9w", "given_name", "John"], e o seu hash é o primeiro digest da lista. O verificador calcula o hash de cada divulgação que recebe e procura o digest no payload assinado.[4]
As declarações são endereçadas de forma diferente. Numa credencial JSON, um caminho de declaração é uma lista de chaves, como ["address", "street_address"]. Num mdoc, o caminho "contém dois elementos do tipo string": o namespace e o identificador do elemento de dados, por exemplo ["org.iso.18013.5.1", "first_name"].[4]
Atenção
A tabela de atributos do PID não tem nenhum atributo "maior de 18". Os obrigatórios são o apelido, o nome próprio, a data de nascimento, o local de nascimento e a nacionalidade.[3] A divulgação seletiva oculta atributos. Não transforma uma data de nascimento num sim ou não.
Key binding e device engagement
A vinculação ao dispositivo associa uma credencial a chaves guardadas na carteira do utilizador, para que não possa ser clonada. O verificador confirma-a pedindo à carteira que assine dados aleatórios novos com a chave privada correspondente à chave pública contida na credencial.[1] Os nomes diferem: "Na [ISO/IEC 18013-5] chama-se 'mdoc authentication'. No [SD-JWT VC] chama-se 'key binding'."[1]
| Questão | SD-JWT VC | mdoc (ISO/IEC 18013-5) |
|---|---|---|
| Nome da prova | Key binding | mdoc authentication |
| Exigida pelo formato | Opcional na especificação | Obrigatória na norma |
| Onde fica a chave do titular | A declaração cnf | Dentro do mdoc assinado pelo emissor |
| O que a carteira devolve via OpenID4VP | O SD-JWT com um Key Binding JWT | Um DeviceResponse com uma assinatura ou MAC sobre a transcrição da sessão |
| O que a liga ao seu pedido | nonce e aud no Key Binding JWT | O handover OpenID4VP dentro da transcrição da sessão |
A vinculação ao dispositivo é obrigatória para os PID em ambos os formatos.[1][4]
Para SD-JWT VC, a regra no OpenID4VP é rigorosa. Quando require_cryptographic_holder_binding é true, o valor predefinido, a carteira "TEM DE devolver um SD-JWT" com um Key Binding JWT. A claim nonce tem de ser igual ao nonce do seu pedido, e aud tem de ser igual ao seu Client Identifier, exceto através da Digital Credentials API, em que tem de ser igual à sua origem precedida de origin:.[4]
O device engagement pertence apenas ao mdoc. Num fluxo de proximidade, o utilizador mostra um código QR ou apresenta uma etiqueta NFC. Esta contém o que o leitor precisa para abrir uma ligação NFC, Bluetooth Low Energy ou Wi-Fi Aware e estabelecer sobre ela um canal autenticado e cifrado, sem ligação à internet entre os dois.[1]
A carteira autentica o leitor
Uma apresentação de proximidade com mdoc (ISO/IEC 18013-5), simplificada.[1]
O que o utilizador vê:
Mostre a sua identificação
Mostrar código QR
1O utilizador abre a carteira e inicia uma apresentação.
Deixe o leitor fazer a leitura
Ou aproxime do leitor.
2Um código QR ou um toque NFC estabelece o canal.
Escolha o que partilhar
- ApelidoPartilhado
- Data de nascimentoPartilhado
- Local de nascimentoNão partilhado
Partilhar
3A carteira indica o nome do leitor e o utilizador aprova.
Partilhado
4Só os atributos aprovados saem do telemóvel.[1]
Protocolos de apresentação: OpenID4VP, ISO/IEC 18013-7 e proximidade
A ARF enumera o que uma carteira suporta: ISO/IEC 18013-5 em proximidade e OpenID4VP ou ISO/IEC 18013-7 à distância.[1]
| Protocolo | Onde | SD-JWT VC | mdoc (ISO/IEC 18013-5) |
|---|---|---|---|
| ISO/IEC 18013-5 | Proximidade: QR ou NFC e, depois, NFC, Bluetooth Low Energy ou Wi-Fi Aware | Não | Sim |
| OpenID4VP com HAIP | Remoto: redirecionamentos e esquemas de URI personalizados, ou a Digital Credentials API | Sim | Sim |
| ISO/IEC 18013-7 | Remoto: Anexo C sobre a Digital Credentials API; o esquema de URI personalizado do Anexo A é opcional para as carteiras | Não | Sim |
Que protocolo transporta que formato, segundo a ARF.[1]
Os atestados SD-JWT VC "não podem ser utilizados em apresentações de proximidade". A ISO/IEC 18013-7 "só pode ser utilizada para pedir e apresentar atestados em formato conforme com a [ISO/IEC 18013-5]". O OpenID4VP "é adequado apenas para fluxos de transações de apresentação remota" e transporta ambos os formatos.[1] O OpenID4VP 1.0 passou a especificação final em 10 de julho de 2025.[5]
Vídeo pendente: flow-eudi-openid4vp
Uma apresentação remota a partir de uma carteira com OpenID4VP, do início ao fim.
A ARF não recomenda esquemas de URI personalizados entre dispositivos, porque esses fluxos "são vulneráveis a ataques de phishing e de retransmissão", e indica a Digital Credentials API como alternativa.[1] Essa API ainda é um rascunho do W3C, e o Chrome 141 ativa-a por predefinição.[9][10] A ISO indica a especificação técnica de 2024 da 18013-7 como retirada e substituída, com uma terceira edição em desenvolvimento. Por isso, verifique que edição o seu código segue.[7][8] Os detalhes do pedido estão no guia do verificador OpenID4VP.
O que o Regulamento de Execução (UE) 2026/1731 exige para o PID
A primeira regra sobre os formatos do PID, o Regulamento de Execução (UE) 2024/2977, determinava que o PID "deve ser emitido em dois formatos": ISO/IEC 18013-5:2021 e o Verifiable Credentials Data Model 1.1.[2][3] O ato modificativo de julho de 2026 substituiu essa frase. O PID passa agora a "ser emitido em conformidade com as normas estabelecidas no anexo II do Regulamento de Execução (UE) 2024/2979, pontos 5 (formato SD-JWT VC) e 6 (formato ISO/IEC-mdoc)".[2]
- 4 de dezembro de 2024Primeira regra2024/2977: 18013-5 e VCDM 1.1.
- 22 de julho de 2026Alteração2026/1731: SD-JWT VC e mdoc.
- 23 de julho de 2026ARF v3.0.0Alinhada com os atos modificativos.
- 24 de dezembro de 2026Prazo das carteirasUma carteira por Estado-Membro.
- 11 de agosto de 2028RetratoO requisito do retrato aplica-se, salvo se o utilizador optar expressamente por não o incluir, quando aplicável.
Como evoluiu a legislação sobre os formatos de PID.[1][2][3][6]
O mesmo ato estabelece dois perfis de apresentação no seu anexo ao Regulamento de Execução (UE) 2024/2982: um "perfil ISO/IEC-mdoc" e um "perfil OpenID4VC-HAIP".[2]
- Envie o seu certificado de registo: um elemento de
verifier_info"deve incluir o certificado de registo".[2] - Utilize o seu certificado de acesso como certificado folha com o Client Identifier Prefix
x509_hash.[2] - Siga o "Anexo C da ISO/IEC 18013-7:2025" para mdoc através da Digital Credentials API.[2]
O registo é abordado no guia para partes utilizadoras da carteira europeia de identidade digital (EUDI Wallet), e o calendário em Prazos da EUDI Wallet para 2026 e 2027.
SD-JWT VC vs mdoc (ISO/IEC 18013-5): tabela comparativa
| Característica | SD-JWT VC | mdoc (ISO/IEC 18013-5) |
|---|---|---|
| Codificação | JSON Web Token | CBOR, binário |
| Divulgação seletiva | Hashes com salt | Hashes com salt |
| Principal caso de utilização no ARF | Remoto, por exemplo identificação remota | Proximidade, por exemplo uma carta de condução móvel |
| Obrigação da carteira | Obrigatório | Obrigatório |
| PID emitido neste formato | Sim | Sim |
| Proximidade | Não | Sim, ISO/IEC 18013-5 |
| Remoto | OpenID4VP com HAIP | OpenID4VP com HAIP, ou ISO/IEC 18013-7 |
| Vinculação ao dispositivo | Opcional no formato, obrigatória para PID | Obrigatória na norma |
| Identificador de formato OpenID4VP | dc+sd-jwt | mso_mdoc |
| Caminho dos atributos | Chaves JSON | Namespace, seguido do identificador do elemento de dados |
Com base no ARF, exceto a linha do PID (Regulamento de Execução 2026/1731) e as duas últimas linhas (OpenID4VP 1.0).[1][2][4]
As cartas de condução móveis nos Estados Unidos assentam na ISO/IEC 18013-5 para proximidade.[7][8] A solução europeia de verificação de idade indica a prova de conhecimento zero como mecanismo de apresentação obrigatório, "com apresentação mDoc simples como alternativa".[13] A EVO Wallet da Moldávia documenta o OpenID4VP 1.0 com um mdoc ISO/IEC 18013-5, com perfil segundo o HAIP 1.0.[11]
Que formato uma parte utilizadora tem de suportar
As unidades de carteira tratam os dois formatos, e o PID é emitido em ambos.[1][2] Os textos lidos para este guia não contêm nenhuma disposição que obrigue uma parte utilizadora a pedir os dois. A leitura prática: um verificador remoto pode pedir qualquer um deles, e um leitor sem ligação à internet precisa de mdoc, o único formato que funciona em proximidade.[1]
1Liste onde encontra o utilizador
Website, aplicação, balcão ou portão.
Algum deles é um fluxo de proximidade
Implemente mdoc (ISO/IEC 18013-5)
Também funciona remotamente.
Comece com SD-JWT VC
JSON sobre OpenID4VP com HAIP.
2Mantenha a camada de consulta neutra quanto ao formato
Uma única consulta DCQL pode indicar os dois formatos.
3Verifique o emissor, a revogação e a vinculação
As mesmas verificações aplicam-se a ambos.
A Digital Credentials Query Language (DCQL) do OpenID4VP permite que um único pedido inclua uma consulta dc+sd-jwt e uma consulta mso_mdoc lado a lado; a especificação apresenta um pedido deste tipo.[4] Segundo o ARF, a parte utilizadora verifica a assinatura do emissor face a uma âncora de confiança de uma Lista de Confiança ou de uma Lista de Entidades de Confiança, verifica a revogação através de uma lista de estado ou de uma lista de revogação, e verifica a vinculação ao dispositivo.[1]
Ao abrigo do eIDAS 2, Regulamento (UE) 2024/1183, cada Estado-Membro tem de disponibilizar pelo menos uma carteira até 24 de dezembro de 2026, e as partes utilizadoras privadas obrigadas a utilizar autenticação forte do utilizador têm de a aceitar, a pedido do utilizador, até 24 de dezembro de 2027, ficando isentas as micro e pequenas empresas.[6] A situação de cada país consta do monitor de lançamento da EUDI Wallet.
Bibliotecas e ferramentas de teste
As fontes deste guia não indicam bibliotecas de código aberto, por isso esta secção não indica nenhuma. Indicam, sim, onde testar e o que verificar em qualquer biblioteca que escolha.
- Execute os testes de conformidade em conformance.eudi.dev, referidos nas notas de versão do ARF v3.0.0.[1]
- Leia a documentação da implementação de referência em docs.eudi.dev.[1]
- Estude um verificador publicado: o Banco Nacional da Moldávia disponibilizou às instituições financeiras um verificador de demonstração com o código-fonte.[12]
- Confirme que a biblioteca segue o HAIP, e não apenas as especificações de base.[1]
- Confirme qual a edição da ISO/IEC 18013-7 que a biblioteca implementa.[2][8]
Como a Didit ajuda na verificação com a carteira europeia de identidade digital (EUDI Wallet)
A aceitação da EUDI Wallet chega em breve à Didit: está no nosso roteiro, alinhada com o calendário da EUDI Wallet, no mesmo fluxo de trabalho que já utiliza hoje. Já pode verificar pessoas à distância.
- Cinco eID nacionais funcionam hoje na Didit através de carteiras de identidade digital: MitID, BankID Sweden, Finnish Trust Network, Smart-ID e Mobile-ID. Consulte verificação de eID.
- Todas as outras pessoas usam a verificação de documentos com leitura do chip NFC, prova de vida e correspondência facial. Uma verificação KYC completa custa $0.33.
- O rastreio AML é executado no mesmo fluxo, por $0.20.
A documentação das carteiras mostra como as eID são ativadas por país.
A Didit fornece
- Autenticação com eID nacionais e a via documental num único fluxo de trabalho
- A prova de cada verificação
Fica consigo
- O seu registo como parte utilizadora da carteira
- A escolha dos formatos e dos atributos que solicita
- A decisão de integração do cliente e as suas políticas
Planeie connosco os formatos de carteira
Indique-nos os seus países e onde encontra os seus utilizadores, e comece hoje com eID nacionais e documentos.
Pontos-chave
- As carteiras suportam SD-JWT VC e mdoc (ISO/IEC 18013-5), e o PID é emitido em ambos os formatos.
- Ambos usam hashes com salt para a divulgação seletiva. Diferem na codificação: JSON face a CBOR.
- O SD-JWT VC funciona apenas à distância. O mdoc funciona em proximidade e à distância.
- O OpenID4VP com HAIP transporta ambos os formatos, pelo que um único verificador pode pedir qualquer um deles.
Perguntas frequentes
O que é um SD-JWT VC?
Uma credencial verificável empacotada como um Selectively Disclosable JSON Web Token. O emissor assina resumos (digests) das declarações e a carteira revela apenas as declarações que o utilizador aprova.[1]
O que é um mdoc nos termos da ISO/IEC 18013-5?
Um documento móvel no formato CBOR, definido inicialmente para as cartas de condução móveis. O resto da norma é genérico e pode transportar outros atestados, incluindo PID.[1]
Qual é a diferença entre SD-JWT VC e mdoc?
Codificação e alcance. O SD-JWT VC é JSON e funciona apenas à distância; o mdoc é CBOR e funciona também em proximidade. Ambos usam hashes com salt para a divulgação seletiva.[1]
Que formatos utiliza o PID da carteira europeia de identidade digital (EUDI Wallet)?
Ambos. O Regulamento de Execução (UE) 2026/1731 determina que o PID é emitido segundo o formato SD-JWT VC e o formato ISO/IEC-mdoc.[2]
Uma parte utilizadora tem de suportar ambos os formatos?
Os textos consultados para este guia obrigam as carteiras a suportar ambos e não dizem que uma parte utilizadora tem de pedir ambos. Um verificador remoto pode pedir qualquer um deles. Um leitor de proximidade precisa de mdoc.[1][2]
Como funciona a divulgação seletiva no SD-JWT VC?
O token assinado contém resumos em vez dos valores das declarações. Cada declaração é transmitida como uma divulgação com um valor aleatório, o nome e o valor. O verificador calcula o hash e procura o resumo.[4]
O que é a key binding e é o mesmo que a autenticação mdoc?
Ambos são nomes para a vinculação ao dispositivo, a prova de que a credencial pertence a chaves que estão na carteira do utilizador. É obrigatória para os PID.[1]
O OpenID4VP funciona com mdoc?
Sim. O OpenID4VP transporta ambos os formatos, com o identificador mso_mdoc para o mdoc e dc+sd-jwt para o SD-JWT VC. A ISO/IEC 18013-7 é a outra opção remota e transporta apenas mdoc.[1][4]
Onde posso testar um verificador para ambos os formatos?
Utilize os testes de conformidade em conformance.eudi.dev e a documentação em docs.eudi.dev. O Banco Nacional da Moldávia também publicou um verificador de demonstração com código-fonte.[1][12]
Fontes
- Architecture and Reference Framework v3.0.0, eu-digital-identity-wallet no GitHub, versão de 23 de julho de 2026.
- Regulamento de Execução (UE) 2026/1731 da Comissão, EUR-Lex, Jornal Oficial de 22 de julho de 2026.
- Regulamento de Execução (UE) 2024/2977 da Comissão relativo aos dados de identificação pessoal, EUR-Lex, Jornal Oficial de 4 de dezembro de 2024.
- OpenID for Verifiable Presentations 1.0, OpenID Foundation, especificação final.
- OpenID for Verifiable Presentations 1.0 Final Specification Approved, OpenID Foundation, 10 de julho de 2025.
- Regulamento (UE) 2024/1183 (eIDAS 2), EUR-Lex, Jornal Oficial de 30 de abril de 2024.
- Série ISO/IEC 18013, carta de condução móvel, página da norma ISO.
- ISO/IEC 18013-7, página da norma ISO.
- Digital Credentials, projeto do W3C.
- Digital Credentials API shipped, Chrome for Developers.
- Guia para programadores da EVO Wallet, Governo da Moldávia, egov4dev.
- Verificador de demonstração do BNM, Governo da Moldávia, egov4dev.
- Solução da UE de verificação da idade, portal técnico, ageverification.dev.
SD-JWT VC e mdoc (ISO/IEC 18013-5) são duas codificações da mesma promessa: atributos assinados que o utilizador controla. Veja como a Didit aborda a aceitação de carteiras na página da solução EUDI Wallet e todos os esquemas nacionais em esquemas de eID por país.
Verifique pessoas à distância enquanto as carteiras são implementadas
Utilize já as eID nacionais e a via documental e fale connosco sobre a EUDI Wallet.
Artigos relacionados
- e-Devlet para empresas: como funciona a verificação de identidade na Turquia
- Integração do Singpass Myinfo: guia para empresas em Singapura
- Integração do Cl@ve em Espanha: quem se pode ligar e que alternativas usar
- Verificação PhilSys: como as empresas verificam o National ID
- Verificador OpenID4VP: aceitação da carteira de identidade digital europeia (EUDI Wallet)
- Regulamento eIDAS explicado: o que muda com o eIDAS 2 (2024/1183)