Перейти к основному содержимому
Didit привлёк $7,5 млн на инфраструктуру для идентификации и борьбы с мошенничеством
Didit
В блог
Блог · 6 октября 2026 г.

SD-JWT VC или mdoc (ISO/IEC 18013-5): сравнение форматов кошелька EUDI

SD-JWT VC или mdoc (ISO/IEC 18013-5) для разработчиков: выборочное раскрытие, привязка к ключу, OpenID4VP и ISO/IEC 18013-7, требования Имплементационного регламента (ЕС) 2026/1731 к PID и какой формат нужен верификатору.

Автор: DiditОбновлено
sd-jwt-vc-vs-mdoc-cover.png

Коротко

Каждый кошелёк цифровой идентификации ЕС (EUDI Wallet) обязан поддерживать два формата учётных данных: SD-JWT VC и mdoc (ISO/IEC 18013-5). SD-JWT VC основан на JSON и создан для удалённого использования. mdoc использует двоичный CBOR и единственный из двух работает также при очном предъявлении (proximity).[1]

  • Оба формата скрывают и раскрывают атрибуты по одному принципу: хеши с солью, подписанные эмитентом.[1]
  • Начиная с Имплементационного регламента (ЕС) 2026/1731 данные идентификации личности выдаются в обоих форматах.[2]
  • Удалённый проверяющий может прочитать любой из них через OpenID4VP. Считывателю для очного предъявления нужен mdoc.[1]

Последняя проверка: 5 октября 2026 · Не является юридической консультацией

SD-JWT VC представляет собой проверяемые учётные данные в виде подписанного JSON Web Token, утверждения которого можно раскрывать по одному. mdoc представляет собой мобильный документ в формате ISO/IEC 18013-5. Этот стандарт изначально написан для мобильных водительских удостоверений. Архитектура и эталонная структура (ARF) EUDI Wallet называет оба формата обязательными для кошельков. Третий формат, W3C Verifiable Credentials Data Model 2.0, указан как необязательный и «предназначен только для неквалифицированных EAA».[1]

В этом руководстве оба формата сравниваются для разработчиков, которые создают проверяющую сторону. Источники: ARF v3.0.0, текст OpenID for Verifiable Presentations (OpenID4VP) 1.0 и Официальный журнал. PID означает данные идентификации личности (person identification data).

Что такое SD-JWT VC

ARF описывает «SD-JWT-based Verifiable Credentials» как формат данных и правила обработки для представления проверяемых учётных данных. Здесь SD-JWT «означает "Selectively Disclosable JSON Web Token"».[1] Формат охватывает кодирование в JSON, механизм доказательства с выборочным раскрытием и необязательную привязку к устройству.[1]

В OpenID4VP используется идентификатор формата dc+sd-jwt, а запрос указывает тип учётных данных через vct_values.[4] Пример выданной полезной нагрузки из спецификации, сокращённый до двух из восьми дайджестов:[4]

{ "_sd": [ "jsu9yVulwQQlhFlM_3JlzMaSFzglhQG0DpfayQwLUK4", "TGf4oLbgwd5JQaHyKVQZU9UdGE0w5rtDsrZzfUaomLo" ], "vct": "https://credentials.example.com/identity_credential", "_sd_alg": "sha-256", "cnf": { "jwk": { "kty": "EC", "crv": "P-256" } } }

Примечание

SD-JWT VC оставляет открытыми многие варианты. ARF указывает, что профиль High Assurance Interoperability Profile (HAIP) «необходим для обеспечения совместимости между экземплярами кошелька (Wallet Units) и доверяющими сторонами».[1] Разрабатывайте в соответствии с HAIP.

Что такое mdoc (ISO/IEC 18013-5)

ISO/IEC 18013-5 определяет атрибуты удостоверения, их кодирование в Concise Binary Object Representation (CBOR) и пространства имён, которые не дают идентификаторам пересекаться. Он также определяет механизм доказательства с выборочным раскрытием, обязательную привязку к устройству и обмен данными при очном предъявлении.[1]

Специфична для вождения только модель данных удостоверения. ARF отмечает, что все остальные аспекты «являются общими и могут использоваться для любого другого типа аттестаций, включая PID».[1]

OpenID4VP описывает такие учётные данные как «закодированные в CBOR и защищённые с помощью COSE_Sign1» и присваивает им идентификатор формата mso_mdoc. Запрос указывает тип документа через doctype_value.[4]

Примечание

Готовится общий стандарт предъявления мобильных документов ISO/IEC 23220-4. ARF указывает, что он «ещё не завершён», и по-прежнему ссылается на ISO/IEC 18013-5.[1]

Как работает выборочное раскрытие в каждом формате

Выборочное раскрытие позволяет пользователю передать одни атрибуты и скрыть остальные. При этом проверяющий всё равно проверяет подпись эмитента. eIDAS 2 требует, чтобы кошельки обеспечивали такую возможность.[6] ARF называет механизм SD-JWT «хешами с солью» и указывает, что он «концептуально идентичен механизму, используемому для той же цели в [ISO/IEC 18013-5]».[1]

JSON

SD-JWT VC

  • Эмитент подписывает JWT, который содержит дайджесты, а не значения
  • Каждое скрытое утверждение передаётся как отдельное раскрытие (disclosure)
  • Кошелёк отправляет только одобренные раскрытия

OpenID4VP 1.0, Приложение B.3

CBOR

mdoc (ISO/IEC 18013-5)

  • Эмитент подписывает хеши элементов данных с солью
  • Элементы данных размещаются в пространствах имён
  • Кошелёк возвращает только одобренные элементы

ARF v3.0.0, разделы 5.4.2 и 5.4.3

Один механизм, две кодировки.[1][4]

В примере выше массив _sd содержит дайджесты SHA-256. Каждое раскрытие представляет собой массив из случайного значения, имени утверждения и значения утверждения. Для имени это ["2GLC42sKQveCfGfryNRN9w", "given_name", "John"], и его хеш стоит первым в списке дайджестов. Проверяющая сторона хеширует каждое полученное раскрытие и ищет этот дайджест в подписанных данных.[4]

Утверждения адресуются по-разному. Для учётных данных в JSON путь к утверждению представляет собой список ключей, например ["address", "street_address"]. Для mdoc путь «содержит два элемента строкового типа»: пространство имён и идентификатор элемента данных, например ["org.iso.18013.5.1", "first_name"].[4]

Внимание

В таблице атрибутов PID нет атрибута «старше 18». Обязательные атрибуты: фамилия, имя, дата рождения, место рождения и гражданство.[3] Выборочное раскрытие скрывает атрибуты. Оно не превращает дату рождения в ответ «да» или «нет».

Привязка ключа и device engagement

Привязка к устройству связывает учётные данные с ключами в кошельке пользователя, поэтому их нельзя клонировать. Проверяющая сторона проверяет привязку: она просит кошелёк подписать свежие случайные данные закрытым ключом, который соответствует открытому ключу в учётных данных.[1] Названия различаются: «В [ISO/IEC 18013-5] это называется „mdoc authentication“. В [SD-JWT VC] это называется „key binding“».[1]

ВопросSD-JWT VCmdoc (ISO/IEC 18013-5)
Название доказательстваПривязка ключа (key binding)Аутентификация mdoc (mdoc authentication)
Обязательно ли по форматуНеобязательно по спецификацииОбязательно по стандарту
Где находится ключ владельцаУтверждение cnfВнутри mdoc, подписанного эмитентом
Что кошелёк возвращает по OpenID4VPSD-JWT с Key Binding JWTDeviceResponse с подписью или MAC по транскрипту сессии
Что связывает доказательство с вашим запросомnonce и aud в Key Binding JWTПередача OpenID4VP внутри транскрипта сессии

Привязка к устройству обязательна для PID в обоих форматах.[1][4]

Для SD-JWT VC правило в OpenID4VP строгое. Если require_cryptographic_holder_binding имеет значение true (это значение по умолчанию), кошелёк «ДОЛЖЕН вернуть SD-JWT» вместе с Key Binding JWT. Утверждение nonce должно совпадать с nonce вашего запроса, а aud должно совпадать с вашим Client Identifier. Исключение составляет Digital Credentials API: там оно должно совпадать с вашим origin с префиксом origin:.[4]

Device engagement есть только в mdoc. В сценарии очного предъявления пользователь показывает QR-код или предъявляет NFC-метку. Она содержит то, что нужно считывателю, чтобы открыть соединение NFC, Bluetooth Low Energy или Wi-Fi Aware и построить поверх него аутентифицированный зашифрованный канал. Интернет-соединение между устройствами при этом не нужно.[1]

Пользователь Кошелёк Ваш считыватель
1Открывает кошелёк
2Показывает QR-код или NFC-метку
3Подключается, защищённый канал
4Запрос на предъявление

Кошелёк аутентифицирует считыватель

5Запрашивает подтверждение
6Подтверждает
7Выбранные элементы данных

Очное предъявление с mdoc (ISO/IEC 18013-5), упрощённая схема.[1]

Что видит пользователь:

Кошелёк EUDI

Предъявите удостоверение личности

Показать QR-код

1Пользователь открывает кошелёк и начинает предъявление.

Кошелёк EUDI

Дайте считывателю отсканировать код

Или приложите телефон к считывателю.

2QR-код или касание NFC устанавливают канал.

Кошелёк EUDI

Выберите, чем поделиться

  • ФамилияПередаётся
  • Дата рожденияПередаётся
  • Место рожденияНе передаётся

Передать

3Кошелёк называет считыватель, и пользователь подтверждает.

Кошелёк EUDI

Передано

4С телефона передаются только одобренные атрибуты.[1]

Протоколы предъявления: OpenID4VP, ISO/IEC 18013-7 и очное предъявление

В ARF перечислено, с чем работает кошелёк: ISO/IEC 18013-5 при очном предъявлении, а также OpenID4VP или ISO/IEC 18013-7 при удалённом предъявлении.[1]

ПротоколГдеSD-JWT VCmdoc (ISO/IEC 18013-5)
ISO/IEC 18013-5Очно: QR-код или NFC, затем NFC, Bluetooth Low Energy или Wi-Fi AwareНетДа
OpenID4VP с HAIPУдалённо: перенаправления и собственные URI-схемы или Digital Credentials APIДаДа
ISO/IEC 18013-7Удалённо: Приложение C через Digital Credentials API; собственная URI-схема по Приложению A для кошельков необязательнаНетДа

Какой протокол передаёт какой формат, согласно ARF.[1]

Аттестации SD-JWT VC «не могут использоваться при предъявлении вблизи». ISO/IEC 18013-7 «может использоваться только для запроса и предъявления аттестаций в формате, соответствующем [ISO/IEC 18013-5]». OpenID4VP «подходит только для потоков транзакций удалённого предъявления» и передаёт оба формата.[1] OpenID4VP 1.0 получила статус Final Specification 10 июля 2025 года.[5]

Видео ожидается: flow-eudi-openid4vp

Удалённое предъявление из кошелька через OpenID4VP от начала до конца.

ARF не рекомендует использовать собственные URI-схемы между устройствами, поскольку такие потоки «уязвимы для фишинга и атак ретрансляции», и называет альтернативой Digital Credentials API.[1] Этот API пока остаётся черновиком W3C, а Chrome 141 включает его по умолчанию.[9][10] ISO указывает техническую спецификацию 18013-7 2024 года как отозванную и заменённую, а третья редакция находится в разработке. Поэтому проверьте, на какую редакцию ориентирован ваш код.[7][8] Детали запроса приведены в руководстве для верификатора OpenID4VP.

Что Имплементационный регламент (ЕС) 2026/1731 требует в отношении PID

Первое правило о форматах PID, Имплементационный регламент (ЕС) 2024/2977, устанавливало, что PID «выдаются в двух форматах»: ISO/IEC 18013-5:2021 и Verifiable Credentials Data Model 1.1.[2][3] Изменяющий акт июля 2026 года заменил это предложение. Теперь PID «выдаются в соответствии со стандартами, установленными в Приложении II к Имплементационному регламенту (ЕС) 2024/2979, пункты 5 (формат SD-JWT VC) и 6 (формат ISO/IEC-mdoc)».[2]

  1. 4 декабря 2024Первое правило2024/2977: 18013-5 и VCDM 1.1.
  2. 22 июля 2026Внесены изменения2026/1731: SD-JWT VC и mdoc.
  3. 23 июля 2026ARF v3.0.0Приведена в соответствие с изменяющими актами.
  4. 24 декабря 2026Срок для кошельковОдин кошелёк на каждое государство-член.
  5. 11 августа 2028ПортретТребование о портрете применяется, если пользователь явно не отказался от него, где это применимо.

Как менялось законодательство о форматах PID.[1][2][3][6]

Тот же акт устанавливает два профиля предъявления в приложении к Имплементационному регламенту (ЕС) 2024/2982: «профиль ISO/IEC-mdoc» и «профиль OpenID4VC-HAIP».[2]

  • Передавайте свой сертификат регистрации: один из элементов verifier_info «должен включать сертификат регистрации».[2]
  • Используйте свой сертификат доступа как конечный (leaf) сертификат с префиксом идентификатора клиента x509_hash.[2]
  • Для mdoc через Digital Credentials API следуйте «Приложению C к ISO/IEC 18013-7:2025».[2]

Регистрация описана в руководстве по EUDI Wallet для доверяющих сторон, а календарь в статье Сроки EUDI Wallet на 2026 и 2027 годы.

SD-JWT VC и mdoc (ISO/IEC 18013-5): сравнительная таблица

ПараметрSD-JWT VCmdoc (ISO/IEC 18013-5)
КодированиеJSON Web TokenCBOR, двоичный
Выборочное раскрытиеХеши с сольюХеши с солью
Основной сценарий в ARFУдалённое использование, например удалённая идентификацияОчное использование, например мобильное водительское удостоверение
Обязанность кошелькаОбязательноОбязательно
PID выпускается в этом форматеДаДа
Предъявление вблизиНетДа, ISO/IEC 18013-5
Удалённое предъявлениеOpenID4VP с HAIPOpenID4VP с HAIP или ISO/IEC 18013-7
Привязка к устройствуНеобязательна в формате, обязательна для PIDОбязательна по стандарту
Идентификатор формата в OpenID4VPdc+sd-jwtmso_mdoc
Путь к атрибутамКлючи JSONПространство имён, затем идентификатор элемента данных

По данным ARF, кроме строки PID (Имплементационный регламент 2026/1731) и двух последних строк (OpenID4VP 1.0).[1][2][4]

Мобильные водительские удостоверения в США основаны на ISO/IEC 18013-5 для очного предъявления.[7][8] Решение ЕС для проверки возраста называет доказательство с нулевым разглашением обязательным механизмом предъявления, «с простым предъявлением mDoc в качестве резервного варианта».[13] В документации молдавского EVO Wallet описан OpenID4VP 1.0 с mdoc по ISO/IEC 18013-5 в профиле HAIP 1.0.[11]

Какой формат должна поддерживать доверяющая сторона

Экземпляры кошелька работают с обоими форматами, и PID выдаётся в обоих.[1][2] В текстах, изученных для этого руководства, нет положения, обязывающего доверяющую сторону запрашивать оба. На практике это означает следующее: удалённый верификатор может запросить любой из них, а считывателю без подключения к интернету нужен mdoc, единственный формат, работающий при очном предъявлении (proximity).[1]

1Перечислите, где вы взаимодействуете с пользователем

Сайт, приложение, стойка обслуживания или пропускной пункт.

Есть ли среди них очный сценарий (proximity)

Да

Внедрите mdoc (ISO/IEC 18013-5)

Он работает и удалённо.

Нет

Начните с SD-JWT VC

JSON через OpenID4VP с HAIP.

2Сделайте уровень запросов независимым от формата

Один запрос DCQL может указывать оба формата.

3Проверьте издателя, отзыв и привязку

Для обоих форматов действуют одни и те же проверки.

Язык запросов цифровых удостоверений (DCQL) в OpenID4VP позволяет передать в одном запросе запрос dc+sd-jwt и запрос mso_mdoc одновременно. Пример такого запроса приведён в спецификации.[4] Согласно ARF, доверяющая сторона проверяет подпись издателя по якорю доверия из доверенного списка (Trusted List) или списка доверенных субъектов (List of Trusted Entities), проверяет отзыв по списку статусов или списку отзыва и проверяет привязку к устройству.[1]

Согласно eIDAS 2, Регламенту (ЕС) 2024/1183, каждое государство-член должно предоставить как минимум один кошелёк до 24 декабря 2026 года, а частные доверяющие стороны, обязанные применять строгую аутентификацию пользователя, должны принимать его по запросу пользователя до 24 декабря 2027 года. Микро- и малые предприятия освобождены от этого требования.[6] Статус по странам приведён в трекере запуска EUDI Wallet.

Библиотеки и инструменты тестирования

В источниках этого руководства не названы библиотеки с открытым исходным кодом, поэтому в этом разделе их тоже нет. Но в источниках указано, где проводить тестирование и что проверять в любой выбранной библиотеке.

  • Запустите тесты на соответствие на conformance.eudi.dev. Они указаны в примечаниях к выпуску ARF v3.0.0.[1]
  • Изучите документацию эталонной реализации на docs.eudi.dev.[1]
  • Изучите опубликованный верификатор: Национальный банк Молдовы выпустил для финансовых организаций демонстрационный верификатор с исходным кодом.[12]
  • Убедитесь, что библиотека следует HAIP, а не только базовым спецификациям.[1]
  • Уточните, какую редакцию ISO/IEC 18013-7 она реализует.[2][8]

Как Didit помогает с проверкой через EUDI Wallet

Прием EUDI Wallet скоро появится в Didit. Он есть в нашей дорожной карте, согласован с графиком внедрения EUDI Wallet и будет работать в том же процессе, который вы используете сегодня. Удаленно проверять людей можно уже сейчас.

Документация по кошелькам показывает, как eID включаются для каждой страны.

Didit обеспечивает

  • Вход через национальные eID и маршрут с документами в одном процессе
  • Доказательства по каждой проверке

Остается за вами

  • Ваша регистрация в качестве доверяющей стороны кошелька
  • Выбор запрашиваемых форматов и атрибутов
  • Решение об онбординге и ваши политики

Спланируйте форматы кошельков вместе с нами

Расскажите, в каких странах вы работаете и где взаимодействуете с пользователями, и начните с национальных eID и документов уже сегодня.

Связаться с намиНачать бесплатноЧитать документацию

Ключевые выводы

  • Кошельки поддерживают как SD-JWT VC, так и mdoc (ISO/IEC 18013-5), а PID выпускается в обоих форматах.
  • Оба формата используют хеши с солью для выборочного раскрытия. Различаются они кодированием: JSON против CBOR.
  • SD-JWT VC работает только удаленно. mdoc работает и при очном предъявлении, и удаленно.
  • OpenID4VP с HAIP передает оба формата, поэтому один верификатор может запрашивать любой из них.

Часто задаваемые вопросы

Что такое SD-JWT VC?

Верифицируемое удостоверение, упакованное как Selectively Disclosable JSON Web Token. Эмитент подписывает дайджесты утверждений, а кошелёк раскрывает только те утверждения, которые одобрил пользователь.[1]

Что такое mdoc по ISO/IEC 18013-5?

Мобильный документ в формате CBOR, впервые определённом для мобильных водительских удостоверений. Остальная часть стандарта универсальна и может переносить другие аттестаты, включая PID.[1]

Чем SD-JWT VC отличается от mdoc?

Кодированием и сферой применения. SD-JWT VC основан на JSON и работает только удалённо; mdoc основан на CBOR и подходит также для очного предъявления. Оба используют хеши с солью для выборочного раскрытия.[1]

Какие форматы использует PID в кошельке EUDI?

Оба. Имплементационный регламент (ЕС) 2026/1731 устанавливает, что PID выдаётся в формате SD-JWT VC и в формате ISO/IEC-mdoc.[2]

Обязана ли доверяющая сторона поддерживать оба формата?

Тексты, изученные для этого руководства, обязывают кошельки поддерживать оба формата и не говорят, что доверяющая сторона должна запрашивать оба. Удалённый верификатор может запросить любой из них. Считывателю для очного предъявления нужен mdoc.[1][2]

Как работает выборочное раскрытие в SD-JWT VC?

Подписанный токен содержит дайджесты вместо значений утверждений. Каждое утверждение передаётся как раскрытие со случайным значением, именем и значением. Верификатор хеширует его и ищет соответствующий дайджест.[4]

Что такое привязка ключа и то же ли это, что аутентификация mdoc?

Оба термина обозначают привязку к устройству, то есть доказательство того, что удостоверение принадлежит ключам в кошельке пользователя. Для PID она обязательна.[1]

Работает ли OpenID4VP с mdoc?

Да. OpenID4VP переносит оба формата: с идентификатором mso_mdoc для mdoc и dc+sd-jwt для SD-JWT VC. Другой удалённый вариант это ISO/IEC 18013-7, и он переносит только mdoc.[1][4]

Где можно протестировать верификатор для обоих форматов?

Используйте тесты соответствия на conformance.eudi.dev и документацию на docs.eudi.dev. Национальный банк Молдовы также опубликовал демо-верификатор с исходным кодом.[1][12]

Источники

  1. Architecture and Reference Framework v3.0.0, eu-digital-identity-wallet на GitHub, релиз от 23 июля 2026 г.
  2. Имплементационный регламент Комиссии (ЕС) 2026/1731, EUR-Lex, Официальный журнал от 22 июля 2026 г.
  3. Имплементационный регламент Комиссии (ЕС) 2024/2977 о данных для идентификации личности, EUR-Lex, Официальный журнал от 4 декабря 2024 г.
  4. OpenID for Verifiable Presentations 1.0, OpenID Foundation, финальная спецификация.
  5. OpenID for Verifiable Presentations 1.0 Final Specification Approved, OpenID Foundation, 10 июля 2025 г.
  6. Регламент (ЕС) 2024/1183 (eIDAS 2), EUR-Lex, Официальный журнал от 30 апреля 2024 г.
  7. Серия ISO/IEC 18013, мобильное водительское удостоверение, страница стандарта ISO.
  8. ISO/IEC 18013-7, страница стандарта ISO.
  9. Digital Credentials, черновик W3C.
  10. Digital Credentials API shipped, Chrome for Developers.
  11. Руководство разработчика EVO Wallet, Правительство Молдовы, egov4dev.
  12. Демо-верификатор BNM, Правительство Молдовы, egov4dev.
  13. Решение ЕС для проверки возраста, технический портал, ageverification.dev.

SD-JWT VC и mdoc (ISO/IEC 18013-5) представляют собой две кодировки одного и того же обещания: подписанные атрибуты, которые контролирует пользователь. О том, как Didit подходит к приему кошельков, читайте на странице решения для кошелька EUDI, а все национальные схемы описаны в обзоре «Схемы eID по странам».

Проверяйте людей удаленно, пока кошельки внедряются

Используйте национальные eID и проверку по документам уже сейчас, а кошелек EUDI обсудите с нами.

Начать бесплатноСвязаться с нами

Инфраструктура для идентификации и борьбы с мошенничеством.

Единый API для KYC, KYB, мониторинга транзакций и проверки кошельков. Интеграция за 5 минут.

Попросите ИИ кратко изложить эту страницу