Жители ЕС тоже обзавелись QR-кодами, чтобы избежать ковидных ограничений. Почему подделать их значительно сложнее, чем те, что используются в России?
Мы рассказываем честно не только про войну. Скачайте приложение.
С 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 — документ, заверенный цифровой подписью. В нем записаны полное имя и дата рождения его владельца и информация, соответствующая конкретному типу сертификата. Например, для сертификата о вакцинации это будет название вакцины и ее производитель, количество полученных доз и дата вакцинации.
Каждое государство ЕС самостоятельно создает свой центр сертификации (удостоверяющий центр). Он занимается выпуском и распределением ключей, которые позволяют подписывать такие цифровые сертификаты. Теоретически такие ключи могут быть выданы не только институтам, но и конкретным медикам.
Они вносят в шаблон нужного типа сертификата данные конкретного человека, после чего этот документ преобразуется в компактный файл, который затем подписывают цифровой подписью, упаковывают в архив и преобразуют в двумерный штрихкод.
Те же удостоверяющие центры публикуют свои публичные ключи (в каждой стране свой), с помощью которых специальные приложения в конечном итоге проверяют подлинность подписи. В результате проверка европейских QR-кодов (в отличие от российских) проходит офлайн. То есть персональные данные и сами сертификаты никуда не пересылаются по интернету — нет единого общеевропейского хранилища таких сертификатов. QR-коды сканируют только специальными приложениями. Это приложение проверяет подпись с помощью публичного ключа, выданного в каждой стране, и показывает содержание сертификата. Затем персональные данные предъявителя, как и в России, сличаются с удостоверением личности.
Если проверяющий попытается отсканировать такой QR-код обычным приложением, то увидит только заархивированный файл.
Благодаря такой схеме и использованию компактных цифровых подписей приложению понадобится совсем немного места для хранения публичных ключей: за пять лет, с учетом ежемесячной смены публичных ключей в центрах сертификации каждой европейской страны, — меньше одного мегабайта. Приложению проверяющего нужно лишь изредка выходить в интернет — проверять, не выпустили ли удостоверяющие центры очередные ключи, и скачивать новые.
Цифровые подписи, как и в случае с обычными документами, надежно защищают европейские сертификаты от подделок. Помочь создать липовый сертификат сможет только человек с доступом к приватному ключу, выданному национальным удостоверяющим центром. Но если такого человека поймают, созданные им подписи можно будет отозвать. Такой функционал запланирован, но еще не реализован.
(1) Цифровая подпись
С ее помощью можно заверять электронные документы и файлы. Цифровая подпись гарантирует, что в документ не были внесены изменения после подписания.