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.

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 potnem listu izdelka napisana za potrošnike - za osebo, ki ima 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.

Prepričajte se sami

V demo verziji so prikazani popolni produktni potni listi s primerjalnimi podatki: preglejte zgodovino različic in odprite certifikat o pregledu - neposredno v brskalniku, brez ustvarjanja računa.

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 potrdilu o izdelku 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 tega desetletja lahko letno skeniral od nekaj deset do nekaj sto potrdil o izdelku. Glede 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 zanemarljiv.

Če naj uredba doseže potrošnike, mora biti potrošniška stran dobro zasnovana - hitra, privlačna in smiselna. 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.

Potek je predpisan, manifest pa smo sestavili mi

Podatki v potrdilu o izdelku se spreminjajo: popravilo, nova stopnja recikliranja, odpoklic. Zato predpisi zahtevajo, da morajo biti prejšnje različice še naprej dostopne: standard za shranjevanje zamrzne vsako različico, standard za vmesnike pa predvideva, da je vsako različico mogoče ciljno prebrati. Kar predpisi puščajo odprto, je del vmes: seznam, ki vse različice potrdila povezuje v eno zgodbo. Transpareo jo za vsak potni list objavi kot manifest, podpisan, pri čemer je vsaka različica s prstnim odtisom povezana s svojo predhodnico. Tako »časovna naprava« listi skozi zgodovino izdelka, bralec pa preveri ne le, da je različica pristna, ampak tudi, da je aktualna v neprekinjeni zaporedju.

Aplikacija pa ni odvisna od tega. Če ji namesto manifesta prikažete posamezni potni list, kakršnega vsak ponudnik objavi v skladu z odprtimi standardi, prikaže to eno različico, preveri njen podpis, če ga ima, in časovnico preprosto izpusti. Potrdilo brez podpisa se ne šteje za napako, temveč se preprosto prikaže brez pečata. Na ta način ista aplikacija prikaže tudi potrdila, ki nikoli niso bila v Transpareo.

Zamenjava ponudnika brez prekinitve

Uredba EU o digitalnem potnem listu za izdelke zahteva potne liste, ki so medsebojno združljivi in temeljijo na odprtih standardih - prenosljivi med storitvami in sistemi, namesto da bi bili vezani na enega samega ponudnika. Neodvisnost od ponudnika storitev torej ni dodatek, ampak del zahteve.

Transpareo Time Machine je rešitev, ki to zahtevo konkretizira. Ker se vsak potni list izdelka dostavi v odprtih standardih - identifikacija, neodvisna od resolverja, kanonična serializacija, javno objavljeni ključi - in ker je renderer odprtokodni pod licenco GPL v3, prikaz potnega lista nikoli ni odvisen od naše platforme.

Za potrdilo o izdelku je odgovoren gospodarski subjekt - proizvajalec, uvoznik ali pooblaščenec. Če se odloči, da bo zapustil Transpareo in prešel k drugemu ponudniku, ostane prikaz nespremenjen: že objavljene različice skupaj z zgodovino isti odprtokodni prikazovalnik še naprej prikazuje nespremenjeno, novega ponudnika, ki uporablja iste odprte standarde, pa prikazuje natanko ista aplikacija.

Podatki se prenesejo skupaj, potrošniki ne opazijo nobene prekinitve in nihče ne mora čakati na migracijo.

Selitev sama po sebi ni projekt. Transpareo Time Machine je statični paket: enkrat sestavljen, kopiran na kateri koli spletni strežnik - in končano. Oblika, ki ste jo v Transpareo nastavili za svoje potne liste, se prenaša kot objavljen stilni list z vsakim potnim listom. Pogled na potni list, na katerega so se vaši kupci navadili, torej na vašem lastnem strežniku izgleda popolnoma enako, vključno z barvami, pisavo in logotipom.

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

Na vrhu vsakega potrdila o izdelku se prikaže oznaka: »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 izdajatelja.

Vsako različico DPP podpišeta dve neodvisni strani: izdajatelj in Transpareo. Oba podpisa morata biti preverljiva, da se oznaka obarva zeleno. Z metodo »Bring Your Own Key« (BYOK) izdajatelj upravlja lastno končno točko za podpisovanje - Transpareo nikoli ne hrani zasebnega ključa, temveč le doda neodvisni protipodpis. Tako nastane izdajateljev podpis, ki ga Transpareo sam ne more ustvariti.

Kompromitiran strežnik ne more ponarediti kljukice, saj preverjanje poteka pri obiskovalcu samem.

Kdor želi vedeti natančneje, 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 Preverjanje DPP vnesite URL manifesta 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. Objavljene spremembe morajo biti prav tako pod licenco GPL v3, da bo vsak nadaljnji razvoj v korist širše javnosti.

Kloniranje, razvejanje, lastno gostovanje - vse je dovoljeno.

Kako vključiti aplikacijo - bodisi z eno vrstico na strani, kot paket v lastni aplikaciji ali pa jo v celoti gostujete sami - je opisano v datoteki README na tej strani. V njej boste našli tudi sorodni element za preverjanje samega podpisa, ki deluje v živo na Preverjanje DPP.

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 izdajatelja. Ponudnik storitev SaaS redko deluje 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.