Robin Utrecht / Sipa / Scanpix / LETA
разбор

Жители ЕС тоже обзавелись QR-кодами, чтобы избежать ковидных ограничений. Почему подделать их значительно сложнее, чем те, что используются в России?

Источник: Meduza

С 28 июня в Москве посещать кафе, рестораны и массовые мероприятия численностью более 500 человек можно только по «ковидным» QR-кодам. Сразу же был налажен выпуск поддельных QR-кодов — Роскомнадзор уже заблокировал пару десятков сайтов, которые их генерировали. Одновременно 1 июля в странах ЕС, а также в Исландии, Лихтенштейне, Норвегии и Швейцарии официально вступила в силу своя система цифровых сертификатов COVID-19, также представленных в виде QR-кодов. При этом европейцы заранее придумали, как предотвратить появление подделок (спойлер: все дело в цифровых подписях).


Как подделывают российские QR-коды

QR-код — это один из вариантов двумерного штрихкода. Они были изобретены, чтобы преодолеть главное ограничение линейных штриховых кодов (их можно найти на товарах в магазинах), которые умеют кодировать слишком мало информации. QR-коды используются для передачи самой разной информации: текста, гиперссылок, электронных визитных карточек, геоточек, данных для подключения к Wi-Fi и так далее.

В России в «ковидных» QR-кодах содержится только гиперссылка с идентификатором вашего сертификата (о вакцинации или о перенесенном COVID-19 или с результатами ПЦР-теста). Проверка этого QR-кода устроена следующим образом:

  • его сканируют,
  • открывают ссылку в специальном приложении или обычном браузере,
  • сравнивают персональные данные на открывшейся странице с предъявляемым удостоверением личности (часть данных при этом скрыта).

Такая схема используется и в тех QR-кодах, что можно получить на сайте «Госуслуг», и в тех, что выдает московское правительство на immune.mos.ru. Первые при этом сообщают чуть больше информации о владельце сертификата: кроме точной даты рождения и части ФИО, там можно найти часть номера внутреннего и заграничного паспортов.

Открываемые страницы показывают чуть меньше информации, чем передают с сервера. В этом можно убедиться, открыв в браузере инструменты разработчика (Ctrl + Shift + I) и найдя соответствующие JSON-файлы. Сайт immune.mos.ru до сих пор передает точную дату рождения, хотя показывает проверяющим только день и месяц. А на странице «Госуслуг» подгружается, но не отображается информация о названии конкретной вакцины и ее серии.

Проблема с этой схемой заключается как раз в том, что такой QR-код на практике можно «проверить» в любом браузере. Проверяющему могут подсунуть поддельный QR-код со ссылкой на мошеннический сайт, который будет выглядеть точь-в-точь как сайт «Госуслуг» или московского правительства, даже его адрес в теории может быть похожим.

Поэтому проверяющий должен либо самостоятельно каждый раз внимательно изучать ссылку, либо установить и использовать официальные приложения, которые автоматически проводят такую проверку. Но бизнесу как раз может быть выгодно проводить нестрогую проверку: ответственность за обман будет нести их клиент, предъявивший поддельный QR-код.

Как защищают европейские QR-коды

В Европейском союзе QR-коды используют для проверки информации тех же типов «ковидных» сертификатов: о проведенной вакцинации, о результатах лабораторных анализов, о факте, что человек переболел COVID-19. Но там в каждом QR-коде содержится не гиперссылка, а цифровой сертификат COVID-19 — документ, заверенный цифровой подписью. В нем записаны полное имя и дата рождения его владельца и информация, соответствующая конкретному типу сертификата. Например, для сертификата о вакцинации это будет название вакцины и ее производитель, количество полученных доз и дата вакцинации.

Каждое государство ЕС самостоятельно создает свой центр сертификации (удостоверяющий центр). Он занимается выпуском и распределением ключей, которые позволяют подписывать такие цифровые сертификаты. Теоретически такие ключи могут быть выданы не только институтам, но и конкретным медикам.

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

Fredrik Ljunggren / Github

Те же удостоверяющие центры публикуют свои публичные ключи (в каждой стране свой), с помощью которых специальные приложения в конечном итоге проверяют подлинность подписи. В результате проверка европейских QR-кодов (в отличие от российских) проходит офлайн. То есть персональные данные и сами сертификаты никуда не пересылаются по интернету — нет единого общеевропейского хранилища таких сертификатов. QR-коды сканируют только специальными приложениями. Это приложение проверяет подпись с помощью публичного ключа, выданного в каждой стране, и показывает содержание сертификата. Затем персональные данные предъявителя, как и в России, сличаются с удостоверением личности.

Если проверяющий попытается отсканировать такой QR-код обычным приложением, то увидит только заархивированный файл.

Благодаря такой схеме и использованию компактных цифровых подписей приложению понадобится совсем немного места для хранения публичных ключей: за пять лет, с учетом ежемесячной смены публичных ключей в центрах сертификации каждой европейской страны, — меньше одного мегабайта. Приложению проверяющего нужно лишь изредка выходить в интернет — проверять, не выпустили ли удостоверяющие центры очередные ключи, и скачивать новые.

Цифровые подписи, как и в случае с обычными документами, надежно защищают европейские сертификаты от подделок. Помочь создать липовый сертификат сможет только человек с доступом к приватному ключу, выданному национальным удостоверяющим центром. Но если такого человека поймают, созданные им подписи можно будет отозвать. Такой функционал запланирован, но еще не реализован.

Денис Дмитриев

Magic link? Это волшебная ссылка: она открывает лайт-версию материала. Ее можно отправить тому, у кого «Медуза» заблокирована, — и все откроется! Будьте осторожны: «Медуза» в РФ — «нежелательная» организация. Не посылайте наши статьи людям, которым вы не доверяете.