Una macchina del tempo per i DPP

Immaginate di avere in mano un prodotto e di scansionarne il codice QR. Al posto di un PDF si apre una piccola app. Potete vedere il prodotto nel momento presente: di cosa è composto, da dove proviene, a cosa prestare attenzione. Con un semplice gesto di scorrimento si torna indietro nel tempo: è possibile visualizzare ogni versione mai pubblicata.

Si tratta di Transpareo Time Machinela nostra app open source per i consumatori, compatibile con qualsiasi passaporto digitale di prodotto. Il codice è disponibile sotto licenza GPL v3 su GitHub.

La realizziamo perché il regolamento UE sul passaporto digitale di prodotto è stato concepito per i consumatori, ovvero per chi ha il prodotto tra le mani. La maggior parte dei fornitori ne fa un semplice modulo di conformità che nessuno consulta due volte. Noi ne facciamo un’app che il consumatore effettivamente utilizza.

Guardate voi stessi

I passaporti di prodotto di esempio sono completi e contengono dati fittizi: sfogliate la cronologia delle versioni e aprite il bollino di controllo, direttamente nel browser, senza bisogno di un account.

Cosa fa l'app

Quattro punti di contatto dal punto di vista della persona che tiene in mano il prodotto. Nessun login, nessuna installazione di app.

1
Scansione

Scansiona il codice QR con la fotocamera dello smartphone. L'app si aprirà nel browser.

2
Visualizza le ultime notizie

Il prodotto nel presente: componenti, materiali, provenienza, manutenzione, riciclaggio.

3
Sfogliare la storia

Con un semplice gesto di scorrimento si torna indietro nel tempo. Ogni versione precedente con data e motivo della modifica.

4
Condividi

Ogni versione ha il proprio link. Una persona condivide una determinata versione con gli amici o con le autorità.

Ma perché mai?

Il regolamento dell’UE sul passaporto digitale di prodotto rappresenta il più grande passo avanti verso la trasparenza dei prodotti degli ultimi decenni. Se si leggono attentamente i testi di riferimento, si nota che è stato redatto esplicitamente a beneficio dei consumatori. Le autorità, le imprese di riciclaggio e le officine ne trarranno beneficio; tuttavia, il destinatario principale è la persona che ha il prodotto tra le mani.

Dal punto di vista numerico, la situazione è inequivocabile. Entro la fine del decennio, un cittadino europeo medio potrà scansionare da decine a centinaia di passaporti di prodotto all’anno. Calcolando su 200 milioni di famiglie, si tratta di miliardi di interazioni con i consumatori all’anno. Il mondo delle autorità e delle imprese di riciclaggio è, in confronto, numericamente irrisorio.

Se si vuole che il regolamento raggiunga i consumatori, il sito dedicato a loro deve essere ben strutturato: veloce, accattivante, coerente. Altrimenti non raggiungerà il suo scopo.

Abbiamo deciso di realizzare questo sito dedicato ai consumatori con codice aperto, affinché non dipenda da un unico fornitore.

Il percorso è prestabilito, il manifesto è opera nostra

Un passaporto di prodotto è soggetto a modifiche: una riparazione, una nuova quota di materiale riciclato, un richiamo. Le specifiche richiedono pertanto che le versioni precedenti rimangano consultabili: la norma relativa all’archiviazione congela ogni versione, mentre quella relativa alle interfacce prevede che ogni versione possa essere letta in modo mirato. Ciò che le specifiche lasciano in sospeso è la parte intermedia: un elenco che collega tutte le versioni di un pass in un unico percorso cronologico. Transpareo la pubblica per ogni scheda sotto forma di manifesto, firmato, con ogni versione collegata alla precedente tramite un’impronta digitale. In questo modo, la «macchina del tempo» sfoglia la storia di un prodotto e il lettore verifica non solo che una versione sia autentica, ma anche che essa sia quella attuale di una sequenza ininterrotta.

L’app, tuttavia, non si limita a ciò. Se le si mostra, al posto del manifesto, un singolo pass, come quello pubblicato da ogni fornitore secondo gli standard aperti, essa visualizza quella singola versione, ne verifica la firma, se presente, e omette semplicemente la cronologia. Un pass senza firma non viene considerato un errore, ma viene semplicemente visualizzato senza sigillo di verifica. In questo modo , la stessa app visualizza anche i pass che non sono mai stati registrati su Transpareo.

Cambio di fornitore senza interruzioni

Il regolamento dell’UE sul passaporto digitale di prodotto richiede che i passaporti di prodotto siano interoperabili e basati su standard aperti, ovvero trasferibili tra servizi e sistemi, anziché legati a un singolo fornitore. L’indipendenza dal fornitore di servizi non è quindi un elemento aggiuntivo, ma parte integrante dei requisiti.

Transpareo Time Machine è lo strumento che concretizza tale requisito. Poiché ogni passaporto di prodotto viene fornito secondo standard aperti - identificazione indipendente dal resolver, serializzazione canonica, chiavi pubblicate - e il renderer è open source sotto licenza GPL v3, la visualizzazione di un passaporto non dipende mai dalla nostra piattaforma.

Il responsabile di un passaporto di prodotto è un operatore economico: il fabbricante, un importatore o un mandatario. Qualora decidesse di abbandonare Transpareo e di passare a un altro fornitore, la visualizzazione rimane invariata: lo stesso renderer open source continua a visualizzare immutate le versioni già pubblicate, compresa la cronologia, e un nuovo fornitore che utilizza gli stessi standard aperti verrà visualizzato esattamente dalla stessa app.

I dati vengono trasferiti, i consumatori non notano alcuna interruzione e nessuno deve attendere una migrazione.

Il trasferimento in sé non costituisce un progetto. Transpareo Time Machine è un pacchetto statico: una volta creato, basta copiarlo su un server web qualsiasi e il gioco è fatto. Il layout che avete configurato in Transpareo per i vostri pass viene trasferito insieme a ciascun pass sotto forma di foglio di stile pubblicato. La visualizzazione del pass a cui i vostri clienti si sono abituati apparirà quindi esattamente uguale sul vostro server, compresi colori, caratteri e logo.

Verificato nel browser, non sul nostro server

Nella parte superiore di ogni passaporto di prodotto compare un bollino: “Verificato da Transpareo”. Esso indica il risultato di una verifica che non avviene sul nostro server, bensì nel browser del visitatore, sulla base dei byte caricati e delle chiavi pubbliche dell’emittente.

Ogni versione del DPP viene firmata da due soggetti indipendenti l’uno dall’altro: l’emittente e Transpareo. Entrambe le firme devono essere verificabili affinché il badge diventi verde. Con la modalità «Bring Your Own Key» (BYOK), l’emittente gestisce un proprio endpoint di firma: Transpareo non detiene mai la chiave privata e si limita ad aggiungere la controfirma indipendente. In questo modo si ottiene una firma dell’emittente che Transpareo stessa non è in grado di generare.

Un server compromesso non può falsificare il segno di spunta, poiché la verifica avviene direttamente presso il visitatore stesso.

Chi desidera approfondire l’argomento, clicchi sulla targhetta. Dietro di essa potrete visualizzare la catena di firme, gli hash e la cronologia delle versioni concatenata. Chi desidera solo le informazioni, può semplicemente ignorare ciò e continuare a leggere il passaporto di prodotto.

Lo stesso controllo è disponibile anche come pagina autonoma: all’indirizzo Verifica DPP è possibile inserire l’URL del manifesto del passaporto di prodotto e visualizzare il risultato completo del controllo, senza dover aprire il passaporto di prodotto stesso.

Rendiamo pubblico il codice

Transpareo Time Machine è disponibile sotto licenza GPL v3 su GitHub. Le modifiche pubblicate devono a loro volta essere rilasciate sotto licenza GPL v3, affinché ogni ulteriore sviluppo sia di utilità alla collettività.

Clonare, effettuare un fork, ospitarlo autonomamente: tutto è consentito.

Le istruzioni su come integrare l’app, sia con una riga nel codice della pagina, sia come pacchetto nella propria applicazione, sia ospitandola interamente in proprio, sono riportate nel file README presente su GitHub. In esso troverete anche il componente correlato dedicato alla sola verifica della firma, attualmente attivo su Verifica DPP.

Chi utilizza l'app in modo appropriato

L’app è stata sviluppata innanzitutto per i consumatori. Tuttavia, è utilizzabile da chiunque desideri consultare o verificare autonomamente i dati relativi ai prodotti.

  • I consumatori finali scansionano, visualizzano, sfogliano e condividono. Nessun login, nessun tracker.
  • Le autorità di vigilanza sul mercato e le autorità competenti considerano il “passaporto di prodotto” come un software il cui codice sorgente è sottoposto a verifica pubblica.
  • Le officine e le aziende di riciclaggio visualizzano la composizione dei materiali e le istruzioni di smontaggio direttamente sul prodotto.
  • I marchi e i gestori di fork personalizzano il pacchetto in base al proprio marchio: token CSS, componenti personalizzati, self-hosting.

Cosa succederebbe se Transpareo non esistesse più?

L’UE richiede che un passaporto di prodotto registrato rimanga disponibile per almeno dieci anni, anche in caso di insolvenza o liquidazione dell’emittente. Un fornitore SaaS raramente rimane in attività così a lungo. Per questo motivo, fin dall’inizio progettiamo la piattaforma in modo che i passaporti di prodotto rimangano utilizzabili indipendentemente da noi:

  • Ogni versione firmata del DPP è archiviata in un archivio accessibile pubblicamente. I byte e le chiavi pubbliche pubblicate sono sufficienti per una verifica successiva.
  • Non appena i passaporti di prodotto vengono registrati nel registro UE, una seconda memoria di archiviazione, protetta da scrittura, conserva una copia di ogni versione del DPP e del registro degli eventi per ulteriori dieci anni. Nessuno - nemmeno noi - può modificare a posteriori queste copie di backup.
  • A seguito della disdetta, gli URL abbreviati dei passaporti di prodotto rimangono accessibili tramite un reindirizzamento sulla piattaforma Transpareo.
  • Transpareo Time Machine funziona senza modifiche anche con i dati archiviati. Il bundle non richiede alcun richiamo in fase di esecuzione; gli bastano solo i byte e le chiavi.

Se domani la piattaforma Transpareo scomparisse, rimarrebbero le versioni del DPP e il renderer open source.

Per chi è appassionato di tecnologia

Ecco cosa succede “sotto il cofano”. Chi non ha bisogno di conoscerne i dettagli può saltare questa sezione: l’app funzionerà comunque.

  • GS1 Digital Link (ISO/IEC 18975): l’URL del passaporto di prodotto riporta l’identificativo del prodotto in un formato standardizzato, indipendente dal resolver e intercambiabile tra i fornitori.
  • JSON Canonicalization Scheme (RFC 8785): una serializzazione deterministica. In questo modo l’hash rimane riproducibile indipendentemente dall’ordine dei campi o dagli spazi bianchi: chiunque può ricalcolarlo autonomamente.
  • W3C Data Integrity Proofs (eddsa-jcs-2022): firma Ed25519 sulla forma canonica (JCS).
  • /.well-known/dpp-keys/ (RFC 8615): le chiavi pubbliche degli emittenti si trovano in un percorso standardizzato - non è necessario contattare Transpareo, ogni verificatore le trova autonomamente.

Tutto è documentato nel README su GitHub, compresa l’architettura front-end (nucleo reattivo proprietario, nessun framework esterno) e le istruzioni di compilazione per l’hosting autonomo.

Visualizza il codice su GitHub

Il codice sorgente completo, tutte le versioni e la discussione sull’issue sono disponibili nel repository pubblico.