Stroj času pre DPP

Predstavte si, že držíte v ruke nejaký produkt a naskenujete QR kód, ktorý je na ňom. Namiesto súboru PDF sa otvorí malá aplikácia. Uvidíte produkt v súčasnosti: 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 zverejnená.

Presne to si teraz môžete vyskúšať: Demo⁠ ukazuje kompletný produktový pas s ukážkovými údajmi.

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 výrobku bolo napísané pre spotrebiteľov - pre osobu, ktorá drží výrobok v ruke. Väčšina poskytovateľov z neho robí formulár na splnenie požiadaviek, ktorý si nikto neprečíta ani dvakrát. My z neho robíme aplikáciu, ktorú spotrebiteľ skutočne otvorí.

Č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 a 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.

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 kontroly, 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 výrobcu.

Každú verziu DPP podpisujú dve navzájom nezávislé strany: výrobca a Transpareo. Oba podpisy musia byť overiteľné, aby sa nálepka zmenila na zelenú. Vďaka funkcii „Bring Your Own Key“ (BYOK) prevádzkuje výrobca 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ý spoločnosť Transpareo sama nemôže vytvoriť. Kompromitovaný server nemôže falšovať zaškrtnutie, pretože overenie prebieha priamo u návštevníka.

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

Toto isté overenie je k dispozícii aj ako samostatná stránka: Na stránke overenia DPP zadáte URL manifestu ľubovoľného produktového pasu a uvidíte kompletný výsledok overenia - 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⁠. Klonovanie, vytváranie forkov, vlastné hosťovanie - všetko je povolené. Zverejnené úpravy musia byť tiež pod licenciou GPL v3, aby každý ďalší vývoj slúžil verejnosti.

Tri spôsoby, ako integrovať balík:

  • Pomocou skriptovej značky: stačí vložiť do stránky <script> a <transpareo-time-machine src="…"> - hotovo, bez nutnosti kompilácie.
  • Prostredníctvom npm: npm install transpareo-time-machine vo vašej vlastnej aplikácii.
  • Vlastné hosťovanie: zostavenie balíka, vlastná infraštruktúra, žiadne závislosti od tretích strán počas behu.

Kto potrebuje len overenie podpisu bez úplného zobrazenia produktu, môže importovať sesterský prvok <dpp-verifier> - ideálne pre audítorské nástroje. Naživo si to môžete pozrieť na overení 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 insolventnosti alebo likvidácii výrobcu. 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.
  • Akonáhle sú produktové pasy zaregistrované v registri EÚ, druhé úložisko chránené proti zápisu zrkadlí 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 nevyvoláva 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.