Vremenska mašina za DPP-ove

Zamislite da držite proizvod u ruci i skenirate QR kod na njemu. Umjesto PDF-a otvara se mala aplikacija. Vidite proizvod onakav kakav jest sada: od čega je napravljen, odakle dolazi i što trebate imati na umu. Potegom prsta vraćate se kroz vrijeme - možete pregledati svaku verziju koja je ikada objavljena.

Ovo je Transpareo Time Machine, naša aplikacija otvorenog koda za potrošače za svaki digitalni putovni list proizvoda. Kôd je dostupan na GitHubu pod licencom GPL v3. Projekt CIRPASS-2, financiran od strane EU, navodi “ Transpareo Time Machine “ u svom katalogu OpenDPP s DPP softverom otvorenog koda.

Gradimo ga jer je Uredba EU o digitalnom putovnici za proizvode napisana za potrošače - za osobu koja drži proizvod u rukama. Većina pružatelja usluga pretvara ga u obrazac za usklađenost koji nitko nikada ne skenira dvaput. Mi ga pretvaramo u aplikaciju koju će potrošači zaista otvoriti.

Uvjerite se sami

Primjeri putovnica proizvoda su potpuni i ispunjeni izmišljenim podacima: pregledajte povijest verzija i otvorite bedž za provjeru - izravno u vašem pregledniku, bez potrebe za računom.

Što aplikacija radi

Četiri točke dodira iz perspektive osobe koja drži proizvod. Bez prijave, bez instalacije aplikacije.

1
Skeniraj

Skenirajte QR kod kamerom svog pametnog telefona. Aplikacija će se otvoriti u vašem pregledniku.

2
Pogledajte najnovije vijesti

Proizvod u ovdje i sada - komponente, materijali, podrijetlo, održavanje, recikliranje.

3
Pregledaj povijest

Jednim prevlačenjem vraćate se kroz vrijeme. Svaka prethodna verzija, s datumom i razlogom promjene.

4
Podijeli

Svaka verzija ima vlastitu poveznicu. Osoba dijeli određenu verziju s prijateljima ili vlastima.

Zašto uopće?

Uredba EU o digitalnom putovnom listu za proizvode predstavlja najveći pomak prema transparentnosti proizvoda u posljednjih nekoliko desetljeća. Ako se temeljni tekstovi pažljivo pročitaju, jasno je da su napisani za potrošače. Vlasti, reciklaže i servisi za popravak su uključeni; ali primarni korisnik je osoba koja drži proizvod u rukama.

Što se tiče brojki, slika je jasna. Do kraja desetljeća prosječni Europljanin moći će skenirati desetke do stotine putovnica proizvoda godišnje. Na temelju 200 milijuna kućanstava, to iznosi milijarde interakcija potrošača godišnje. Za usporedbu, svijet javnih vlasti i reciklera je brojčano zanemariv.

Ako regulativa treba dosegnuti potrošače, platforma namijenjena potrošačima mora biti dobro dizajnirana - brza, privlačna i koherentna. Inače, neće ispuniti svoju svrhu.

Odlučili smo izgraditi ovu platformu namijenjenu potrošačima kao open source kako ne bi ovisila o jednom pružatelju usluga.

Tok događaja je uklesan u kamen; manifest je naš

Putovnica za proizvode se mijenja: popravak, novi cilj recikliranja, opoziv. Stoga specifikacije zahtijevaju da prethodne verzije ostanu dostupne: standard pohrane zadržava svaku verziju, dok standard za sučelja osigurava da se svaka verzija može specifično pročitati. Ono što specifikacije ostavljaju otvorenim je poveznica između njih: popis koji povezuje sve verzije putovnice u jednu cjelovitu povijest. Transpareo objavljuje ovo za svaki putovnica kao manifest, potpisan, pri čemu je svaka verzija lančano povezana sa svojom prethodnicom putem digitalnog otiska. Na taj način “vremenska mašina” prolazi kroz povijest proizvoda, a čitatelj može provjeriti ne samo da je verzija autentična, već i da je najnovija u neprekinutom nizu.

Međutim, aplikacija se na to ne oslanja. Ako joj umjesto manifesta pokažete pojedinačni putovnicu - kao što ih objavljuju svi pružatelji usluga u skladu s otvorenim standardima - ona prikazuje tu određenu verziju, provjerava njezin potpis (ako ga ima) i jednostavno izostavlja vremensku crtu. Propusnica bez potpisa ne smatra se pogreškom, već se jednostavno prikazuje bez pečata provjere. Ista aplikacija na isti način prikazuje i propusnice koje nikada nisu bile registrirane u sustavu Transpareo.

Promjena pružatelja usluga bez prekida

Uredba EU o digitalnom putovnici za proizvode - prenosive između usluga i sustava, a ne vezane uz jednog pružatelja usluga. Neovisnost o pružatelju usluga stoga nije neobavezna dodatna značajka, već dio zahtjeva.

Transpareo Time Machine je komponenta koja ovu zahtjevnost provodi u praksi. Budući da se svaki putovnica proizvoda isporučuje prema otvorenim standardima - rezolucijski neutralna identifikacija, kanonička serijalizacija, javno objavljeni ključevi - a renderer je otvorenog koda pod licencom GPL v3, prikaz putovnice nikada ne ovisi o našoj platformi.

Gospodarski subjekt - proizvođač, uvoznik ili ovlašteni zastupnik - odgovoran je za putovnicu proizvoda. Ako odluče napustiti Transpareo i prijeći na drugog pružatelja usluga, prikaz ostaje dosljedan: isti renderer otvorenog koda nastavlja nepromijenjeno prikazivati prethodno objavljene verzije, uključujući povijest, a nova verzija pružatelja usluga koji podržava iste otvorene standarde prikazat će se točno istom aplikacijom.

Podaci se prenose zajedno s njom, korisnici ne primjećuju nikakve prekide i nitko ne mora čekati migraciju.

Transpareo Time Machine S am proces migracije nije projekt. Transpareo Time Machine je statički paket: izradite ga jednom, kopirajte na bilo koji web poslužitelj i gotovi ste. Dizajn koji ste postavili za svoje putovnice u Transpareo-u putuje sa svakom putovnicom kao objavljeni stilski list. Prikaz putovnice na koji su vaši kupci navikli stoga će izgledati potpuno isto na vašem poslužitelju, s bojama, fontom i logotipom.

Testirano u pregledniku, a ne na našem poslužitelju.

Na vrhu svakog putovnica za proizvode pojavljuje se bedž: “Provjerio Transpareo”. On prikazuje rezultat postupka provjere koji se ne odvija na našem poslužitelju, već u pregledniku posjetitelja - koristeći učitane bajtove i javna ključa izdavatelja.

Svaku verziju DPP-a potpisuju dva neovisna tijela: izdavatelj i Transpareo. Oba potpisa moraju biti provjerljiva da bi oznaka postala zelena. S opcijom “Ponesi svoj ključ” (BYOK), izdavatelj upravlja vlastitim krajnjim mjestom za potpis - Transpareo nikada ne posjeduje privatni ključ i samo dodaje neovisni su-potpis. To rezultira izdavačevim potpisom koji Transpareo sam ne može generirati.

Kompromitirani poslužitelj ne može krivotvoriti potvrdu, jer se provjera odvija na uređaju posjetitelja.

Ako želite saznati sve detalje, kliknite na bedž. Iza njega vidjet ćete lanac potpisa, hashove i povijest verzija u lancu. Ako vam trebaju samo informacije, jednostavno to zanemarite i nastavite čitati putovnicu proizvoda.

Ista provjera dostupna je i kao samostalna stranica: na Verifikacija DPP-a možete unijeti URL manifesta bilo kojeg putovnice proizvoda i vidjeti cjelokupni rezultat provjere - bez otvaranja same putovnice.

Objavljujemo kod

Transpareo Time Machine licenciran je pod GPL v3 na GitHubu. Sve objavljene izmjene moraju biti licencirane pod GPL v3 kako bi daljnji razvoj koristio široj zajednici. Kloniranje, forkiranje, samostalno hostanje - sve je dopušteno.

Datoteka README tamo objašnjava kako integrirati aplikaciju, bilo jednom linijom koda na stranici, kao paket unutar vlastite aplikacije ili u potpunosti hostanu od strane korisnika. Tamo ćete također pronaći i sestrinsku komponentu za čistu provjeru potpisa, koja je dostupna na adresi Verifikacija DPP-a.

Oni koji učinkovito koriste aplikaciju

Aplikacija je prvenstveno namijenjena potrošačima. Međutim, može je koristiti svatko tko želi neovisno pregledati ili provjeriti podatke o proizvodu.

  • Krajnji potrošači mogu skenirati, pregledavati, pretraživati i dijeliti. Bez prijave, bez praćenja.
  • Tijela nadzora tržišta i regulatorna tijela zamišljaju putovnicu za proizvode kao softverski proizvod čiji je izvorni kod javno provjerljiv.
  • Servisi za popravak i reciklaže mogu pregledati sastav materijala i upute za rastavljanje izravno na proizvodu.
  • Marke i operateri vilica prilagođavaju paket svojoj marki - CSS tokeni, prilagođene komponente, samostalno hostanje.

Što se događa ako Transpareo više ne postoji?

EU zahtijeva da putovnica proizvoda . Za mnoge proizvode to je deset godina ili više, a pružatelj SaaS usluga rijetko posluje toliko dugo. Stoga platformu od samog početka gradimo na način da putovnice proizvoda ostanu upotrebljive neovisno o nama:

  • Svaka potpisana verzija DPP-a pohranjuje se u javno dostupnom repozitoriju. Podaci, zajedno s objavljenim javnim ključevima, dovoljni su za naknadnu provjeru.
  • Nakon što su putovnice proizvoda registrirane u EU registru, drugi sustav pohrane samo za čitanje duplicira svaku verziju DPP-a i dnevnik događaja na dodatnih deset godina. Nitko - pa čak ni mi - ne može retroaktivno mijenjati te zrcalne kopije.
  • Nakon otkazivanja, kratke URL-ove za putovnicu proizvoda ostaju dostupni putem preusmjeravanja na platformi Transpareo.
  • Funkcija ` Transpareo Time Machine ` radi normalno, čak i na arhiviranim podacima. Bundle nas ne poziva natrag tijekom izvršavanja; treba mu samo bajtovi i ključevi.

Da platforma Transpareo sutra nestane, verzije DPP-a i renderer otvorenog koda ostali bi.

Za one koje zanima tehnologija

Evo što se događa ispod haube. Ako ne trebate znati detalje, možete preskočiti ovaj odjeljak - aplikacija će i dalje raditi.

  • GS1 Digital Link (ISO/IEC 18975): URL putovnice proizvoda sadrži identifikator proizvoda u standardiziranom obliku - neovisan o resolveru i zamjenjiv između pružatelja usluga.
  • Shema kanonizacije JSON-a (RFC 8785): Deterministička serijalizacija. To osigurava da hash ostane reproducibilan bez obzira na redoslijed polja ili praznih znakova - svatko ga može samostalno provjeriti.
  • W3C dokazi o integritetu podataka (eddsa-jcs-2022): Ed25519 potpis nad kanoniziranim oblikom (JCS).
  • /.well-known/dpp-keys/ (RFC 8615): Javni ključevi izdavatelja nalaze se na standardiziranoj putanji - nema potrebe kontaktirati Transpareo; svaki provjeritelj može ih pronaći samostalno.

Sve je dokumentirano u README-u na GitHubu - uključujući arhitekturu front-enda (naše vlastito reaktivno jezgro, bez vanjskih okvira) i upute za izradu za samostalno hostanje.

Pogledajte kod na GitHubu

Možete pronaći cjeloviti izvorni kod, sve izdanja i raspravu o problemu u javnom repozitoriju.