Машина на времето за DPP

Представете си, че държите даден продукт в ръка и сканирате QR кода върху него. Вместо PDF файл се отваря малко приложение. Виждате продукта в настоящия момент: от какво е направен, откъде идва, какво трябва да се има предвид. С едно плъзгане с пръст се връщате назад във времето - можете да разгледате всяка версия, която някога е била публикувана.

Това е Transpareo Time Machine - нашето приложение с отворен код за потребители, предназначено за всеки цифров продуктов паспорт. Кодът е публикуван под лиценз GPL v3 в GitHub.

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

Вижте сами

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

Какво прави приложението

Четири точки на взаимодействие от гледна точка на човека, който държи продукта в ръка. Без влизане в профил, без инсталиране на приложение.

1

Сканиране

Сканирайте QR-кода с камерата на смартфона си. Приложението ще се отвори в браузъра.

2

Виж актуалните новини

Продуктът се представя в настоящето - съставки, материали, произход, грижа, рециклиране.

3

Да разгледаме историята

С едно плъзгане назад се преминава назад във времето. Всяка предишна версия с дата и повод за промяната.

4

Сподели

Всяка версия има своя собствена връзка. Даден потребител споделя конкретна версия с приятели или с държавните органи.

Защо изобщо

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

От гледна точка на цифрите нещата са ясни. Към края на десетилетието средностатистическият европейски гражданин ще може да сканира от десетки до стотици продуктови паспорти годишно. При 200 милиона домакинства това означава милиарди взаимодействия с потребителите годишно. В сравнение с това светът на властите и рециклиращите фирми е числово незначителен.

Ако регламентът трябва да достигне до потребителите, тогава потребителският портал трябва да бъде добре изграден - бърз, атрактивен, логичен. В противен случай той няма да постигне целта си.

Решихме да изградим този потребителски портал като софтуер с отворен код, за да не зависи от един-единствен доставчик.

Ходът на събитията е предписан, манифестът е наш

Данните в продуктовия паспорт се променят: ремонт, нова квота за рециклиране, отзоваване. Затова изискванията налагат предишните версии да останат достъпни: стандартът за съхранение фиксира всяка версия, а стандартът за интерфейсите предвижда, че всяка версия може да бъде прочетена целенасочено. Това, което изискванията оставят отворено, е частта между тях: списък, който свързва всички версии на един паспорт в една история. Transpareo го публикува за всеки паспорт като манифест, подписан, като всяка версия е свързана чрез „отпечатък“ с предходната. По този начин „машината на времето“ прелиства историята на един продукт, а читателят проверява не само дали дадена версия е автентична, но и дали тя е най-актуалната от непрекъсната поредица.

Приложението обаче не се придържа стриктно към това. Ако вместо манифеста му се покаже отделен паспорт, какъвто всеки доставчик публикува съгласно отворените стандарти, то показва тази версия, проверява нейния подпис, ако има такъв, и просто пропуска времевата линия. Паспорт без подпис не се счита за грешка, а просто се показва без печат за проверка. По същия начин същото приложение визуализира и паспорти, които никога не са били регистрирани в Transpareo.

Смяна на доставчика без прекъсване

Регламентът на ЕС за цифровия паспорт на продукта изисква паспортите на продуктите да бъдат съвместими и основани на отворени стандарти - да могат да се прехвърлят между услуги и системи, вместо да са обвързани с един-единствен доставчик. Независимостта от доставчика на услугите следователно не е допълнение, а част от изискването.

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

Отговорен за продуктовия паспорт е икономически субект - производителят, вносителят или упълномощен представител. Ако той реши да напусне Transpareo и да премине към друг доставчик, представянето остава стабилно: вече публикуваните версии, заедно с историята, продължават да се показват без промяна от същия рендер с отворен код, а нов доставчик, който използва същите отворени стандарти, се представя от точно същото приложение.

Данните се прехвърлят заедно с него, потребителите не забелязват никаква промяна и никой не трябва да чака миграция.

Самото преместване не е проект. Transpareo Time Machine е статичен пакет: веднъж създаден, копиран на произволен уеб сървър - готово. Дизайнът, който сте настроили в Transpareo за вашите паспорти, се пренася като публикуван стилов лист с всеки паспорт. Изгледът на паспорта, към който вашите клиенти са свикнали, изглежда точно така и на вашия собствен сървър, включително цветовете, шрифтовете и логото.

Проверено в браузъра, а не на нашия сървър

В горната част на всеки продуктов паспорт се появява етикет: „Проверено от Transpareo“. Той показва резултата от проверка, която не се извършва на нашия сървър, а в браузъра на посетителя - въз основа на заредените байтове и публичните ключове на издателя.

Всяка версия на DPP се подписва от два независими един от друг субекта: издателят и Transpareo. И двата подписа трябва да могат да бъдат проверени, за да стане значката зелена. С помощта на Bring Your Own Key (BYOK) издателят управлява собствен краен пункт за подписване - Transpareo никога не съхранява частния ключ и добавя само независимия контраподпис. По този начин се създава подпис на издателя, който Transpareo само по себе си не може да генерира.

Компрометиран сървър не може да фалшифицира отметката, тъй като проверката се извършва от самия посетител.

Който иска да знае повече, кликва върху значката. Зад нея ще видите веригата от подписи, хеш-сумите и верижната история на версиите. Който иска само информацията, просто я игнорира и продължава да чете продуктовия паспорт.

Същата проверка съществува и като самостоятелна страница: на Проверка на DPP въведете URL адреса на манифеста на произволен продуктов паспорт и ще видите пълния резултат от проверката - без да отваряте самия паспорт.

Публикуваме кода

Transpareo Time Machine е под лиценз GPL v3 в GitHub. Публикуваните модификации трябва да бъдат също под лиценз GPL v3, за да може всяко по-нататъшно развитие да бъде в полза на обществото.

Клониране, форкване, самостоятелно хостинг - всичко е позволено.

Как да интегрирате приложението - дали с един ред код в страницата, като пакет във вашето приложение или изцяло самостоятелно хоствано - е описано в README там. Там ще намерите и съпътстващия компонент за проверка само на подписи, който работи на живо на Проверка на DPP.

Кой използва приложението по предназначение

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

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

Какво ще стане, ако „Транспарео“ вече не съществува

ЕС изисква регистрираният продуктов паспорт да остава достъпен поне десет години - дори и след фалит или ликвидация на издателя. Доставчикът на SaaS рядко просъществува толкова дълго. Ето защо изграждаме платформата от самото начало така, че продуктовите паспорти да останат достъпни независимо от нас:

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

Дори ако платформата Transpareo изчезне утре, версиите на DPP и рендерерът с отворен код ще останат.

За любопитните в областта на технологиите

Ето какво се случва „под капака“. Ако не ви е необходимо да знаете това в подробности, можете да пропуснете този раздел - приложението ще работи и без това.

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

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

Виж кода в GitHub

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