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

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

Это и есть Transpareo Time Machine - наше приложение с открытым исходным кодом для потребителей, предназначенное для работы с любыми цифровыми паспортами продукта. Исходный код размещен на GitHub под лицензией GPL v3. Проект CIRPASS-2, финансируемый ЕС, ведёт реестр « Transpareo Time Machine » в своём каталоге OpenDPP, посвящённом программному обеспечению DPP с открытым исходным кодом.

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

Убедитесь сами

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

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

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

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

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

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

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

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

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

4
Поделиться

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

Зачем вообще

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

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

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

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

Ход событий - это закон, а манифест - наше дело

Информация в паспорте продукта может изменяться: ремонт, новая доля вторичного сырья, отзыв продукции. Поэтому требования предписывают, чтобы предыдущие версии оставались доступными: стандарт хранения фиксирует каждую версию, а стандарт интерфейсов предусматривает возможность целенаправленного просмотра любой версии. Что остаётся нерегламентированным в этих требованиях, так это промежуточный элемент: список, связывающий все версии паспорта в единую историю. Transpareo публикует его для каждого паспорта в виде манифеста, подписанного и с каждой версией, привязанной к своей предшественнице с помощью «отпечатка». Таким образом, «машина времени» пролистывает историю продукта, и читатель проверяет не только подлинность версии, но и то, что она является актуальной частью непрерывной цепочки.

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

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

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

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

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

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

Сам перенос не является проектом. « Transpareo Time Machine » представляет собой статический пакет: достаточно один раз создать его, скопировать на любой веб-сервер - и всё готово. Дизайн, который вы настроили в Transpareo для своих паспортов, передаётся в виде опубликованной таблицы стилей вместе с каждым паспортом. Таким образом, вид паспорта, к которому привыкли ваши клиенты, будет выглядеть точно так же на вашем собственном сервере - включая цвета, шрифт и логотип.

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

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

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

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

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

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

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

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

О том, как интегрировать приложение - будь то с помощью одной строки на странице, в виде пакета в собственном приложении или полностью на собственном хостинге, - подробно описано в файле README на этом ресурсе. Там же вы найдёте сопутствующий компонент для проверки подписи, который работает в режиме реального времени на сайте Проверка DPP.

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

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

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

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

ЕС требует, чтобы паспорт продукта . Для многих продуктов этот срок составляет десять лет и более, а срок деятельности поставщика 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 - включая архитектуру фронтенда (собственное реактивное ядро, отсутствие внешних фреймворков) и инструкции по сборке для самостоятельного хостинга.

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

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