Une machine à remonter le temps pour les DPP

Imaginez que vous teniez un produit dans la main et que vous scanniez le code QR qui y figure. Au lieu d’un fichier PDF, une petite application s’ouvre. Vous découvrez le produit en temps réel : de quoi il est composé, d’où il vient, ce qu’il faut savoir. D’un simple glissement de doigt, vous remontez le temps : vous pouvez consulter toutes les versions qui ont été publiées.

C’est exactement ce que vous pouvez essayer dès maintenant : la démo présente un passeport produit complet avec des données d’exemple.

Il s’agit de Transpareo Time Machine, notre application grand public open source pour tout passeport numérique de produit. Le code est disponible sous licence GPL v3 sur GitHub.

Nous la développons parce que le règlement européen sur le passeport numérique du produit a été rédigé à l’intention des consommateurs - c’est-à-dire de la personne qui tient le produit entre ses mains. La plupart des fournisseurs en font un simple formulaire de conformité que personne ne consulte deux fois. Nous en faisons une application que le consommateur a envie d’ouvrir.

Fonctionnalités de l'application

Quatre points de contact du point de vue de la personne qui tient le produit en main. Pas besoin de se connecter, ni d’installer une application.

1

Numériser

Scannez le code QR avec l'appareil photo de votre smartphone. L'application s'ouvre dans le navigateur.

2

Voir les actualités

Le produit vu d'aujourd'hui : composants, matériaux, origine, entretien, recyclage.

3

Feuilleter l'histoire

Un simple glissement du doigt permet de remonter le temps. Chaque version antérieure est accompagnée de la date et du motif de la modification.

4

Partager

Chaque version dispose de son propre lien. Une personne partage une version spécifique avec ses amis ou les autorités.

Mais pourquoi donc ?

Le règlement européen sur le passeport numérique des produits constitue la plus grande avancée en matière de transparence des produits depuis des décennies. Si l’on lit attentivement les textes qui le sous-tendent, on constate qu’il est explicitement rédigé à l’intention des consommateurs. Les autorités, les recycleurs et les ateliers s’y adaptent ; mais le destinataire principal est la personne qui tient le produit entre ses mains.

En termes de chiffres, la situation est claire. D’ici la fin de la décennie, un particulier européen moyen pourra scanner des dizaines, voire des centaines de passeports numériques par an. Si l’on se base sur 200 millions de foyers, cela représente des milliards d’interactions avec les consommateurs chaque année. À côté de cela, l’univers des autorités et des recycleurs est numériquement infime.

Si l’on veut que le règlement soit perçu par les consommateurs, le site destiné à ces derniers doit être bien conçu : rapide, esthétique et cohérent. Sinon, il manquera son objectif. Nous avons décidé de développer ce site en open source afin qu’il ne dépende pas d’un seul fournisseur.

Testé dans le navigateur, et non sur notre serveur

En haut de chaque fiche produit apparaît un label : « Vérifié par Transpareo ». Il indique le résultat d’une vérification qui n’a pas lieu sur notre serveur, mais dans le navigateur du visiteur, à partir des octets chargés et des clés publiques du fabricant.

Deux entités indépendantes l’une de l’autre signent chaque version du DPP : le fabricant et Transpareo. Les deux signatures doivent pouvoir être vérifiées pour que le badge devienne vert. Avec le principe « Bring Your Own Key » (BYOK), le fabricant exploite son propre point de terminaison de signature - Transpareo ne détient jamais la clé privée et se contente d’ajouter la contre-signature indépendante. Il en résulte une signature d’émetteur que Transpareo ne peut pas générer lui-même. Un serveur compromis ne peut pas falsifier la coche, car la vérification s’effectue chez le visiteur lui-même.

Si vous souhaitez en savoir plus, cliquez sur le badge. Vous y verrez la chaîne de signatures, les hachages et l’historique des versions enchaînées. Si vous souhaitez simplement obtenir l’information, ignorez simplement cela et poursuivez la lecture de la fiche produit.

Cette même vérification est également disponible sous forme de page autonome : sur la page de vérification DPP, saisissez l’URL du manifeste de n’importe quelle fiche produit et consultez le résultat complet de la vérification, sans avoir à ouvrir la fiche elle-même.

Nous publions le code

Transpareo Time Machine est disponible sous licence GPL v3 sur GitHub. Cloner, créer un fork, l’héberger soi-même : tout est autorisé. Les modifications publiées doivent quant à elles être placées sous licence GPL v3, afin que chaque développement ultérieur profite à la communauté.

Trois façons d’intégrer le bundle :

  • Via une balise script: ajoutez <script> et <transpareo-time-machine src="…"> dans la page, et le tour est joué - aucune étape de compilation n’est nécessaire.
  • Via npm: npm install transpareo-time-machine dans votre propre application.
  • Hébergement autonome: compilez le bundle, utilisez votre propre infrastructure, aucune dépendance tierce lors de l’exécution.

Si vous n’avez besoin que de la vérification de la signature sans l’affichage complet du produit, importez l’élément associé <dpp-verifier> - idéal pour les outils d’audit. À découvrir en direct sur la vérification DPP.

Ceux qui utilisent l'application à bon escient

L’application a été conçue en premier lieu pour les consommateurs. Elle s’adresse toutefois à tous ceux qui souhaitent consulter ou vérifier les données relatives à un produit de manière indépendante.

  • Les consommateurs finaux scannent, consultent, parcourent et partagent. Pas de connexion, pas de traceurs.
  • Les organismes de surveillance du marché et les autorités consultent le passeport produit dans un logiciel dont le code source est ouvert à un audit public.
  • Les ateliers et les recycleurs consultent la composition des matériaux et les consignes de démontage directement sur le produit.
  • Les marques et les exploitants de fork personnalisent le bundle en fonction de leur propre marque : jetons CSS, composants personnalisés, auto-hébergement.

Que se passera-t-il si Transpareo venait à disparaître ?

L’UE exige qu’un passeport produit enregistré reste disponible pendant au moins dix ans, même après la faillite ou la liquidation du fabricant. Un fournisseur SaaS a rarement une durée de vie aussi longue. C’est pourquoi nous concevons dès le départ notre plateforme de manière à ce que les passeports de produit restent utilisables indépendamment de nous :

  • Chaque version signée du DPP est stockée dans un espace de stockage accessible au public. Les octets ainsi que les clés publiques publiées suffisent pour une vérification ultérieure.
  • Dès que les passeports de produit sont enregistrés auprès du registre de l’UE, un deuxième espace de stockage en lecture seule conserve une copie de chaque version du DPP et du journal des événements pendant dix ans supplémentaires. Personne - pas même nous - ne peut modifier ces copies de sauvegarde a posteriori.
  • Après une résiliation, les URL courtes des passeports de produit restent accessibles via une redirection vers la plateforme Transpareo.
  • Transpareo Time Machine fonctionne sans modification, même avec des données archivées. Le bundle ne nous rappelle pas lors de l’exécution ; il n’a besoin que des octets et des clés.

Si la plateforme Transpareo venait à disparaître demain, les versions du DPP et le rendu open source resteraient disponibles.

Pour les passionnés de technologie

Voici ce qui se passe en coulisses. Si vous n’avez pas besoin d’en connaître les détails, vous pouvez passer cette section : l’application fonctionnera quand même.

  • GS1 Digital Link (ISO/IEC 18975) : l’URL de la fiche produit contient l’identifiant du produit sous une forme standardisée - indépendante du résolveur et interchangeable entre les fournisseurs.
  • Schéma de canonisation JSON (RFC 8785) : une sérialisation déterministe. Ainsi, le hachage reste reproductible indépendamment de l’ordre des champs ou des espaces : chacun peut le recalculer soi-même.
  • W3C Data Integrity Proofs (eddsa-jcs-sha256) : signature Ed25519 sur la forme canonique (JCS).
  • /.well-known/dpp-keys/ (RFC 8615) : les clés publiques des émetteurs se trouvent sous un chemin standardisé - aucun appel à Transpareo n’est nécessaire, chaque vérificateur les trouve par lui-même.

Tout est documenté dans le README sur GitHub, y compris l’architecture front-end (noyau React propriétaire, aucun framework externe) et les instructions de compilation pour l’auto-hébergement.

Voir le code sur GitHub

Vous trouverez le code source complet, toutes les versions et la discussion relative à ce ticket dans le dépôt public.