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 nje naredi obrazec za skladnost, ki ga nihče ne pregleda dvakrat. Mi pa iz nje naredimo aplikacijo, ki jo potrošnik tudi odpre.

Prepričajte se sami

Vzorčni potni listi izdelka so popolni in vsebujejo izmišljene podatke: preglejte zgodovino različic in odprite certifikat - 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 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.

Glede na številke je stvar jasna. Povprečen evropski posameznik bo ob koncu tega desetletja lahko skeniral od nekaj deset do nekaj sto potnih listov izdelka na leto. Glede na 200 milijonov gospodinjstev to pomeni milijarde interakcij s potrošniki letno. V primerjavi s tem je število interakcij v svetu javnih organov in podjetij za recikliranje zanemarljivo majhno.

Č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 potnem listu izdelka 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 se časovna naprava prebira skozi zgodovino izdelka, bralec pa ne preveri le, ali je različica pristna, temveč tudi, ali je najnovejša 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 izdelka zahteva, da so potni listi izdelka medsebojno združljivi in temeljijo na odprtih standardih - da so prenosljiva med storitvami in sistemi, namesto da bi bila vezana na enega samega ponudnika storitev. Neodvisnost od ponudnika storitev torej ni dodatna možnost, 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 potni list izdelka 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 bo isti odprtokodni renderer še naprej prikazoval nespremenjeno, novega ponudnika, ki uporablja iste odprte standarde, pa bo prikazovala točno 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 ga sestavite, kopirate na kateri koli spletni strežnik in je 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 stranke navadile, bo torej na vašem lastnem strežniku izgledal popolnoma enako, vključno z barvami, pisavo in logotipom.

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

Na vrhu vsakega potnega lista izdelka 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 potrditvene oznake, saj se preverjanje izvede pri obiskovalcu samem.

Kdor želi vedeti podrobnosti, naj klikne na plaketo. Tam boste videli verigo podpisov, hash vrednosti in verigo zgodovine različic. Kdor želi le informacije, naj to preprosto prezre in nadaljuje z branjem v potnem listu izdelka.

Enako preverjanje je na voljo tudi kot samostojna spletna stran: na naslovu Preverjanje DPP vnesite URL manifestne datoteke katerega koli potnega lista izdelka in si oglejte celoten rezultat preverjanja - brez da bi morali odpreti samo potni list izdelka.

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 predstavljajo potni list izdelka v obliki programske opreme, 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 potni list izdelka 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 oblikujemo tako, da bodo potni listi izdelka 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 potni listi izdelkov vpisani v register EU, se vsaka različica DPP in dnevnik dogodkov dodatno shranita v drugem, za pisanje zaščitenem pomnilniku za obdobje desetih let. Nihče - niti mi - ne more naknadno spreminjati teh kopij.
  • Po prekinitvi naročnine so kratke povezave do potnih listov izdelkov še naprej 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-naslov potnega lista izdelka vsebuje identifikacijo izdelka v standardizirani obliki - neodvisno od reševalca 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.