Stroj času pre DPP

Predstavte si, že držíte v ruke nejaký výrobok a naskenujete QR kód, ktorý je na ňom. Namiesto súboru PDF sa otvorí malá aplikácia. Uvidíte informácie o výrobku v reálnom čase: z čoho sa skladá, odkiaľ pochádza, na čo je potrebné dávať pozor. Jedným potiahnutím prsta sa vrátite späť v čase - môžete si prezrieť každú verziu, ktorá kedy bola vydaná.

To je Transpareo Time Machine, naša open-source aplikácia pre spotrebiteľov určená pre každý digitálny pas produktu. Kód je k dispozícii pod licenciou GPL v3 na GitHub.

Vytvárame ju, pretože nariadenie EÚ o digitálnom pasu produktu bolo napísané pre spotrebiteľov - pre osobu, ktorá drží produkt v ruke. Väčšina poskytovateľov z neho robí formulár na splnenie požiadaviek, ktorý si nikto neprečíta dvakrát. My z neho robíme aplikáciu, ktorú spotrebiteľ skutočne otvorí.

Presvedčte sa sami

Ukážkové produktové pasy sú kompletné a obsahujú fiktívne údaje: prejdite si históriu verzií a otvorte kontrolnú nálepku - priamo v prehliadači, bez nutnosti registrácie.

Čo táto aplikácia robí

Štyri kontaktné body z pohľadu osoby, ktorá drží produkt v ruke. Bez prihlásenia, bez inštalácie aplikácie.

1

Skenovanie

Naskenujte QR kód pomocou fotoaparátu v smartfóne. Aplikácia sa otvorí v prehliadači.

2

Zobraziť novinky

Produkt sa objavuje v prítomnosti - zložky, materiály, pôvod, údržba, recyklácia.

3

Prehliadať históriu

Jedným potiahnutím prsta sa vrátite späť v čase. Každá predchádzajúca verzia s dátumom a dôvodom zmeny.

4

Zdieľať

Každá verzia má svoj vlastný odkaz. Používateľ zdieľa konkrétnu verziu s priateľmi alebo úradmi.

Prečo vlastne

Nariadenie EÚ o digitálnom pase výrobku predstavuje najväčší posun smerom k transparentnosti výrobkov za posledné desaťročia. Ak si pozorne prečítate príslušné texty, zistíte, že je výslovne určené spotrebiteľom. Úrady, recyklačné spoločnosti aj servisné dielne sa k tomu prispôsobujú, ale primárnym adresátom je osoba, ktorá má výrobok v rukách.

Z hľadiska čísel je situácia jednoznačná. Priemerný európsky občan bude na konci tohto desaťročia môcť ročne naskenovať desiatky až stovky pasov výrobkov. Pri 200 miliónoch domácností to predstavuje miliardy interakcií so spotrebiteľmi ročne. Svet úradov a recyklačných spoločností je v porovnaní s tým z hľadiska čísel zanedbateľne malý.

Ak má nariadenie osloviť spotrebiteľa, musí byť spotrebiteľská stránka dobre navrhnutá - rýchla, pekná a prehľadná. Inak nesplní svoj účel.

Rozhodli sme sa vytvoriť túto spotrebiteľskú stránku ako open source, aby nebola závislá od jediného poskytovateľa.

Postup je predpísaný, manifest je náš

Údaje v pase výrobku sa menia: oprava, nový podiel recyklátu, stiahnutie z trhu. Predpisy preto vyžadujú, aby boli predchádzajúce verzie naďalej dostupné: norma týkajúca sa ukladania údajov zmrazuje každú verziu, norma týkajúca sa rozhraní stanovuje, že každú verziu je možné cielene prečítať. Čo predpisy neriešia, je to, čo je medzi tým: zoznam, ktorý spája všetky verzie pasu do jedného príbehu. Spoločnosť Transpareo ho k každému pasu zverejňuje ako manifest, podpísaný, pričom každá verzia je prostredníctvom „odtlačku“ prepojená so svojou predchádzajúcou verziou. Vďaka tomu sa „stroj času“ prechádza históriou produktu a čitateľ overuje nielen to, či je verzia autentická, ale aj to, či je aktuálnou verziou v nepretržitej postupnosti.

Aplikácia však na tom netrvá. Ak jej namiesto manifestu ukážete jediný pas, aký zverejňuje každý poskytovateľ podľa otvorených štandardov, zobrazí túto jednu verziu, overí jej podpis, ak ho má, a časovú os jednoducho vynechá. Certifikát bez podpisu sa nepovažuje za chybu, ale jednoducho sa zobrazí bez pečate overenia. Takto tá istá aplikácia zobrazuje aj certifikáty, ktoré nikdy neboli zaregistrované v Transpareo.

Zmena poskytovateľa bez prerušenia

Nariadenie EÚ o digitálnom pasu výrobku vyžaduje, aby boli pasy výrobkov interoperabilné a založené na otvorených štandardoch - aby boli prenosné medzi službami a systémami, a nie viazané na jedného poskytovateľa. Nezávislosť od poskytovateľa služieb teda nie je doplnkom, ale súčasťou požiadavky.

Transpareo Time Machine je riešením, ktoré túto požiadavku konkrétne napĺňa. Keďže každý pas výrobku je dodávaný v otvorených štandardoch - identifikácia nezávislá od resolvera, kanonická serializácia, verejne zverejnené kľúče - a renderer je open source pod licenciou GPL v3, zobrazenie pasu nikdy nezávisí od našej platformy.

Za produktový pas zodpovedá hospodársky subjekt - výrobca, dovozca alebo splnomocnenec. Ak sa rozhodne opustiť Transpareo a prejsť k inému poskytovateľovi, zobrazenie zostane stabilné: už zverejnené verzie vrátane histórie bude ten istý renderer s otvoreným zdrojovým kódom naďalej zobrazovať bez zmien a nový poskytovateľ, ktorý používa tie isté otvorené štandardy, bude zobrazený presne tou istou aplikáciou.

Údaje sa prenesú spolu s ním, spotrebitelia nezaznamenajú žiadnu zmenu a nikto nemusí čakať na migráciu.

Samotný presun nie je projektom. Transpareo Time Machine je statický balík: stačí ho raz vytvoriť, skopírovať na ľubovoľný webový server a hotovo. Dizajn, ktorý ste v Transpareo nastavili pre svoje pasy, sa prenáša ako zverejnený štýlový list spolu s každým pasom. Zobrazenie pasu, na ktoré si vaši zákazníci zvykli, teda vyzerá na vašom vlastnom serveri presne rovnako, vrátane farieb, písma a loga.

Overené v prehliadači, nie na našom serveri

V hornej časti každého produktového pasu sa zobrazuje nálepka: Overené spoločnosťou Transpareo. Ukazuje výsledok overenia, ktoré neprebieha na našom serveri, ale v prehliadači návštevníka - na základe načítaných bajtov a verejných kľúčov vydavateľa.

Každú verziu DPP podpisujú dve navzájom nezávislé strany: vydavateľ a Transpareo. Oba podpisy musia byť overiteľné, aby sa štítok zmenil na zelený. V rámci systému „Bring Your Own Key“ (BYOK) prevádzkuje vydavateľ vlastný podpisový koncový bod - spoločnosť Transpareo nikdy neuchováva súkromný kľúč a dopĺňa iba nezávislý protipodpis. Tak vzniká podpis vydavateľa, ktorý samotná spoločnosť Transpareo nedokáže vygenerovať.

Kompromitovaný server nemôže falšovať zaškrtnutie, pretože overenie prebieha priamo u návštevníka.

Kto chce vedieť viac, klikne na značku. Za ňou uvidíte reťazec podpisov, hashové hodnoty a prepojenú históriu verzií. Kto chce len informácie, jednoducho to ignoruje a pokračuje v čítaní produktového pasu.

Tú istú kontrolu nájdete aj na samostatnej stránke: Na adrese Overenie DPP zadajte URL manifestu ľubovoľného produktového pasu a uvidíte kompletný výsledok kontroly - bez toho, aby ste museli otvárať samotný pas.

Kód zverejňujeme

Transpareo Time Machine je k dispozícii pod licenciou GPL v3 na GitHub. Zverejnené úpravy musia byť tiež pod licenciou GPL v3, aby každý ďalší vývoj slúžil verejnosti.

Klonovanie, fork, vlastné hosťovanie - všetko je povolené.

Ako aplikáciu integrovať - či už pomocou jedného riadku na stránke, ako balík vo vlastnej aplikácii alebo úplne vlastným hosťovaním - nájdete v súbore README na uvedenej stránke. Nájdete tam aj sesterský prvok určený výlučne na overovanie podpisov, ktorý beží naživo na adrese Overenie DPP.

Kto túto aplikáciu využíva zmysluplne

Aplikácia je primárne určená pre spotrebiteľov. Funguje však pre všetkých, ktorí si chcú nezávisle prezrieť alebo overiť údaje o produkte.

  • Koneční spotrebitelia skenujú, prezerajú, listujú a zdieľajú. Bez prihlásenia, bez sledovacích nástrojov.
  • Orgány dohľadu nad trhom a úradné orgány vidia pas produktov v softvéri, ktorého zdrojový kód je verejne kontrolovateľný.
  • Servisy a recyklačné spoločnosti vidia zloženie materiálu a pokyny na demontáž priamo na produkte.
  • Značky a prevádzkovatelia forkov prispôsobujú balík svojej vlastnej značke - CSS tokeny, vlastné komponenty, vlastné hosťovanie.

Čo sa stane, ak Transpareo už nebude existovať

EÚ vyžaduje, aby bol registrovaný produktový pas dostupný minimálne desať rokov - aj po bankrote alebo likvidácii vydavateľa. Poskytovateľ služieb typu SaaS zriedka vydrží tak dlho. Preto od začiatku budujeme platformu tak, aby boli produktové pasy použiteľné nezávisle od nás:

  • Každá podpísaná verzia DPP je uložená vo verejne prístupnom úložisku. Bajtové údaje spolu so zverejnenými verejnými kľúčmi stačia na neskoršiu verifikáciu.
  • Hneď ako sú produktové pasy zaregistrované v registri EÚ, druhé úložisko chránené proti zápisu uchováva každú verziu DPP a protokol udalostí ešte ďalších desať rokov. Nikto - ani my - nemôže tieto zrkadlové kópie dodatočne meniť.
  • Po ukončení zmluvy zostanú krátke URL adresy produktových pasov dostupné prostredníctvom presmerovania na platforme Transpareo.
  • Transpareo Time Machine funguje bez zmien aj s archivovanými údajmi. Balík nás počas behu nevolá späť; potrebuje len bajty a kľúče.

Ak by platforma Transpareo zajtra zmizla, zostali by verzie DPP a renderer s otvoreným zdrojovým kódom.

Pre tých, ktorí sa zaujímajú o techniku

Tu je vysvetlenie toho, čo sa deje „pod kapotou“. Ak to nemusíte vedieť podrobne, môžete túto časť preskočiť - aplikácia bude fungovať aj tak.

  • GS1 Digital Link (ISO/IEC 18975): URL produktového pasu obsahuje identifikáciu produktu v štandardizovanej forme - nezávislá od resolvera, zameniteľná medzi poskytovateľmi.
  • JSON Canonicalization Scheme (RFC 8785): Deterministická serializácia. Vďaka tomu zostáva hash reprodukovateľný nezávisle od poradia polí alebo medzier - každý si ho môže sám prepočítať.
  • W3C Data Integrity Proofs (eddsa-jcs-2022): Ed25519 podpis nad kanonizovanou formou (JCS).
  • /.well-known/dpp-keys/ (RFC 8615): Verejné kľúče vydavateľov sa nachádzajú na štandardizovanej ceste - nie je potrebné kontaktovať Transpareo, každý overovateľ si ich nájde sám.

Všetko je zdokumentované v README na GitHub - vrátane architektúry frontendu (vlastné reaktívne jadro, žiadne externé frameworky) a návodu na kompiláciu pre vlastné hosťovanie.

Zobraziť kód na GitHub-e

Úplný zdrojový kód, všetky verzie a diskusiu o probléme nájdete vo verejnom repozitári.