Stroj času pro DPP

Představte si, že držíte v ruce nějaký výrobek a naskenujete QR kód, který je na něm vyobrazen. Místo souboru PDF se otevře malá aplikace. Uvidíte informace o výrobku v reálném čase: z čeho se skládá, odkud pochází, na co je třeba dávat pozor. Jedním přejetím prstem se vrátíte zpět v čase - můžete si prohlédnout každou verzi, která kdy byla vydána.

Právě to si nyní můžete vyzkoušet: Demo⁠ ukazuje kompletní produktový pas s ukázkovými údaji.

To je Transpareo Time Machine, naše open-source aplikace pro spotřebitele určená pro každý digitální produktový pas. Kód je k dispozici pod licencí GPL v3 na GitHubu⁠.

Vytváříme ji, protože nařízení EU o digitálním pasu produktu bylo napsáno pro spotřebitele - pro osobu, která produkt drží v ruce. Většina poskytovatelů z něj dělá formulář pro splnění předpisů, který nikdo dvakrát neprohlíží. My z něj děláme aplikaci, kterou spotřebitel skutečně otevře.

Co aplikace dělá

Čtyři kontaktní body z pohledu osoby, která drží produkt v ruce. Bez přihlášení, bez instalace aplikace.

1

Skenování

Naskenujte QR kód fotoaparátem smartphonu. Aplikace se otevře v prohlížeči.

2

Zobrazit novinky

Produkt se objevuje v přítomnosti - součásti, materiály, původ, údržba, recyklace.

3

Procházet historii

Jedním přejetím prstem se vrátíte zpět v čase. Zobrazí se všechny předchozí verze s datem a důvodem změny.

4

Sdílet

Každá verze má svůj vlastní odkaz. Uživatel sdílí konkrétní verzi s přáteli nebo úřady.

Proč vůbec

Nařízení EU o digitálním pasu výrobku představuje největší posun směrem k transparentnosti výrobků za poslední desetiletí. Pokud si pozorně přečteme příslušné texty, je zřejmé, že je výslovně určeno spotřebitelům. Úřady, recyklační firmy i servisy se k tomu připojují, ale primárním adresátem je ten, kdo má produkt v ruce.

Z hlediska čísel je situace jednoznačná. Průměrný evropský spotřebitel bude na konci tohoto desetiletí schopen naskenovat desítky až stovky produktových pasů ročně. Při 200 milionech domácností to znamená miliardy interakcí se spotřebiteli ročně. Svět úřadů a recyklačních firem je v porovnání s tím z hlediska počtu zanedbatelně malý.

Má-li se nařízení dostat ke spotřebitelům, musí být stránka pro spotřebitele dobře navržená - rychlá, přehledná a logická. Jinak nesplní svůj účel. Rozhodli jsme se tuto stránku pro spotřebitele vytvořit jako open source, aby nebyla závislá na jediném poskytovateli.

Ověřeno v prohlížeči, nikoli na našem serveru

V horní části každého produktového pasu se zobrazuje štítek: „Ověřeno společností Transpareo“. Ukazuje výsledek kontroly, která neprobíhá na našem serveru, ale v prohlížeči návštěvníka - na základě načtených bajtů a veřejných klíčů výrobce.

Každou verzi DPP podepisují dvě navzájem nezávislé strany: výrobce a Transpareo. Aby se štítek zbarvil zeleně, musí být možné ověřit oba podpisy. Díky funkci „Bring Your Own Key“ (BYOK) provozuje výrobce vlastní podpisový koncový bod - společnost Transpareo nikdy neuchovává soukromý klíč a pouze doplňuje nezávislý protipodpis. Tak vzniká podpis vydavatele, který společnost Transpareo sama nemůže vygenerovat. Napadený server nemůže zaškrtnutí zfalšovat, protože ověření probíhá přímo u návštěvníka.

Kdo chce vědět přesně, klikne na značku. Za ní uvidíte řetězec podpisů, hashové hodnoty a řetězcovou historii verzí. Kdo chce pouze informaci, jednoduše to ignoruje a čte dál v produktovém pasu.

Stejná kontrola je k dispozici i jako samostatná stránka: Na stránce ověření DPP vložíte URL manifestu libovolného produktového pasu a uvidíte kompletní výsledek kontroly - aniž byste museli pas samotný otevírat.

Kód zveřejňujeme

Transpareo Time Machine je k dispozici pod licencí GPL v3 na GitHubu⁠. Klonování, vytváření forků, vlastní hostování - vše je povoleno. Zveřejněné úpravy musí být rovněž licencovány pod GPL v3, aby každý další vývoj sloužil široké veřejnosti.

Tři způsoby, jak balíček integrovat:

  • Pomocí skriptového tagu: stačí do stránky vložit <script> a <transpareo-time-machine src="…"> - hotovo, bez nutnosti kompilace.
  • Pomocí npm: npm install transpareo-time-machine ve vlastní aplikaci.
  • Vlastní hostování: sestavení balíčku, vlastní infrastruktura, žádné závislosti na třetích stranách při běhu.

Kdo potřebuje pouze ověření podpisu bez úplného zobrazení produktu, importuje sesterský prvek <dpp-verifier> - ideální pro nástroje auditorů. Naživo k vidění na ověření DPP.

Kdo tuto aplikaci využívá smysluplně

Aplikace je primárně určena pro spotřebitele. Funguje však pro všechny, kteří si chtějí nezávisle prohlížet nebo ověřovat údaje o produktech.

  • Koneční spotřebitelé skenují, prohlížejí, listují, sdílejí. Žádné přihlašování, žádné sledovací soubory.
  • Orgány dohledu nad trhem a úřady si mohou prohlížet produktový pas v softwaru, jehož zdrojový kód je veřejně auditovatelný.
  • Servisy a recyklační firmy vidí složení materiálu a pokyny k demontáži přímo na produktu.
  • Značky a provozovatelé forků přizpůsobují balíček své vlastní značce - CSS tokeny, vlastní komponenty, vlastní hosting.

Co se stane, když Transpareo přestane existovat

EU vyžaduje, aby registrovaný produktový pas zůstal k dispozici po dobu nejméně deseti let - a to i po úpadku nebo likvidaci výrobce. Poskytovatel služeb SaaS však zřídka vydrží tak dlouho. Proto platformu od samého počátku budujeme tak, aby produktové pasy zůstaly použitelné nezávisle na nás:

  • Každá podepsaná verze DPP je uložena ve veřejně přístupném úložišti. Bajtové údaje spolu se zveřejněnými veřejnými klíči postačují k pozdější verifikaci.
  • Jakmile jsou produktové pasy zaregistrovány v registru EU, druhé úložiště s ochranou proti zápisu zrcadlí každou verzi DPP a protokol událostí po dobu dalších deseti let. Nikdo - ani my - nemůže tyto zrcadlené kopie dodatečně měnit.
  • Po ukončení smlouvy zůstanou krátké URL adresy produktových pasů dostupné prostřednictvím přesměrování na platformě Transpareo.
  • Transpareo Time Machine běží beze změn i s archivovanými daty. Balíček nás během běhu nevolá zpět; potřebuje pouze bajty a klíče.

Kdyby zítra platforma Transpareo zmizela, zůstaly by verze DPP a renderer s otevřeným zdrojovým kódem.

Pro ty, kteří se zajímají o technologie

Tady je vysvětleno, co se děje „pod kapotou“. Kdo to nemusí vědět do detailů, může tuto část přeskočit - aplikace bude fungovat i tak.

  • GS1 Digital Link (ISO/IEC 18975): URL produktového pasu obsahuje identifikaci produktu ve standardizované formě - nezávislé na resolveru, zaměnitelné mezi poskytovateli.
  • JSON Canonicalization Scheme (RFC 8785): Deterministická serializace. Díky tomu zůstává hash reprodukovatelný nezávisle na pořadí polí nebo mezerách - každý si jej může sám přepočítat.
  • W3C Data Integrity Proofs (eddsa-jcs-2022): Ed25519 podpis nad kanonizovanou formou (JCS).
  • /.well-known/dpp-keys/ (RFC 8615): Veřejné klíče vydavatelů se nacházejí pod standardizovanou cestou - není nutné kontaktovat Transpareo, každý ověřovatel je najde sám.

Vše je zdokumentováno v README na GitHubu⁠ - včetně architektury frontendu (vlastní reaktivní jádro, žádné externí frameworky) a návodu na sestavení pro vlastní hostování.

Zobrazit kód na GitHubu

Kompletní zdrojový kód, všechny verze a diskuzi k problémům najdete ve veřejném repozitáři.