Машина часу для DPP

Уявіть, що ви тримаєте в руках товар і скануєте QR-код на ньому. Замість PDF-файлу відкривається невеликий додаток. Ви бачите товар у реальному часі: з чого він складається, звідки походить, на що слід звернути увагу. Одним рухом пальця ви перегортаєте сторінки в минуле - можна переглянути кожну версію, яка коли-небудь виходила.

Це - Transpareo Time Machineнаш відкритий споживчий додаток для будь-якого цифрового паспорта продукту. Код розміщений під ліцензією GPL v3 на GitHub. Проєкт 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. Обидва підписи мають бути перевірені, щоб значок став зеленим. Завдяки технології «Bring Your Own Key» (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

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