Dezvăluire, fără a pierde semnătura

Dezvăluire, fără a pierde semnătura

Transpareo semnează fiecare câmp al unui pașaport de produs în parte, astfel încât chiar și câmpurile protejate să poată fi verificate separat. Cititorul nu trebuie să aibă încredere în platformă.

Un pașaport digital al produsului nu afișează aceleași informații pentru toată lumea. O cumpărătoare vede datele publice. Un atelier de reparații sau o firmă de recondiționare vede mai multe informații. O autoritate de supraveghere a pieței vede totul. Acest aspect este clarificat, iar standardele europene îl prevăd acum în mod expres.

Întrebarea interesantă este mai subtilă: dacă cineva are acces la câmpuri protejate, dincolo de datele publice, poate dovedi că tocmai aceste câmpuri sunt autentice? Sau trebuie să aibă încredere că platforma le-a selectat corect și le-a transmis fără modificări?

Imaginați-vă un notar care nu autentifică scrisoarea în întregime, ci fiecare paragraf în parte. Scrisoarea publică o primește oricine. Cine are dreptul la mai mult, primește paragrafele suplimentare, iar fiecare dintre acestea poartă în continuare sigiliul aceluiași notar. Așa am construit platforma noastră. În cazul majorității platformelor, răspunsul sincer la întrebarea de mai sus este: încredere. În cazul nostru, răspunsul este: dovadă, pentru fiecare câmp care se adaugă abia la momentul divulgării. Acest articol explică de ce această diferență contează și de ce am ales calea mai laborioasă.

Toți respectă în mod egal regula de acces

EN 18239, standardul european privind drepturile de acces, securitatea și confidențialitatea în DPP, impune ca accesul să fie controlat pentru fiecare câmp în parte: pentru fiecare câmp există o regulă care stabilește cine are dreptul să îl vadă. Aceasta este cerința corectă și nu este greu de îndeplinit. Am detaliat statutul acestor standarde în articolul nostru despre standardele armonizate.

Calea obișnuită de a realiza acest lucru este un filtru pe server. Serverul știe cine solicită informațiile, verifică ce are voie să vadă acea persoană și returnează exact acea porțiune de informații. Norma nu cere mai mult de atât. Cititorul trebuie să aibă încredere că serverul a selectat informațiile în mod corect și că nu a modificat nimic pe parcurs. Pentru o broșură publică, acest lucru este acceptabil. Pentru o valoare pe care un procesator o folosește ca bază pentru stabilirea prețului unei baterii uzate, este nevoie de multă încredere.

Există însă o problemă de care norma nu ține cont: fragmentul ajunge fără sigiliu.

Soluția evidentă este semnarea datelor. Pentru cele două extremități ale scalei, o semnătură obișnuită funcționează bine: semnarea vizualizării publice, semnarea setului complet de date. Modul în care se desfășoară acest proces în detaliu este descris în secțiunea „Semnături și certificate” din DPP. În mijloc, însă, lucrurile se complică. O semnătură aplicată asupra întregului document acoperă exact câmpurile care existau în momentul semnării. Dacă se dezvăluie suplimentar unui cititor autorizat un câmp protejat, acest câmp se află în afara setului semnat și ajunge la el neacoperit. Nimeni nu semnează în avans fiecare combinație posibilă de „cine vede ce”, deoarece numărul combinațiilor crește exponențial. Se revine la filtrul fără sigiliu, iar nivelul intermediar se bazează din nou pe încredere.

Semnarea fiecărui câmp în parte

Există o structură mai bună, pe care ne bazăm platforma. În loc să semneze documentul final ca un bloc, producătorul se pronunță asupra fiecărui câmp în parte într-o singură etapă (pentru cei familiarizați cu standardele: procedura W3C ecdsa-sd-2023).

Fiecare vizualizare începe astfel cu aceleași câmpuri publice. Ceea ce vede cititorul în plus se adaugă câmp cu câmp, iar fiecare dintre aceste câmpuri duce în continuare la cheia publică a producătorului, offline, fără o nouă semnare și fără a se baza pe încrederea în entitatea care a alcătuit vizualizarea. Câmpurile fără drept de acces pur și simplu lipsesc. Nu sunt ascunse, ci nu există deloc, iar nimic nu se scurge prin ele.

O etapă: atelierul de reparații

Un atelier de reparații a declarat un interes legitim pentru o baterie, unul dintre nivelurile de acces prevăzute în mod expres de regulamentul privind bateriile. Sistemul atelierului său se autentifică pe interfața noastră cu cheia sa și accesează pașaportul. Răspunsul este același certificat public pe care îl vede și cumpărătoarea, cu un câmp în plus: instrucțiunile de demontare, care sunt dezvăluite doar cititorilor autorizați. Niciun al doilea document, nicio versiune specială.

Înainte ca întreprinderea să se bazeze pe acest câmp, software-ul său verifică semnătura furnizată folosind cheia publică a producătorului. Dacă verificarea semnăturii are succes, inclusiv pentru câmpul suplimentar, întreprinderea știe că aceste instrucțiuni provin exact de la producător, fără ca nimeni să le fi modificat pe parcurs. Dacă verificarea eșuează, el ignoră întreaga pagină. Faptul că primește exact câmpurile care îi revin rămâne în sarcina sistemului nostru de control al accesului. Noutatea constă în pasul următor: el verifică singur dacă ceea ce primește este autentic, fără a ne consulta.

De ce „neîncălcat” este esențial

Un sigiliu intact nu înseamnă că conținutul este adevărat. Acesta spune: exact asta a scris producătorul, iar de atunci nimeni nu a modificat niciun caracter. Astfel, oricine a transmis doar documentul este exclus din chestiunea încrederii: memoria tampon, rețeaua, arhiva, noi.

Nu mai contează cine v-a dat pașaportul.

Iar un sigiliu este binar. Fie este intact, fie nu este; nu există un sigiliu pe jumătate rupt. De aceea, nu este o diferență graduală dacă câmpurile suplimentare ajung la dumneavoastră cu sau fără sigiliul lor: fără sigiliu, ele nu sunt completate într-o măsură mai mică, ci nu sunt completate deloc.

Ambele metode de vizualizare

Oricine poate verifica acest lucru. Transpareo Time Machine este aplicația noastră open-source de vizualizare a pașapoartelor de produs: aceasta parcurge istoricul versiunilor unui pașaport de produs și recalculează fiecare semnătură în browserul utilizatorului, fără a interoga un server al nostru. Certificatul unui tricou conține o semnătură care acoperă întregul document, iar cel al unei baterii conține validarea câmp cu câmp.

Ambele sunt standarde W3C deschise, pe care oricine le poate implementa. Semnătura digitală aplicată întregului document este mult mai ieftină de implementat și de întreținut, iar cei care furnizează doar date publice se descurcă cu aceasta. Faptul că Transpareo Time Machine stăpânește ambele proceduri este intenționat: pașaportul rămâne un format standard obișnuit, care poate fi verificat de orice instrument adecvat, nu doar de al nostru.

Cui îi este util acest lucru și ce prevede standardul

Cui i se dezvăluie, de fapt, ceva în afara datelor publice? Nu cumpărătoarei ocazionale. Ci procesatorului care evaluează valoarea unui pachet de baterii uzate, asiguratorului care stabilește prețul unui risc, reciclatorului care sortează substanțele chimice, autorității care construiește un dosar. Cititorilor ale căror decizii depind de bani sau de siguranță. Și, în abordarea obișnuită, tocmai acești cititori nu primesc nicio marcă de certificare pentru câmpurile pe care se bazează decizia lor. Considerăm că o marcă de certificare ar trebui să însemne același lucru pentru toți: fiecare câmp afișat provine de la producător și nu a mai fost modificat de atunci. Un sigiliu care se aplică doar câmpurilor publice este un sigiliu incomplet.

O spunem deschis: nimic din toate acestea nu este obligatoriu. Standardul EN 18239 impune ca accesul să fie controlat, iar un filtru pe server îndeplinește perfect această cerință. Faptul că facem câmpurile expuse verificabile este un plus din partea noastră, deoarece întregul sens al unui pașaport semnat este ca nimeni să nu fie nevoit să aibă încredere în platformă. Eliminarea nivelului intermediar ca excepție restabilește exact acea încredere pe care semnătura ar fi trebuit să o elimine.

Același principiu permite ca un câmp să fie omis

Stabilirea fiecărui câmp în parte implică o a doua caracteristică, iar aceasta este de fapt impusă de legislația europeană. Regulamentul general privind protecția datelor conferă persoanelor dreptul de a solicita ștergerea datelor cu caracter personal. Un set de date semnat ca un bloc nu poate respecta această cerință fără a-și distruge propria semnătură.

Deoarece aici fiecare câmp este independent, un singur câmp poate fi eliminat, în timp ce restul continuă să fie validat. Dacă datele cu caracter personal ajung din greșeală într-un pașaport, ele sunt eliminate complet, iar pașaportul rămâne valabil: nu este necesară reemiterea acestuia și nu se pierde istoricul. Câmpurile pe care legea impune păstrarea lor rămân intacte; ceea ce poate fi șters poate fi eliminat la cerere, chiar și după ani de zile.

De ce este dificil acest lucru și cum l-am rezolvat

Nu noi am inventat această procedură; este un standard public al W3C. Nu este dificil să ai ideea. Dificil este să o construiești astfel încât un pașaport să poată fi verificat și peste zece ani. O semnătură obișnuită se bazează pe octeții unui document. Semnătura câmp cu câmp se bazează pe datele sale individuale, iar pentru aceasta pașaportul este transformat, înainte de semnare, într-un format fix, în care fiecare dată apare ca o propoziție separată. Acest format trebuie să reapară, caracter cu caracter, peste zece ani; altfel, sigiliul nu se va mai potrivi. Trei aspecte aparent nesemnificative stau în calea acestui lucru, iar noi le-am eliminat pe toate trei de la rădăcină.

Numerele își pierd tipul. O valoare precum 2.0 revine ca 2 după o trecere printr-un format de date obișnuit. Pentru un om este același lucru, pentru formatul fix este o altă propoziție. La noi, fiecare valoare este stocată împreună cu tipul său, iar publicarea se întrerupe de îndată ce apare chiar și un singur număr fără tip.

Denumirile nu reprezintă încă o semnificație. Fiecare nume de câmp trebuie să corespundă unei semnificații unice dintr-un dicționar; în caz contrar, câmpul dispare în tăcere în timpul conversiei, iar sigiliul nu îl acoperă. La noi, fiecare dicționar este disponibil local și nu este niciodată preluat de pe internet; un nume de câmp necunoscut oprește semnarea, în loc să returneze în tăcere un rezultat gol.

Înregistrările au nevoie de nume fixe. Fiecare înregistrare din document poartă la noi un identificator fix, astfel încât ortografia să rămână aceeași la fiecare execuție, în loc să se atribuie de fiecare dată nume auxiliare noi.

Partea cea mai delicată ține de cheia proprie a producătorului. Pentru fiecare eliberare este necesară o cheie suplimentară, de scurtă durată, cu ajutorul căreia câmpurile care pot fi divulgate sunt semnate individual. Această cheie este generată și eliminată chiar de producător. Dacă ar fi la noi, am putea inventa ulterior câmpuri individuale. Fiecare pașaport poartă două astfel de sigilii, unul al producătorului și unul al Transpareo, chiar și pentru un câmp dezvăluit individual.

Pentru noi, acest efort este justificat. Prin intermediul Transpareo Proofchain, fiecare pașaport este semnat la publicare și legat de versiunea anterioară, iar Transpareo Vault, arhiva inalterabilă pe zece ani, intră în vigoare imediat ce pașapoartele sunt înregistrate în registrul UE. Semnarea fiecărui câmp în loc de întregul bloc reprezintă o extindere a acestui nucleu, nu o adăugire.

Unde ne aflăm

Am optat pentru dovadă, pentru fiecare cititor, deoarece un sigiliu ar trebui să însemne același lucru, indiferent de cine îl privește. Pentru cei care doresc să vadă cum funcționează: cele două pașapoarte de exemplu, la care se face referire mai sus, pot fi verificate direct în browser, fără a interoga un server.

Întrebări referitoare la această postare

Există vreo normă care să impună semnătura pe fiecare câmp în parte?

Nu. EN 18239, standardul european privind drepturile de acces în DPP, impune ca accesul să fie controlat pentru fiecare câmp în parte, iar un filtru pe server îndeplinește pe deplin această cerință. Faptul că facem ca câmpurile expuse să poată fi verificate este o decizie a noastră și nu o cerință impusă de vreo reglementare. Considerăm că acest efort este justificat, deoarece întregul sens al unui pașaport semnat constă în faptul că nimeni nu trebuie să aibă încredere în platformă. Statutul acestor standarde este prezentat în articolul nostru privind standardele armonizate.

Publicăm doar date publice. Este nevoie de asta?

Probabil că nu, și o spunem deschis. O semnătură care acoperă întregul document include un pașaport ale cărui câmpuri sunt toate publice, iar costurile de implementare și exploatare sunt semnificativ mai mici. Autentificarea câmp cu câmp devine utilă de îndată ce apare un al doilea grup țintă, cum ar fi o rețea de reparații, o firmă de reciclare sau o autoritate căreia, în mod normal, i-ați înmâna extrase fără sigiliu. Ambele proceduri sunt standarde deschise W3C (ecdsa-sd-2023 pentru semnătura câmp cu câmp), orice instrument care stăpânește standardul le poate verifica, iar ambele funcționează astăzi în Transpareo Time Machine, pe „pașaportul” unui tricou și pe „pașaportul” unei baterii.

Se pot șterge ulterior datele cu caracter personal fără a se invalida pașaportul?

Da, iar acest aspect este într-adevăr impus de legislația europeană. Regulamentul general privind protecția datelor (RGPD) conferă persoanelor dreptul de a solicita ștergerea datelor cu caracter personal, iar un set de date semnat ca bloc nu poate respecta această cerință fără a-și distruge propria semnătură. Deoarece aici fiecare câmp este definit separat, un singur câmp poate fi eliminat, în timp ce restul elementelor continuă să fie valide, fără a fi necesară reemiterea și fără a afecta istoricul versiunilor. Câmpurile pe care legea impune păstrarea lor rămân intacte.

Cine deține cheia de semnătură?

Fiecare pașaport poartă două sigilii, iar unul dintre ele poate fi al dumneavoastră. Fiecare eliberare necesită, în plus, o cheie cu valabilitate limitată, care semnează individual câmpurile care pot fi divulgate; aceasta este generată și eliminată chiar de către producător, deoarece, dacă ar fi în posesia noastră, am putea inventa ulterior anumite câmpuri. Verificăm sigiliul primit înapoi folosind cheia publică stocată, înainte de a-i acorda încredere. Fiecare pașaport poartă astfel două sigilii ale unor autorități independente, atât pentru un câmp dezvăluit individual, cât și pentru întregul set de date.

Pașaportul va mai fi valabil peste zece ani?

Tocmai aici rezidă efortul. Semnătura câmp cu câmp se calculează pe baza datelor individuale ale unui document, nu pe baza octeților acestuia; prin urmare, aceeași formă fixă trebuie să reia, zece ani mai târziu, caracter cu caracter. Trei lucruri perturbă acest proces, iar noi le-am eliminat pe toate trei de la rădăcină. Fiecare valoare este stocată împreună cu tipul său, fiecare dicționar se află la noi și nu este niciodată preluat de pe internet, iar fiecare înregistrare poartă un identificator fix. Arhiva imuabilă pe zece ani este creată și devine operațională imediat ce pașapoartele sunt înregistrate în registrul UE. Mai multe detalii în analiza noastră privind Regulamentul privind registrul.

Actualizări privind nivelurile de acces și documentele justificative

Divulgarea selectivă, semnăturile și evoluția standardelor DPP - un rezumat lunar direct în căsuța dvs. de e-mail.