Версия
Всегда "1.0" для текущих развёртываний. Будущие редакции могут увеличить номер версии.
Стандарты · Мобильное водительское удостоверение (mDL)
Когда бармен, сотрудник TSA или служащий проката автомобилей сканирует QR-код на экране вашего телефона, происходит вот что: ваш телефон устанавливает зашифрованный канал с верификатором и открывает только запрошенные данные — ничего лишнего.
ISO/IEC 18013-5:2021 — персональная идентификация, водительское удостоверение соответствия ISO, часть 5: мобильное водительское удостоверение (mDL). Он определяет формат данных, протокол передачи и криптографию для цифровых водительских удостоверений на смартфоне.
Распространение идёт активно: десятки штатов США имеют производственные или пилотные mDL-решения, поддержка встроена в iOS Wallet, Google Wallet и несколько государственных приложений.
QR-код mDL кодирует CBOR-структуру DeviceEngagement. CBOR (Concise Binary Object Representation) — это компактный двоичный формат, аналогичный JSON. Он содержит метаданные сессии — не данные удостоверения.
{
0: "1.0", // version
1: [1, 2, [eDeviceKey bytes]], // security: cipher suite 1, EC P-256 key
2: [ // device retrieval methods
[1, 1, {...NFC options...}],
[2, 1, {...BLE options...}],
[3, 1, {...Wi-Fi Aware options...}]
],
3: {...optional server retrieval...}
}Ключевые поля после декодирования:
Всегда "1.0" для текущих развёртываний. Будущие редакции могут увеличить номер версии.
Всегда 1: согласование ключей ECDH на P-256, сессионное шифрование AES-GCM, MAC-аутентификация HMAC-SHA-256.
Эфемерный открытый ключ EC, генерируемый кошельком для каждой сессии. Не связан с ключом подписи удостоверения — не позволяет связать вас по предыдущим транзакциям.
Кошелёк сообщает верификатору, какие каналы он готов использовать для фактической передачи данных: NFC, BLE, WiFi Aware, QR или серверная верификация.
При наличии кошелёк поддерживает режим 18013-7: верификатор может запрашивать атрибуты через HTTPS, а не через NFC/BLE-канал.
Это другая категория документов. Баркод AAMVA PDF417 на пластиковой карте содержит все ваши данные: полное имя, адрес, дату рождения, ограничения — в открытом тексте. Любой, кто его сканирует, получает всё.
mDL переворачивает эту схему. QR-код не содержит атрибутов — только рукопожатие. Верификатор должен запросить конкретные атрибуты (given_name, family_name, birth_date, age_over_21, portrait, document_number, driving_privileges и др.), кошелёк показывает вам этот запрос, и передаются только те атрибуты, которые вы одобрили. Передача также криптографически подписана выдающим органом (государственным DMV), поэтому верификатор может подтвердить подлинность атрибутов без обращения к серверу — офлайн-верификация работает.
Именно поэтому пользователи, заботящиеся о приватности, предпочитают mDL, несмотря на то что стандарт сложнее — для них это реальное улучшение, а не маркетинг.
Стандарт mDL определяет набор производных атрибутов, позволяющих кошельку ответить на вопрос, не раскрывая исходных данных удостоверения. Три наиболее распространённых:
age_over_18, age_over_21, age_over_65 — для подтверждения возраста без раскрытия фактической даты рождения.resident_state — для ответа на вопрос «являетесь ли вы резидентом штата?» без раскрытия полного адреса.driving_privileges — категория прав, ограничения; для аренды автомобилей без раскрытия домашнего адреса.Хорошо спроектированное приложение-верификатор для бара запрашивает только age_over_21. Ваш кошелёк подтверждает результат без передачи самой даты рождения.
Угрозы для пластиковых карт были простыми: потерять, скопировать, подсмотреть через плечо. Угрозы для mDL иные. Формат надёжен; криптография выверена; риск смещается в сторону приложения-верификатора на другой стороне транзакции.
Любой может создать приложение-верификатор. Центральной лицензирующей инстанции не существует. Поэтому бар, желающий получить больше, чем age_over_21, может создать верификатор, запрашивающий полное имя, дату рождения, адрес и фото.
Защита — на стороне владельца: читайте запрос. Если верификатор запрашивает больше, чем нужно для транзакции, откажитесь.
Важно знать: верификатор видит ваш eDeviceKey, набор шифров и методы передачи из QR-кода ещё до вашего одобрения. Содержимое удостоверения он получает только после подтверждения с вашей стороны.
Загрузите QR-код DeviceEngagement mDL (изображение, вставка или камера) в наш сканер. Результат покажет:
Мы НЕ декодируем атрибуты — их нет в QR-коде по замыслу стандарта. Атрибуты передаются по зашифрованному каналу после сканирования QR-кода и вашего одобрения.
Декодирование происходит в вашем браузере; на наш сервер передаются только структурные метаданные.
age_over_21 — нормально.Загрузите QR-код (изображение, вставка или камера). Результат покажет версию, набор шифров, методы передачи, хост серверной верификации и длину eDeviceKey.