Otkriti, a da se ne izgubi potpis

Otkriti, a da se ne izgubi potpis

Svaki čitatelj putovnice proizvoda prima iste javne podatke; neki također dobivaju ograničena polja. Suptilnije je pitanje donose li ta dodatna polja vlastiti dokaz. Svako polje potpisujemo pojedinačno, tako da se čak i objavljeno polje može provjeriti javnim ključem - izvan mreže, bez potrebe za kontaktom s nama.

Digitalni pasoš proizvoda ne prikazuje svima iste informacije. Kupac vidi javne podatke. Servis ili obnavljač vidi više. Tijelo za nadzor tržišta vidi sve. To je razjašnjeno, a europski standardi to sada izričito propisuju.

Zanimljivije je pitanje suptilnije prirode: ako se nekome prikažu zaštićena polja uz javne podatke, može li provjeriti jesu li ta specifična polja autentična? Ili mora vjerovati da ih je platforma ispravno odabrala i prenijela nepromijenjena?

Za većinu platformi, iskren odgovor je: povjerenje. Mi smo svoju izgradili tako da je odgovor ‘dokaz’ - ne samo za javna polja, već i za svako polje koje se dodaje tek u trenutku otkrivanja. Zašto je ta razlika važna i zašto smo odabrali zahtjevniji put.

Svi se na isti način pridržavaju pravila o pristupu

EN 18239, europski standard za prava pristupa, sigurnost i povjerljivost u DPP-u, zahtijeva kontrolu pristupa na razini svakog pojedinog elementa podataka: za svako polje postoji pravilo koje određuje tko je ovlašten vidjeti ga. To je ispravan zahtjev i nije ga teško ispuniti. Status ovih standarda detaljno smo opisali pod harmonizirani standardi.

Uobičajen način za postizanje toga je filtriranje na strani poslužitelja. Poslužitelj zna tko upućuje zahtjev, provjerava što ta osoba smije vidjeti i vraća upravo taj dio. Kontrola pristupa: riješena. Standard ne zahtijeva ništa više.

Međutim, postoji jedna caka koju standard ne rješava: Odjeljak stiže nepotpisan. Čitatelj prima prikaz posebno prilagođen njemu i mora vjerovati da ga je poslužitelj odabrao pošteno i da nije ništa mijenjao usput. Za javni informativni letak, to je u redu. Za vrijednost na temelju koje recikler određuje cijenu rabljene baterije, to zahtijeva veliko povjerenje.

Gdje pojedinačni potpis doseže svoje granice

Očito rješenje jest potpisati podatke. Za oba kraja ljestvice standardni potpis dobro funkcionira: potpisati javni prikaz, potpisati cjelokupni skup podataka i provjeriti oba pomoću javnog ključa bez posredovanja poslužitelja. Kako to detaljno funkcionira objašnjeno je u Potpisi i certifikati u DPP-u.

Problem nastaje u sredini. Potpis koji pokriva cijeli dokument pokriva točno jedan skup polja, i to ona koja su bila prisutna u trenutku potpisivanja. Ako ovlaštenom čitatelju bude dodijeljen dodatni pristup zaštićenom polju, to polje izlazi izvan potpisanog skupa i stiže mu nepotpisano. Ako se, s druge strane, cijeli skup podataka potpiše od samog početka, potpis obuhvaća sve, ali bi se onda sve moralo pokazati svima.

Stoga se međukoraci propuštaju: servis, osiguravatelj, recikler. Kad bi se unaprijed potpisivala svaka moguća kombinacija ‘tko-što-vidi’, za svaku kombinaciju bio bi potreban zaseban potpisani dokument, a broj kombinacija naglo raste sa svakom dodatnom grupom pristupa. Nitko to ne radi. Vraća se na nepotpisani filtar poslužitelja, a srednja faza ponovno se oslanja na povjerenje.

Potpisivanje svakog polja pojedinačno

Postoji bolji pristup i to je onaj na kojem gradimo platformu. Umjesto potpisivanja gotovog dokumenta kao jednog bloka, izdavatelj pojedinačno specificira svako polje u jednom potpisivanju (za one upoznate sa standardima: W3C specifikacija ecdsa-sd-2023 za selektivno otkrivanje).

Svaki prikaz započinje javnim jezgrom

Svaki prikaz stoga započinje istim javnim poljima. Sve što čitatelj vidi nakon toga dodaje se polje po polje, a svako od tih polja i dalje se može pratiti do javnog ključa izdavatelja - izvan mreže, bez potrebe za ponovnim potpisivanjem i bez oslanjanja na entitet koji je sastavio prikaz. Polja za koja ne postoji ovlaštenje jednostavno nedostaju. Nisu cenzurirana, već ih uopće nema i ništa o njima ne prozvuka.

Zašto je “neprekinutost” glavna poanta

Zamislite javnog bilježnika koji ne ovjerava pismo u cjelini, već svaki odlomak pojedinačno. Svi dobivaju javno pismo. Svatko tko ima pravo na više dobiva dodatne odlomke, a svaki od njih i dalje nosi pečat istog javnog bilježnika. U uobičajenom postupku platforma upisuje te odlomke za vas, a ono što primate nosi samo njezinu riječ.

Zašto je “neprekinutost” toliko važna vrijedi objasniti malo detaljnije. Netaknuti pečat ne jamči da je sadržaj istinit. On navodi: ovo je točno ono što je izdavatelj napisao i nitko nije izmijenio ni jedan znak od tada. To znači da je svatko tko je samo proslijedio dokument - posrednik, mreža, arhiv, mi - isključen iz pitanja povjerenja. Više nije važno tko vam je dao putovnicu.

A pečat je binaran. Ili je neoštećen ili nije; ne postoji polomljen pečat. Ako se prekine, nećete znati koja je rečenica izmijenjena, samo da više ne možete vjerovati cijelom dokumentu. Zato nije stvar stupnja dolaze li dodatna polja sa svojim pečatom ili bez njega: bez pečata, ona nisu samo manje sigurno provjerena; ona uopće nisu provjerena.

Obje metode pregledavanja

Svatko to može provjeriti za sebe. Transpareo Time Machine je naša aplikacija otvorenog koda za pregled putovnica proizvoda: ona prolazi kroz povijest verzija putovnice i provjerava svaki potpis u pregledniku korisnika bez upita na jednom od naših poslužitelja. Unutar nje javno su dostupna dva primjera putovnica. Putovnica za majicu sadrži potpis koji pokriva cijeli dokument, dok putovnica za bateriju prikazuje podatke polje po polje.

Obje su otvorene W3C specifikacije: eddsa-jcs-2022 za potpis koji pokriva cijeli dokument i ecdsa-sd-2023 za otkrivanje podataka polje po polje. Svatko tko želi može ih implementirati. Trud koji je potreban razlog je zašto to mnogi neće učiniti: potpis za cijeli dokument znatno je jeftiniji za postavljanje i korištenje, a svatko tko pruža samo javne podatke može se zadovoljiti time.

Činjenica da Time Machine podržava obje metode je namjerna i ostat će takva. Ne pripada nijednoj platformi. Verifikator koji prihvaća samo skuplju metodu bio bi alat samo za nas i nikoga drugog.

Kome se otkrivaju zaštićena polja

Vrijedi se zapitati kome se, osim javnih podataka, uopće išta otkriva. Ne obični kupac - on dobiva javni certifikat. To je obrađivač koji procjenjuje vrijednost iskorištenog paketa baterija, osiguravatelj koji određuje cijenu rizika, recikler koji razvrstava kemikalije i tijelo koje vodi postupak. To su čitatelji čije odluke ovise o novcu ili sigurnosti.

I upravo su to polja koja ostaju neotkrivena prema standardnom pristupu. Oni koji imaju najveći razlog za željeti kriptografsku provjeru ne dobivaju je, od svih stvari, upravo za ona polja koja su temelj njihove odluke.

Vjerujemo da bi oznaka certifikata trebala značiti isto svima. “Provjereno od strane Transparea” znači isto na detaljnom izvješću radionice za popravke kao i na javnom certifikatu kupca: svako prikazano polje potječe od izdavatelja i od tada nije bilo mijenjano. Pečat koji pokriva samo javne polja samo je pola pečata.

Više od onoga što standard zahtijeva

Da budemo jasni: ništa od ovoga nije obavezno. EN 18239 zahtijeva kontrolu pristupa, a filtar na strani poslužitelja savršeno dobro kontrolira pristup. Kriptografska provjera objavljenih polja nešto je što radimo uz to; to nije obaveza koju nam propis nameće i koju samo treba odraditi.

Upravo zato vrijedi to zapisati. Bilo bi lako uskladiti se s pismom standarda, isporučiti filtar na strani poslužitelja i proglasiti razinu dovršenom. Mi se radije obvezujemo primjenjivati ga gdje god se pojavi pečat. Uostalom, cijela je poanta potpisanog putovnice u tome da nitko ne mora vjerovati platformi. Isključivanje srednjeg sloja vratilo bi upravo ono povjerenje koje je potpis trebao ukloniti.

Isto načelo znači da se jedno polje zanemaruje

Pojedinačno navođenje svakog polja sa sobom donosi drugi zahtjev, a on je zapravo propisan europskim pravom. Opća uredba o zaštiti podataka daje ljudima pravo na brisanje svojih osobnih podataka. Zapis podataka potpisan kao jedan blok ne može to ispuniti bez uništenja vlastitog potpisa.

Budući da je ovdje svako polje samostalno, jedno polje se može ukloniti, dok sve ostalo ostaje provjerljivo. Ako se osobni podaci slučajno nađu u putovnici, mogu se čisto ukloniti, a putovnica ostaje važeća: nema potrebe za izdavanjem nove, bez narušene povijesti. Regulatorna polja koja zakon nalaže zadržati ostaju na snazi; sve što se može izbrisati može se ukloniti na zahtjev, čak i godinama kasnije.

Ipak, to je posve običan putovnica

Ništa od toga ne pretvara putovnicu u poseban objekt koji mogu otvoriti samo naši alati. Ona ostaje provjerljiva iskaznica (Verifiable Credential) u JSON-LD formatu, formatu prema kojem se kreće svijet web standarda, i istom formatu koji koriste Protokol o transparentnosti UN-a i širi W3C ekosustav.

Putovnica koju kupac skenira u svom pregledniku stoga je isti objekt koji partner iz sobe za podatke može pročitati, a koji svaki provjeravatelj usklađen sa standardima može provjeriti, ne samo naš. Dodatna sigurnost čitatelja ne košta ništa i nikoga ne veže za nas.

Zašto je to tehnički izazovno

Prije svega, da izbjegnemo bilo kakvo nerazumijevanje: mi nismo izmislili ovaj proces. ecdsa-sd-2023 je javna specifikacija W3C-a; kriptografija koja stoji iza toga nije naša i svatko tko je želi implementirati može o njoj pročitati. Nije teško doći na ideju. Teškoća leži u izradi sustava tako da će potpis i za deset godina ostati valjan. U tome je posao, a o tome se može reći nešto korisno.

Razlika može zvučati neznatno, ali mijenja temeljni pristup: standardni potpis vrši izračune na bajtovima dokumenta. Selektivno otkrivanje izračunava se na temelju svojih izjava. Prije potpisivanja, putovnica se pretvara u standardizirani oblik u kojem je svaki dio informacije predstavljen kao zasebna, samostalna izjava. Tek tada je moguće izostaviti izjavu, a da se ne ugrozi ostatak.

To uvodi problem koji potpis temeljen na bajtovima nema: isti standardizirani oblik mora se točno reproducirati za deset godina. Ne približno, već znak po znak; inače dokaz više neće biti valjan. Tri stvari stoje na putu tome, i sve su tri neupadljive.

Brojevi gube svoj tip. Ako broj napišete kao običan JSON, informacija o tome o kojoj se vrsti broja radi gubi se usput. Vrijednost poput 2.0 nakon prolaska kroz JSON vraća se kao 2. Za čovjeka je to isto, ali za standardizirani oblik to je drugačija izjava i validacija ne uspijeva.

Oznake još ne čine značenje. Da bi se pojavila standardizirana forma, naziv svakog polja mora odgovarati jedinstvenom značenju. Ako jedan nedostaje, polje se tiho gubi tijekom pretvorbe. Zatim se pojavljuje u putovnici, ali dokaz to ne pokriva i nitko ne primjećuje.

Značenja se obično pronalaze na internetu. Ovo mapiranje sadržano je u rječniku koji većina alata preuzima s weba tijekom validacije. Svako tko to čini čini validnost svog putovnice ovisnom o adresi treće strane koja će i za deset godina i dalje odgovarati - i ostati nepromijenjena.

Kako smo to riješili

Riješili smo tri problema u samom korijenu, umjesto da ih otkrivamo naknadno.

Tipovi. Svaka vrijednost zapisana je sa svojim tipom, a objava se zaustavlja čim se u standardiziranom obliku pojavi i samo jedan broj bez tipa. Greška se stoga otkriva tamo gdje košta samo jednu liniju koda, a ne godinama kasnije kao neobjašnjiv neuspjeh validacije.

Rječnici. Svaki rječnik na koji se poziva potpis pohranjuje se lokalno na našem sustavu i nikada se ne dohvaća putem interneta. Nepoznata adresa dovodi do prisilnog prekida tijekom potpisivanja, a ne do tihog prebacivanja na prazan rezultat.

Identifikatori. Svaki čvor u dokumentu ima stabilan identifikator, što osigurava da standardizirani obrazac ostane reproducibilan, umjesto da se pri svakom izvođenju dodjeljuju nova pomoćna imena.

Najzahtjevniji dio leži u načelu “Ponesi svoj ključ”. Za svako izdavanje potreban je dodatni, kratkotrajni ključ pomoću kojeg se pojedinačno potpisuju polja koja se otkrivaju. Izdavatelj sam generira i odbacuje taj ključ. Da ga mi posjedujemo, mogli bismo retroaktivno izmišljati pojedinačna polja, a neovisnost potpisa izdavatelja bila bi samo tvrdnja. Provjeravamo vraćeni dokaz pomoću pohranjenog javnog ključa prije nego što mu vjerujemo.

Svaki putovnica sadrži dva takva dokaza: jedan od izdavatelja i jedan od Transparea, a svaki se neovisno izračunava za pregled čitatelja. Dva potpisa, dvije neovisne vlasti - čak i za jedno otkriveno polje.

Za nas se ovaj napor itekako isplati. Provjerljivost nismo dodali naknadno; platforma je izgrađena na ovom principu od prve verzije. Svaki se putovnica potpisuje prilikom objave i povezuje s prethodnom verzijom. Nepovratni desetogodišnji arhiv uspostavlja se i stupa na snagu čim se putovnice registriraju u [EU DPP registru].(/de/blog/dpp-register-ist-gesetz). Potpisivanje svakog polja, a ne cijelog bloka, proširenje je ove temeljne funkcionalnosti, a ne dodatak nečemu što nikada nije bilo namijenjeno za tu svrhu.

Naša pozicija

Jednostavno rečeno, izbor je jasan. Možete otkriti zaštićena polja i zamoliti čitatelja da vjeruje vašem filtru - to zadovoljava standard. Ili ih možete otkriti i istovremeno pružiti dokaz - to zadovoljava viši standard, za koji vjerujemo da ova polja zaslužuju.

Odlučili smo se za dokaz, za svakog čitatelja, jer pečat treba značiti jedno te isto, bez obzira na to tko ga gleda. Za one koji to žele vidjeti u akciji: dvije demo verzije na gornjim poveznicama provjeravaju se izravno u pregledniku, izvan mreže, koristeći samo javni ključ.

Novosti o razinama pristupa i dokazima

Selektivno otkrivanje, potpisi i razvoj DPP standarda - mjesečni pregled izravno u vaš sandučić.