O mașină a timpului pentru DPP-uri

Imaginați-vă că țineți un produs în mână și scanați codul QR de pe acesta. În loc de un fișier PDF, se deschide o mică aplicație. Vedeți produsul în timp real: din ce este alcătuit, de unde provine, ce trebuie să aveți în vedere. O simplă glisare vă permite să vă întoarceți în timp - puteți vizualiza fiecare versiune care a fost lansată vreodată.

Aceasta este Transpareo Time Machineaplicația noastră open-source destinată consumatorilor, compatibilă cu orice pașaport digital al produsului. Codul sursă este disponibil sub licența GPL v3 pe GitHub.

O dezvoltăm deoarece regulamentul UE privind pașaportul digital al produsului a fost conceput pentru consumatori - pentru persoana care ține produsul în mână. Majoritatea furnizorilor îl transformă într-un formular de conformitate pe care nimeni nu îl scanează de două ori. Noi îl transformăm într-o aplicație pe care consumatorul chiar o deschide.

Convingeți-vă singuri

Pașaportul de produs de exemplu este complet și conține date fictive: parcurgeți istoricul versiunilor și deschideți eticheta de certificare - direct în browser, fără a fi necesar un cont.

Ce face aplicația

Patru puncte de interacțiune din perspectiva persoanei care ține produsul în mână. Fără autentificare, fără instalarea unei aplicații.

1
Scanare

Scanează codul QR cu camera smartphone-ului. Aplicația se va deschide în browser.

2
Vezi noutățile

Produsul se prezintă în prezent - componente, materiale, proveniență, întreținere, reciclare.

3
Răsfoiește istoria

O mișcare de glisare te duce înapoi în timp. Fiecare versiune anterioară, cu data și motivul modificării.

4
Distribuie

Fiecare versiune are propriul link. O persoană poate partaja o anumită versiune cu prietenii sau cu autoritățile.

De ce, de fapt?

Regulamentul UE privind pașaportul digital al produsului reprezintă cea mai importantă schimbare în direcția transparenței produselor din ultimele decenii. Dacă citim cu atenție textele care stau la baza acestuia, observăm că este redactat în mod explicit pentru consumatori. Autoritățile, firmele de reciclare și atelierele se aliniază la aceste cerințe, dar destinatarul principal este persoana care deține produsul.

Din punct de vedere numeric, situația este clară. Un cetățean european obișnuit va putea scana, până la sfârșitul deceniului, de la zeci la sute de pașapoarte de produs pe an. Calculând pentru 200 de milioane de gospodării, aceasta înseamnă miliarde de interacțiuni cu consumatorii anual. În comparație, sectorul autorităților și al firmelor de reciclare este neglijabil din punct de vedere numeric.

Dacă regulamentul trebuie să ajungă la consumatori, atunci pagina destinată consumatorilor trebuie să fie bine concepută - rapidă, atractivă, coerentă. Altfel, își ratează scopul.

Am decis să construim această pagină destinată consumatorilor cu cod sursă deschis, astfel încât să nu depindă de un singur furnizor.

Cursul evenimentelor este prestabilit, manifestul este al nostru

Un pașaport de produs se modifică: o reparație, o nouă cotă de materiale reciclate, o rechemare. Prin urmare, specificațiile impun ca versiunile anterioare să rămână accesibile: standardul privind stocarea „îngheață” fiecare versiune, iar standardul privind interfețele prevede ca fiecare versiune să poată fi citită în mod specific. Ceea ce specificațiile lasă deschis este partea de mijloc: o listă care leagă toate versiunile unui pașaport într-o istorie. Transpareo o publică pentru fiecare fișă sub formă de manifest, semnat, fiecare versiune fiind legată de predecesoarea sa printr-o amprentă digitală. Astfel, „mașina timpului” parcurge istoria unui produs, iar cititorul verifică nu doar dacă o versiune este autentică, ci și dacă aceasta este cea actuală dintr-o succesiune neîntreruptă.

Aplicația nu se limitează însă la acest lucru. Dacă îi prezentați, în locul manifestului, un singur pașaport, așa cum îl publică fiecare furnizor conform standardelor deschise, aceasta afișează acea versiune, îi verifică semnătura, dacă are una, și omite pur și simplu cronologia. Un pașaport fără semnătură nu este considerat o eroare, ci este afișat pur și simplu fără sigiliul de verificare. Astfel, aceeași aplicație afișează și pașapoartele care nu au fost niciodată înregistrate la Transpareo.

Schimbarea furnizorului fără întrerupere

Regulamentul UE privind pașaportul digital al produsului impune ca pașapoartele produselor să fie interoperabile și bazate pe standarde deschise - transferabile între servicii și sisteme, în loc să fie legate de un singur furnizor. Independența față de furnizorul de servicii nu este, așadar, un element suplimentar, ci face parte din cerințele regulamentului.

Transpareo Time Machine este elementul care concretizează această cerință. Deoarece fiecare pașaport de produs este furnizat în conformitate cu standarde deschise - identificare independentă de rezolvator, serializare canonică, chei publicate public - iar programul de redare este open-source sub licența GPL v3, afișarea unui pașaport nu depinde niciodată de platforma noastră.

Responsabilitatea pentru un pașaport de produs revine unui operator economic - producătorul, un importator sau un reprezentant autorizat. Dacă acesta decide să renunțe la Transpareo și să treacă la un alt furnizor, afișarea rămâne neschimbată: versiunile deja publicate, împreună cu istoricul, continuă să fie afișate neschimbate de același motor de redare open-source, iar un nou furnizor, care utilizează aceleași standarde deschise, va fi afișat exact de aceeași aplicație.

Datele se transferă odată cu acesta, consumatorii nu observă nicio întrerupere și nimeni nu trebuie să aștepte o migrare.

Mutarea în sine nu este un proiect. Transpareo Time Machine este un pachet static: odată creat, se copiază pe orice server web și gata. Designul pe care l-ați configurat în Transpareo pentru pașapoartele dvs. este inclus sub forma unei foi de stil publicate împreună cu fiecare pașaport. Astfel, vizualizarea pașaportului cu care s-au obișnuit clienții dvs. va arăta exact la fel pe propriul dvs. server, inclusiv culorile, fontul și logo-ul.

Verificat în browser, nu pe serverul nostru

În partea de sus a fiecărui pașaport de produs apare o insignă: „Verificat de Transpareo”. Aceasta indică rezultatul unei verificări care nu are loc pe serverul nostru, ci în browserul vizitatorului - pe baza octeților încărcați și a cheilor publice ale emitentului.

Fiecare versiune DPP este semnată de două entități independente una de cealaltă: emitentul și Transpareo. Ambele semnături trebuie să poată fi verificate pentru ca insigna să devină verde. Prin intermediul sistemului „Bring Your Own Key” (BYOK), emitentul operează propriul său punct terminal de semnare - Transpareo nu deține niciodată cheia privată și se limitează la a adăuga contra-semnătura independentă. Astfel se creează o semnătură a emitentului pe care Transpareo nu o poate genera singură.

Un server compromis nu poate falsifica bifa, deoarece verificarea are loc chiar la vizitator.

Cine dorește să afle detalii, poate da clic pe plăcuță. Veți vedea lanțul de semnături, valorile hash și istoricul versiunilor în lanț. Cine dorește doar informația, poate ignora pur și simplu acest lucru și poate continua să citească în pașaportul de produs.

Aceeași verificare este disponibilă și ca pagină separată: pe Verificarea DPP introduceți adresa URL a manifestului oricărui pașaport de produs și veți vedea rezultatul complet al verificării - fără a fi nevoie să deschideți pașaportul în sine.

Publicăm codul

Transpareo Time Machine este disponibil sub licența GPL v3 pe GitHub. Modificările publicate trebuie, la rândul lor, să fie distribuite sub licența GPL v3, astfel încât orice dezvoltare ulterioară să fie în beneficiul comunității.

Clonare, forkare, găzduire proprie - totul este permis.

Modul în care puteți integra aplicația, fie cu o singură linie în pagină, ca pachet în propria aplicație sau găzduită complet de dvs., este descris în fișierul README de acolo. Veți găsi acolo și elementul asociat pentru verificarea pură a semnăturii, care rulează live pe Verificarea DPP.

Cine folosește aplicația în mod util

Aplicația a fost concepută inițial pentru consumatori. Totuși, poate fi utilizată de oricine dorește să consulte sau să verifice datele produsului în mod independent.

  • Consumatorii finali scanează, vizualizează, răsfoiesc, partajează. Fără autentificare, fără trackere.
  • Autoritățile de supraveghere a pieței și autoritățile competente consideră că „pașaportul de produs” este un program software al cărui cod sursă poate fi verificat public.
  • Atelierele și firmele de reciclare pot vedea compoziția materialelor și instrucțiunile de demontare direct pe produs.
  • Brandurile și operatorii de platforme de fork-uri pot adapta pachetul la propria marcă - token-uri CSS, componente proprii, găzduire proprie.

Ce se va întâmpla dacă Transpareo nu va mai exista?

UE impune ca un pașaport de produs înregistrat să rămână disponibil timp de cel puțin zece ani - chiar și după intrarea în insolvență sau lichidarea emitentului. Un furnizor de servicii SaaS rareori rezistă atât de mult. De aceea, construim platforma încă de la început astfel încât pașapoartele de produs să poată fi utilizate independent de noi:

  • Fiecare versiune semnată a DPP se află într-un spațiu de stocare accesibil publicului. Octeții, împreună cu cheile publice publicate, sunt suficienți pentru o verificare ulterioară.
  • Imediat ce pașaportele de produs sunt înregistrate în registrul UE, o a doua copie de rezervă, protejată împotriva modificării, păstrează fiecare versiune a DPP și jurnalul de evenimente pentru o perioadă suplimentară de zece ani. Nimeni - nici măcar noi - nu poate modifica ulterior aceste copii de rezervă.
  • După reziliere, adresele URL scurte ale pașaportelor de produs rămân accesibile prin intermediul unei redirecționări către platforma Transpareo.
  • Transpareo Time Machine funcționează neschimbat chiar și cu datele arhivate. Pachetul nu ne solicită date în timpul rulării; are nevoie doar de octeți și de chei.

Dacă platforma Transpareo ar dispărea mâine, ar rămâne versiunile DPP și motorul de redare cu sursă deschisă.

Pentru cei pasionați de tehnologie

Iată ce se întâmplă „sub capotă”. Cei care nu au nevoie să cunoască detaliile pot sări peste această secțiune - aplicația va funcționa și așa.

  • GS1 Digital Link (ISO/IEC 18975): URL-ul pașaportului de produs conține identificatorul produsului într-un format standardizat - independent de rezolvator, interschimbabil între furnizori.
  • Schema de canonizare JSON (RFC 8785): o serializare deterministă. Astfel, hash-ul rămâne reproductibil indiferent de ordinea câmpurilor sau de spațiile albe - oricine îl poate recalcula singur.
  • W3C Data Integrity Proofs (eddsa-jcs-2022): semnătură Ed25519 asupra formei canonice (JCS).
  • /.well-known/dpp-keys/ (RFC 8615): cheile publice ale emitenților se află pe o cale standardizată - nu este necesar un apel către Transpareo, fiecare verificator le găsește singur.

Totul este documentat în fișierul README de pe GitHub - inclusiv arhitectura frontend (nucleu reactiv propriu, fără framework-uri externe) și instrucțiunile de compilare pentru găzduirea proprie.

Vizualizează codul pe GitHub

Sursa completă, toate versiunile și discuția privind problema se găsesc în depozitul public.