Μια μηχανή του χρόνου για τα DPP

Φανταστείτε ότι κρατάτε ένα προϊόν στο χέρι σας και σαρώνετε τον κωδικό QR που φέρει. Αντί για ένα αρχείο PDF, ανοίγει μια μικρή εφαρμογή. Βλέπετε το προϊόν όπως είναι σήμερα: από τι αποτελείται, από πού προέρχεται, τι πρέπει να προσέξετε. Με μια κίνηση σάρωσης επιστρέφετε πίσω στο χρόνο - μπορείτε να δείτε κάθε έκδοση που έχει κυκλοφορήσει ποτέ.

Αυτό ακριβώς μπορείτε να δοκιμάσετε τώρα: Η επίδειξη⁠ παρουσιάζει ένα πλήρες διαβατήριο προϊόντος με δείγματα δεδομένων.

Αυτή είναι η Transpareo Time Machine, η εφαρμογή ανοιχτού κώδικα για καταναλωτές που δημιουργήσαμε για κάθε Ψηφιακό Δελτίο Προϊόντος. Ο κώδικας διατίθεται υπό την άδεια GPL v3 στο GitHub⁠.

Την αναπτύσσουμε επειδή ο κανονισμός της ΕΕ για το Ψηφιακό Δελτίο Προϊόντος γράφτηκε για τους καταναλωτές - για το άτομο που κρατά το προϊόν στα χέρια του. Οι περισσότεροι προμηθευτές το μετατρέπουν σε ένα έντυπο συμμόρφωσης που κανείς δεν σκανάρει δεύτερη φορά. Εμείς το μετατρέπουμε σε μια εφαρμογή που ο καταναλωτής θα ανοίξει.

Τι κάνει η εφαρμογή

Τέσσερα σημεία επαφής από τη σκοπιά του ατόμου που κρατά το προϊόν στα χέρια του. Χωρίς σύνδεση, χωρίς εγκατάσταση εφαρμογής.

1

Σάρωση

Σαρώστε τον κωδικό QR με την κάμερα του smartphone σας. Η εφαρμογή θα ανοίξει στον περιηγητή.

2

Δείτε τα τελευταία νέα

Το προϊόν παρουσιάζεται στο «Τώρα» - συστατικά, υλικά, προέλευση, φροντίδα, ανακύκλωση.

3

Περιήγηση στην ιστορία

Με μια κίνηση σάρωσης γυρίζεις πίσω στο χρόνο. Κάθε προηγούμενη έκδοση με την ημερομηνία και το λόγο της αλλαγής.

4

Κοινοποίηση

Κάθε έκδοση διαθέτει τον δικό της σύνδεσμο. Ένα άτομο μοιράζεται μια συγκεκριμένη έκδοση με φίλους ή αρμόδιες αρχές.

Γιατί, άλλωστε;

Ο κανονισμός της ΕΕ για το ψηφιακό διαβατήριο προϊόντος αποτελεί τη μεγαλύτερη αλλαγή προς την κατεύθυνση της διαφάνειας των προϊόντων εδώ και δεκαετίες. Αν διαβάσει κανείς προσεκτικά τα κείμενα στα οποία βασίζεται, θα διαπιστώσει ότι έχει συνταχθεί ρητά για τους καταναλωτές. Οι αρχές, οι εταιρείες ανακύκλωσης και τα συνεργεία ακολουθούν την τάση, αλλά ο πρωταρχικός αποδέκτης είναι το άτομο που κρατά το προϊόν στα χέρια του.

Από αριθμητική άποψη, το θέμα είναι σαφές. Ένας μέσος Ευρωπαίος ιδιώτης θα μπορεί, μέχρι το τέλος της δεκαετίας, να σαρώνει δεκάδες έως εκατοντάδες διαβατήρια προϊόντων ετησίως. Υπολογιζόμενο σε 200 εκατομμύρια νοικοκυριά, αυτό σημαίνει δισεκατομμύρια αλληλεπιδράσεις με τους καταναλωτές ετησίως. Ο κόσμος των αρχών και των εταιρειών ανακύκλωσης είναι, σε σύγκριση, αριθμητικά αμελητέος.

Αν ο κανονισμός πρόκειται να φτάσει στον καταναλωτή, τότε η ιστοσελίδα για τους καταναλωτές πρέπει να είναι καλά σχεδιασμένη - γρήγορη, ελκυστική, συνεκτική. Διαφορετικά, δεν θα επιτύχει τον σκοπό της. Αποφασίσαμε να δημιουργήσουμε αυτή την ιστοσελίδα για τους καταναλωτές με ανοιχτό κώδικα, ώστε να μην εξαρτάται από έναν μεμονωμένο πάροχο.

Ελέγχθηκε στον περιηγητή, όχι στον διακομιστή μας

Στο πάνω μέρος κάθε δελτίου προϊόντος εμφανίζεται μια ετικέτα: «Επαληθευμένο από την Transpareo». Αυτή δείχνει το αποτέλεσμα ενός ελέγχου που δεν πραγματοποιείται στον διακομιστή μας, αλλά στον περιηγητή του επισκέπτη - με βάση τα φορτωμένα byte και τα δημόσια κλειδιά του κατασκευαστή.

Κάθε έκδοση DPP υπογράφεται από δύο ανεξάρτητους φορείς: τον κατασκευαστή και την Transpareo. Και οι δύο υπογραφές πρέπει να είναι επαληθεύσιμες, ώστε η ετικέτα να γίνει πράσινη. Με το «Bring Your Own Key» (BYOK), ο κατασκευαστής διαχειρίζεται το δικό του τερματικό υπογραφής - η Transpareo δεν κατέχει ποτέ το ιδιωτικό κλειδί και προσθέτει μόνο την ανεξάρτητη αντί-υπογραφή. Έτσι δημιουργείται μια υπογραφή εκδότη, την οποία η ίδια η Transpareo δεν μπορεί να δημιουργήσει. Ένας παραβιασμένος διακομιστής δεν μπορεί να πλαστογραφήσει το τικ, καθώς ο έλεγχος πραγματοποιείται από τον ίδιο τον επισκέπτη.

Όποιος θέλει να μάθει τις λεπτομέρειες, κάνει κλικ στο σήμα. Πίσω από αυτό θα δείτε την αλυσίδα υπογραφών, τα κατακερματισμένα δεδομένα (hashes) και το ιστορικό εκδόσεων. Όποιος επιθυμεί μόνο την πληροφορία, μπορεί απλά να το αγνοήσει και να συνεχίσει την ανάγνωση του δελτίου προϊόντος.

Ο ίδιος έλεγχος διατίθεται και ως αυτόνομη σελίδα: Στην επαλήθευση DPP, εισάγετε τη διεύθυνση URL του manifest οποιουδήποτε δελτίου προϊόντος και βλέπετε το πλήρες αποτέλεσμα του ελέγχου - χωρίς να ανοίξετε το ίδιο το δελτίο.

Δημοσιεύουμε τον κώδικα

Το Transpareo Time Machine διατίθεται υπό την GPL v3 στο GitHub⁠. Κλωνοποίηση, δημιουργία fork, φιλοξενία σε δικό σας διακομιστή - όλα επιτρέπονται. Οι δημοσιευμένες τροποποιήσεις πρέπει με τη σειρά τους να διατίθενται υπό την άδεια GPL v3, ώστε κάθε περαιτέρω ανάπτυξη να εξυπηρετεί το κοινό καλό.

Τρεις τρόποι ενσωμάτωσης του πακέτου:

  • Μέσω ετικέτας script: ένα <script> και ένα <transpareo-time-machine src="…"> στη σελίδα, και έτοιμο - χωρίς βήμα κατασκευής.
  • Μέσω npm: npm install transpareo-time-machine στη δική σας εφαρμογή.
  • Φιλοξενία από εσάς: δημιουργία πακέτου, δική σας υποδομή, μηδενικές εξαρτήσεις από τρίτους κατά την εκτέλεση.

Όποιος χρειάζεται μόνο τον έλεγχο υπογραφής χωρίς την πλήρη προβολή του προϊόντος, μπορεί να εισαγάγει το συναφές στοιχείο <dpp-verifier> - ιδανικό για εργαλεία ελεγκτών. Μπορείτε να το δείτε ζωντανά στην επαλήθευση DPP.

Όσοι χρησιμοποιούν την εφαρμογή με σύνεση

Η εφαρμογή έχει σχεδιαστεί αρχικά για τους καταναλωτές. Ωστόσο, είναι κατάλληλη για όλους όσους επιθυμούν να δουν ή να επαληθεύσουν τα στοιχεία ενός προϊόντος ανεξάρτητα.

  • Οι τελικοί καταναλωτές σαρώνουν, βλέπουν, περιηγούνται, μοιράζονται. Χωρίς σύνδεση, χωρίς ιχνηλάτες.
  • Οι αρχές εποπτείας της αγοράς και οι αρμόδιες υπηρεσίες βλέπουν το «διαβατήριο προϊόντος» σε ένα λογισμικό του οποίου ο πηγαίος κώδικας υπόκειται σε δημόσιο έλεγχο.
  • Τα συνεργεία και οι εταιρείες ανακύκλωσης βλέπουν τη σύνθεση των υλικών και τις οδηγίες αποσυναρμολόγησης απευθείας στο προϊόν.
  • Οι μάρκες και οι διαχειριστές πλατφορμών προσαρμόζουν το πακέτο στη δική τους μάρκα - CSS-Tokens, δικά τους στοιχεία, αυτο-φιλοξενία.

Τι θα συμβεί αν η Transpareo δεν υπάρχει πια

Η ΕΕ απαιτεί το καταχωρημένο δελτίο προϊόντος να παραμένει διαθέσιμο για τουλάχιστον δέκα χρόνια - ακόμη και μετά την πτώχευση ή την εκκαθάριση του κατασκευαστή. Ένας πάροχος SaaS σπάνια διαρκεί τόσο πολύ. Γι’ αυτό και σχεδιάζουμε την πλατφόρμα από την αρχή έτσι ώστε τα διαβατήρια προϊόντων να παραμένουν χρησιμοποιήσιμα ανεξάρτητα από εμάς:

  • Κάθε υπογεγραμμένη έκδοση DPP αποθηκεύεται σε έναν αποθηκευτικό χώρο με δημόσια πρόσβαση. Τα byte καθώς και τα δημοσιευμένα δημόσια κλειδιά αρκούν για μετέπειτα επαλήθευση.
  • Μόλις τα διαβατήρια προϊόντων καταχωριστούν στο μητρώο της ΕΕ, ένας δεύτερος χώρος αποθήκευσης με προστασία από εγγραφή αποθηκεύει κάθε έκδοση του DPP και το αρχείο καταγραφής συμβάντων για επιπλέον δέκα χρόνια. Κανείς - ούτε καν εμείς - δεν μπορεί να τροποποιήσει εκ των υστέρων αυτά τα αντίγραφα ασφαλείας.
  • Μετά από τερματισμό της σύμβασης, οι σύντομες διευθύνσεις URL των δελτίων προϊόντος παραμένουν προσβάσιμες μέσω ανακατεύθυνσης στην πλατφόρμα Transpareo.
  • Το Transpareo Time Machine λειτουργεί κανονικά και με αρχειοθετημένα δεδομένα. Το πακέτο δεν μας καλεί κατά την εκτέλεση· χρειάζεται μόνο τα byte και τα κλειδιά.

Αν η πλατφόρμα Transpareo εξαφανιζόταν αύριο, θα παρέμεναν οι εκδόσεις του DPP και ο ανοιχτού κώδικα renderer.

Για όσους ενδιαφέρονται για την τεχνολογία

Αυτό είναι που συμβαίνει «κάτω από το καπό». Όσοι δεν χρειάζεται να το γνωρίζουν λεπτομερώς, μπορούν να παραλείψουν αυτή την ενότητα - η εφαρμογή θα λειτουργεί κανονικά και χωρίς αυτό.

  • GS1 Digital Link (ISO/IEC 18975): Η διεύθυνση URL του «Product Pass» περιέχει τον κωδικό αναγνώρισης του προϊόντος σε τυποποιημένη μορφή - ανεξάρτητη από τον διαμεσολαβητή, εναλλάξιμη μεταξύ παρόχων.
  • JSON Canonicalization Scheme (RFC 8785): Μια ντετερμινιστική σειριοποίηση. Έτσι, ο κατακερματισμός παραμένει αναπαραγώγιμος ανεξάρτητα από τη σειρά των πεδίων ή τα κενά - ο καθένας μπορεί να τον υπολογίσει μόνος του.
  • W3C Data Integrity Proofs (eddsa-jcs-2022): Υπογραφή Ed25519 πάνω στην κανονικοποιημένη μορφή (JCS).
  • /.well-known/dpp-keys/ (RFC 8615): Τα δημόσια κλειδιά των εκδοτών βρίσκονται σε μια τυποποιημένη διαδρομή - δεν απαιτείται κλήση προς την Transpareo, κάθε επαληθευτής τα εντοπίζει μόνος του.

Όλα τεκμηριώνονται στο README στο GitHub⁠ - συμπεριλαμβανομένης της αρχιτεκτονικής του frontend (δικός μας πυρήνας React, χωρίς εξωτερικά frameworks) και των οδηγιών δημιουργίας για αυτοφιλοξενία.

Δείτε τον κώδικα στο GitHub

Μπορείτε να βρείτε τον πλήρη πηγαίο κώδικα, όλες τις εκδόσεις και τη συζήτηση για το ζήτημα στο δημόσιο αποθετήριο.