Машина времени для DPP

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

Именно это вы можете попробовать прямо сейчас: в демо-версии⁠ представлен полный паспорт продукта с примерными данными.

Это Transpareo Time Machine - наше приложение с открытым исходным кодом для потребителей, предназначенное для любого цифрового паспорта продукта. Код доступен под лицензией GPL v3 на GitHub⁠.

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

Что делает приложение

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

1

Сканирование

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

2

Посмотреть новости

Продукт предстает в настоящем - компоненты, материалы, происхождение, уход, переработка.

3

Пролистать историю

Одно движение пальцем позволяет пролистать назад во времени. Каждая предыдущая версия с датой и причиной изменения.

4

Поделиться

Каждая версия имеет свою собственную ссылку. Пользователь делится конкретной версией с друзьями или государственными органами.

Зачем вообще

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

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

Если мы хотим, чтобы этот регламент дошёл до потребителя, то потребительский портал должен быть хорошо разработан - быстрым, привлекательным и логичным. В противном случае он не достигнет своей цели. Мы решили создать этот потребительский портал на основе открытого исходного кода, чтобы он не зависел от какого-либо одного поставщика.

Смена поставщика без перерыва

Регламент ЕС о цифровом паспорте продукта требует, чтобы паспорта продуктов были взаимосовместимыми и основанными на открытых стандартах - то есть могли передаваться между сервисами и системами, а не привязывались к одному конкретному поставщику. Таким образом, независимость от поставщика услуг - это не дополнение, а часть требований.

Transpareo Time Machine - это инструмент, который воплощает это требование в жизнь. Поскольку каждый паспорт продукта предоставляется в соответствии с открытыми стандартами - идентификация, независимая от резолвера, каноническая сериализация, публично доступные ключи - а рендерer распространяется с открытым исходным кодом под лицензией GPL v3, отображение паспорта никогда не зависит от нашей платформы.

Ответственность за паспорт продукта несет субъект хозяйственной деятельности - производитель, импортер или уполномоченное лицо. Если он решает отказаться от Transpareo и перейти к другому поставщику, отображение остаётся неизменным: уже опубликованные версии вместе с историей по-прежнему отображаются тем же рендерером с открытым исходным кодом без изменений, а новый поставщик, поддерживающий те же открытые стандарты, будет отображаться точно тем же приложением. Данные переносятся вместе с ним, потребители не замечают никаких сбоев, и никому не приходится ждать миграции.

Проверено в браузере, а не на нашем сервере

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

Каждую версию DPP подписывают две независимые друг от друга стороны: эмитент и Transpareo. Обе подписи должны поддаваться проверке, чтобы значок стал зелёным. Используя технологию «Bring Your Own Key» (BYOK), эмитент управляет собственным конечным пунктом подписи - Transpareo никогда не хранит закрытый ключ и лишь добавляет независимую встречную подпись. Таким образом создаётся подпись эмитента, которую сама Transpareo не может сгенерировать. Скомпрометированный сервер не может подделать галочку, поскольку проверка происходит у самого посетителя.

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

Такая же проверка доступна и на отдельной странице: на странице проверки DPP введите URL-адрес манифеста любого паспорта продукта и увидите полный результат проверки - без необходимости открывать сам паспорт.

Мы публикуем код

Transpareo Time Machine распространяется по лицензии GPL v3 на GitHub⁠. Клонирование, форки, самостоятельное размещение - всё разрешено. Опубликованные модификации, в свою очередь, должны распространяться по лицензии GPL v3, чтобы каждое дальнейшее развитие приносило пользу обществу.

Три способа интеграции пакета:

  • С помощью тега script: добавьте на страницу <script> и <transpareo-time-machine src="…"> - и готово, никаких сборок не требуется.
  • Через npm: npm install transpareo-time-machine в собственном приложении.
  • Самостоятельный хостинг: сборка пакета, собственная инфраструктура, отсутствие сторонних зависимостей во время выполнения.

Если вам нужна только проверка подписи без полного просмотра продукта, импортируйте дочерний элемент <dpp-verifier> - идеально подходит для инструментов аудиторов. Можно увидеть в действии на странице верификации DPP.

Кто грамотно использует приложение

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

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

Что произойдет, если компании «Транспарео» больше не будет?

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

  • Каждая подписанная версия DPP хранится в общедоступном хранилище. Байтов данных и опубликованных открытых ключей достаточно для последующей проверки.
  • Как только паспорта продукта зарегистрированы в реестре ЕС, второе хранилище, защищенное от записи, дублирует каждую версию DPP и журнал событий в течение дополнительных десяти лет. Никто - в том числе и мы - не может впоследствии изменить эти дубликаты.
  • После расторжения договора короткие URL-адреса паспортов продукта остаются доступными через перенаправление на платформе Transpareo.
  • Transpareo Time Machine работает без изменений даже с архивированными данными. Пакет не обращается к нам во время выполнения; ему нужны только байты и ключи.

Даже если завтра платформа Transpareo исчезнет, версии DPP и рендерер с открытым исходным кодом останутся.

Для тех, кто интересуется технологиями

Вот что происходит «под капотом». Если вам не нужно знать об этом подробно, можете пропустить этот раздел - приложение будет работать и без этого.

  • GS1 Digital Link (ISO/IEC 18975): URL «паспорта продукта» содержит идентификатор продукта в стандартизированном формате - независимом от резолвера и взаимозаменяемом между поставщиками.
  • Схема канонизации JSON (RFC 8785): детерминированная сериализация. Таким образом, хеш остается воспроизводимым независимо от порядка полей или пробелов - каждый может самостоятельно его пересчитать.
  • W3C Data Integrity Proofs (eddsa-jcs-2022): подпись Ed25519 над канонизированной формой (JCS).
  • /.well-known/dpp-keys/ (RFC 8615): открытые ключи эмитентов находятся по стандартизированному пути - не требуется обращаться в Transpareo, каждый верификатор может найти их самостоятельно.

Всё задокументировано в README на GitHub⁠ - включая архитектуру фронтенда (собственное ядро React, без внешних фреймворков) и инструкции по сборке для самостоятельного хостинга.

Посмотреть код на GitHub

Полный исходный код, все релизы и обсуждение проблем можно найти в общедоступном репозитории.