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 uveden. 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.

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.

Přesvědčte se sami

Ukázka představuje kompletní produktové pasy s ukázkovými údaji: Projděte si historii verzí a otevřete kontrolní štítek - přímo v prohlížeči, bez nutnosti registrace.

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í. Je - pokud si pozorně přečteme příslušné texty - 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á výrobek v ruce.

Z hlediska čísel je situace jednoznačná. Průměrný evropský občan 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 k 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 vytvořit tuto stránku pro spotřebitele jako open source, aby nebyla závislá na jediném poskytovateli.

Průběh je předepsán, manifest je náš

Údaje v pasu výrobku se mění: oprava, nová míra recyklace, stažení z trhu. Předpisy proto vyžadují, aby byly dřívější verze nadále dostupné: norma pro ukládání dat zmrazuje každou verzi, norma pro rozhraní stanoví, že každou verzi lze cíleně načíst. Co však předpisy neřeší, je to, co leží mezi tím: seznam, který spojuje všechny verze pasu do jednoho příběhu. Transpareo jej ke každému pasu zveřejňuje jako manifest, podepsaný, přičemž každá verze je pomocí „otisku“ navázána na svou předchůdkyni. Díky tomu se „stroj času“ listuje historií produktu a čtenář ověřuje nejen to, že je daná verze autentická, ale také to, že se jedná o aktuální verzi v souvislé posloupnosti.

Aplikace se však na tom neupíná. Pokud jí místo manifestu ukážete jednotlivý pas, jaký zveřejňuje každý poskytovatel podle otevřených standardů, zobrazí tuto jednu verzi, ověří její podpis, pokud jej má, a časovou osu jednoduše vynechá. Certifikát bez podpisu není považován za chybu, ale je jednoduše zobrazen bez pečetě. Stejná aplikace tak zobrazuje i certifikáty, které nikdy nebyly v systému Transpareo.

Změna poskytovatele bez přerušení

Nařízení EU o digitálním pasu produktu vyžaduje, aby byly pasy produktů interoperabilní a založené na otevřených standardech - aby byly přenositelné mezi službami a systémy, nikoli vázané na jediného poskytovatele. Nezávislost na poskytovateli služeb tedy není doplňkem, ale součástí požadavku.

Transpareo Time Machine je řešením, které tuto specifikaci konkretizuje. Jelikož je každý produktový pas dodáván v otevřených standardech - identifikace nezávislá na resolveru, kanonická serializace, veřejně zveřejněné klíče - a renderer je open source pod licencí GPL v3, není zobrazení pasu nikdy závislé na naší platformě.

Za produktový pas odpovídá hospodářský subjekt - výrobce, dovozce nebo zmocněnec. Pokud se rozhodne opustit Transpareo a přejít k jinému poskytovateli, zobrazení zůstane stabilní: již zveřejněné verze včetně historie bude stejný open-source renderer i nadále zobrazovat beze změn a nový poskytovatel, který využívá stejné otevřené standardy, bude zobrazen přesně tou samou aplikací.

Data se přesouvají s ním, spotřebitelé nezaznamenají žádnou změnu a nikdo nemusí čekat na migraci.

Samotný přesun není žádný projekt. Transpareo Time Machine je statický balíček: stačí jej jednou sestavit, zkopírovat na libovolný webový server a je hotovo. Vzhled, který jste v Transpareo nastavili pro své pasy, se přenáší jako zveřejněný stylový list s každým pasem. Zobrazení pasu, na které si vaši zákazníci zvykli, tedy vypadá na vašem vlastním serveru úplně stejně, včetně barev, písma a loga.

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“. Uvádí 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íčů vydavatele.

Každou verzi DPP podepisují dvě navzájem nezávislé strany: vydavatel 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 vydavatel vlastní podpisový koncový bod - Transpareo nikdy neuchovává soukromý klíč a pouze doplňuje nezávislý protipodpis. Tak vzniká podpis vydavatele, který Transpareo samo o sobě nemůže vygenerovat.

Kompromitovaný 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ězenou 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 adrese 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. Zveřejněné úpravy musí být rovněž licencovány pod GPL v3, aby každý další vývoj sloužil široké veřejnosti.

Klonování, forkování, vlastní hostování - vše je povoleno.

Jak aplikaci integrovat, ať už pomocí jednoho řádku v stránce, jako balíček ve vlastní aplikaci nebo zcela na vlastním hostingu, najdete v souboru README na uvedeném odkazu. Najdete v něm také sesterský prvek pro čistou kontrolu podpisu, který běží živě na adrese 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 vydavatele. Poskytovatel služeb typu SaaS však málokdy 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. Bajtů a zveřejněných veřejných klíčů stačí 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.