Stroj časa za DPP-je

Predstavljajte si, da držite izdelek v roki in skenirate QR-kodo na njem. Namesto datoteke PDF se odpre majhna aplikacija. Vidite izdelek v sedanjosti: iz česa je narejen, od kod prihaja, na kaj je treba paziti. Z enim potegom prsta se pomaknete nazaj v čas - ogledate si lahko vsako različico, ki je bila kdaj koli objavljena.

Prav to lahko zdaj preizkusite: Demo⁠ prikazuje popoln produktni potni list s primerjalnimi podatki.

To je Transpareo Time Machine, naša odprtokodna potrošniška aplikacija za vsak digitalni potni list izdelka. Koda je na voljo pod licenco GPL v3 na GitHubu⁠.

Razvijamo jo, ker je bila uredba EU o digitalnem potrdilu o izdelku napisana za potrošnike - za osebo, ki drži izdelek v rokah. Večina ponudnikov iz tega naredi obrazec za skladnost, ki ga nihče ne pregleda dvakrat. Mi pa iz tega naredimo aplikacijo, ki jo potrošnik tudi odpre.

Kaj počne aplikacija

Štiri točke stika z vidika osebe, ki drži izdelek v roki. Brez prijave, brez namestitve aplikacije.

1

Skeniranje

QR-kodo skenirajte s kamero pametnega telefona. Aplikacija se odpre v brskalniku.

2

Oglej si novice

Izdelek v sedanjosti - sestavine, materiali, poreklo, vzdrževanje, recikliranje.

3

Listati po zgodovini

Z enim potegom se pomaknete nazaj v čas. Vsaka prejšnja različica z datumom in razlogom za spremembo.

4

Deliti

Vsaka različica ima svojo povezavo. Uporabnik določeno različico deli s prijatelji ali pristojnimi organi.

Zakaj sploh

Uredba EU o digitalnem potnem listu izdelka predstavlja največji premik v smeri preglednosti izdelkov v zadnjih desetletjih. Če pozorno preberemo temeljne besedila, je jasno, da je napisana izrecno za potrošnike. Pristojni organi, podjetja za recikliranje in servisi se temu prilagajajo, vendar je glavni naslovnik tisti, ki ima izdelek v rokah.

Številčno je stvar jasna. Povprečen evropski posameznik bo do konca desetletja lahko letno skeniral od nekaj deset do nekaj sto potrdil o izdelku. Če to preračunamo na 200 milijonov gospodinjstev, to pomeni milijarde interakcij s potrošniki letno. Svet organov in podjetij za recikliranje je v primerjavi s tem številčno zanemarljivo majhen.

Če naj uredba doseže potrošnike, mora biti potrošniška stran dobro zasnovana - hitra, privlačna in koherentna. Sicer ne bo dosegla svojega namena. Odločili smo se, da bomo to potrošniško stran razvili kot odprtokodno, da ne bo odvisna od enega samega ponudnika.

Preverjeno v brskalniku, ne na našem strežniku

Na vrhu vsakega potrdila o izdelku se prikaže nalepka: »Preverjeno s strani Transpareo«. Ta prikazuje rezultat preverjanja, ki ne poteka na našem strežniku, temveč v brskalniku obiskovalca - na podlagi naloženih bajtov in javnih ključev proizvajalca.

Vsako različico DPP podpišeta dve neodvisni strani: proizvajalec in Transpareo. Obe podpisni morata biti preverljivi, da se oznaka obarva zeleno. S sistemom »Bring Your Own Key« (BYOK) proizvajalec upravlja lastno končno točko za podpisovanje - Transpareo nikoli ne hrani zasebnega ključa, temveč le doda neodvisni nasprotni podpis. Tako nastane podpis izdajatelja, ki ga Transpareo sam ne more ustvariti. Kompromitiran strežnik ne more ponarediti kljukice, saj preverjanje poteka pri obiskovalcu samem.

Kdor želi natančne podatke, klikne na plaketo. Za njo boste videli verigo podpisov, hash vrednosti in verigo zgodovine različic. Kdor želi le informacijo, to preprosto prezre in nadaljuje z branjem v potrdilu o izdelku.

Enako preverjanje je na voljo tudi kot samostojna stran: na strani DPP-verifikacije vnesite URL manifestnega datoteka katerega koli potrdila o izdelku in si oglejte celoten rezultat preverjanja - brez da bi morali odpreti samo potrdilo.

Kodo objavljamo

Transpareo Time Machine je na voljo pod licenco GPL v3 na GitHubu⁠. Kloniranje, razvejanje, lastno gostovanje - vse je dovoljeno. Objavljene spremembe morajo biti prav tako pod licenco GPL v3, da bo vsak nadaljnji razvoj v korist širše javnosti.

Trije načini za vključitev paketa:

  • Prek skriptnega oznake: vstavite <script> in <transpareo-time-machine src="…"> v stran, in to je vse - brez koraka sestavljanja.
  • Prek npm: npm install transpareo-time-machine v lastni aplikaciji.
  • Samostojno gostovanje: sestavite paket, uporabite lastno infrastrukturo, brez odvisnosti od tretjih strani med izvajanjem.

Kdor potrebuje le preverjanje podpisa brez celotnega prikaza izdelka, uvozi sestrski element <dpp-verifier> - idealno za orodja revizorjev. V živo si lahko ogledate na DPP-verifikaciji.

Kdo aplikacijo uporablja smiselno

Aplikacija je bila prvotno razvita za potrošnike. Vendar jo lahko uporabljajo vsi, ki želijo samostojno pregledati ali preveriti podatke o izdelku.

  • Končni potrošniki skenirajo, pregledujejo, listajo in delijo. Brez prijave, brez sledilcev.
  • Organi za nadzor trga in pristojni organi si lahko ogledajo potrdilo o izdelku v programski opremi, katere izvorna koda je javno pregledljiva.
  • Serviserji in podjetja za recikliranje vidijo sestavo materialov in navodila za razstavljanje neposredno na izdelku.
  • Blagovne znamke in upravljavci platform prilagodijo paket svoji blagovni znamki - CSS-žetoni, lastne komponente, lastno gostovanje.

Kaj se bo zgodilo, če Transpareo ne bo več obstajal?

EU zahteva, da mora registrirani produktni potni list ostati na voljo vsaj deset let - tudi po stečaju ali likvidaciji proizvajalca. Ponudnik storitev SaaS redko obstaja tako dolgo. Zato platformo že od samega začetka gradimo tako, da bodo produktni potni listi ostali uporabni neodvisno od nas:

  • Vsaka podpisana različica DPP se nahaja v javno dostopnem pomnilniku. Bajtov in objavljenih javnih ključev je dovolj za poznejšo verifikacijo.
  • Takoj ko so produktni potni listi registrirani v registru EU, drugi, za pisanje zaščiten pomnilnik še dodatnih deset let shranjuje vsako različico DPP in dnevnik dogodkov. Nihče - niti mi - ne more naknadno spreminjati teh kopij.
  • Po prekinitvi naročnine ostanejo kratke URL-je potrdil o izdelku dostopne prek preusmeritve na platformi Transpareo.
  • Transpareo Time Machine deluje nespremenjeno tudi na arhiviranih podatkih. Paket nas med izvajanjem ne pokliče nazaj; potrebuje le bajte in ključe.

Če bi platforma Transpareo jutri izginila, bi ostale različice DPP in odprtokodni renderer.

Za tiste, ki jih zanima tehnologija

Tukaj je opisano, kaj se dogaja v ozadju. Če vam podrobnosti niso potrebne, lahko ta del preskočite - aplikacija bo delovala tudi brez tega.

  • GS1 Digital Link (ISO/IEC 18975): URL potrdila o izdelku vsebuje identifikacijo izdelka v standardizirani obliki - neodvisno od resolverja in zamenljivo med ponudniki.
  • JSON Canonicalization Scheme (RFC 8785): deterministična serializacija. Tako ostane hash reproduktiven ne glede na vrstni red polj ali presledke - vsakdo ga lahko sam ponovno izračuna.
  • W3C Data Integrity Proofs (eddsa-jcs-2022): Ed25519-podpis prek kanonizirane oblike (JCS).
  • /.well-known/dpp-keys/ (RFC 8615): javni ključi izdajateljev so na standardizirani poti - ni potreben klic na Transpareo, vsak preveritelj jih najde sam.

Vse je dokumentirano v README na GitHubu⁠ - vključno z arhitekturo frontenda (lastno reaktivno jedro, brez zunanjih okvirov) in navodili za sestavo za samostojno gostovanje.

Oglej si kodo na GitHubu

Celotno izvorno besedilo, vse izdaje in razpravo o težavi najdete v javnem repozitoriju.