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 evropski standardi to sada izričito propisuju.
Zanimljivije pitanje je suptilnije: ako se nekome prikažu zaštićena polja uz javne podatke, može li provjeriti da su ta konkretna 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 na takav način da je odgovor ‘dokaz’ - ne samo za javna polja, već za svako polje koje se dodaje tek u trenutku otkrivanja. Zašto je ova razlika važna i zašto smo odabrali zahtjevniji put.
Svi se pridržavaju pravila o pristupu na isti način
EN 18239, evropski standard za prava pristupa, sigurnost i povjerljivost u DPP-u, zahtijeva kontrolu pristupa na nivou svakog elementa podataka: za svako polje postoji pravilo koje uređuje ko ima dozvolu da ga vidi. Ovo je ispravan zahtjev i nije ga teško ispuniti. Status ovih standarda detaljno smo opisali pod harmonizirani standardi.
Uobičajen način da se to postigne je filtriranjem na strani servera. Server zna ko je uputio zahtjev, provjerava šta 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. Čitaoc dobija prikaz posebno prilagođen za njega i mora vjerovati da ga je server iskreno odabrao i da nije ništa mijenjao usput. Za javni informativni list, to je u redu. Za vrijednost na osnovu koje procesor određuje cijenu polovne baterije, to zahtijeva veliko povjerenje.
Gdje pojedinačni potpis doseže svoje granice
Očigledno rješenje je potpisati podatke. Za oba kraja skale, standardni potpis dobro funkcionira: potpisati javni prikaz, potpisati kompletan skup podataka i provjeriti oba pomoću javnog ključa bez posredovanja servera. Kako ovo detaljno funkcioniše objašnjeno je u Potpisi i certifikati u DPP-u.
Problem je u sredini. Potpis koji pokriva cijeli dokument pokriva tačno jedan skup polja, naime ona koja su bila prisutna u trenutku potpisivanja. Ako ovlaštenom čitaocu bude odobren pristup dodatnom zaštićenom polju, to polje se nalazi izvan potpisanog skupa i stiže mu nepotpisano. Ako se, s druge strane, cijeli skup podataka potpiše od samog početka, potpis zaista pokriva sve, ali bi se onda sve moralo pokazati svima.
Stoga se međufaze previde: servis, osiguravač, recikler. Da bi se unaprijed potpisala svaka moguća kombinacija ‘ko-šta-vidi’, bio bi potreban zaseban potpisani dokument za svaku kombinaciju, a broj kombinacija vrtoglavo raste sa svakom dodatnom grupom pristupa. Niko to ne radi. Povlači se na nepotpisani filter servera, a srednja faza se ponovo 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, izdavač pojedinačno specificira svako polje u jednom potpisivanju (za one upoznate sa standardima: W3C specifikacija ecdsa-sd-2023 za selektivno otkrivanje).
Svaki prikaz počinje s javnim jezgrom
Svaki prikaz stoga počinje s istim javnim poljima. Sve što čitalac vidi iznad toga dodaje se polje po polje, a svako od tih polja i dalje se može pratiti do javnog ključa izdavatelja - offline, 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 proističe.
Zašto je ‘neprekinutost’ suština
Zamislite notara koji ne ovjerava pismo u cjelini, već svaki odlomak pojedinačno. Svi dobijaju javno pismo. Svako ko ima pravo na više dobija dodatne odlomke, a svaki od njih i dalje nosi pečat istog notara. U uobičajenom postupku, platforma ispisuje te odlomke za vas, a ono što dobijete nosi samo njenu riječ.
Zašto je ‘neprekinutost’ toliko važna vrijedi objasniti malo detaljnije. Netaknuti pečat ne garantuje da je sadržaj istinit. On potvrđuje: ovo je tačno ono što je izdavaoc napisao i niko nije izmijenio ni jedan znak od tada. To znači da je svako ko je samo proslijedio dokument - posrednik, mreža, arhiva, mi - isključen iz pitanja povjerenja. Više nije važno ko vam je dao pasoš.
A pečat je binaran. Ili postoji ili ne postoji; ne postoji polulomljen 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 stepena da li dodatna polja dolaze sa svojim pečatom ili bez njega: bez pečata, ona nisu samo manje sigurno provjerena; ona uopće nisu provjerena.
Obje metode pregleda
Svako može ovo provjeriti za sebe. Transpareo Time Machine je naša aplikacija otvorenog koda za ### pregledpasoša proizvoda: ona prolazi kroz historiju verzija pasoša i provjerava svaki potpis u pregledniku korisnika bez upita na jedan od naših servera. Unutar nje su javno dostupna dva primjera pasoša. Pasoš za majicu sadrži potpis koji pokriva cijeli dokument, dok pasoš za bateriju prikazuje otkrivanje 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. Svako ko želi može ih implementirati. Trud koji je potreban je razlog zašto to mnogi neće učiniti: potpis za cijeli dokument je znatno jeftiniji za postavljanje i korištenje, i svako ko pruža samo javne podatke može se zadovoljiti time.
Činjenica da Time Machine podržava obje metode je namjerna i tako će i ostati. Ne pripada nijednoj platformi. Verifikator koji prihvata samo skuplju metodu bio bi alat samo za nas i ni za koga drugog.
Kome se otkrivaju zaštićena polja
Vrijedi se zapitati kome se, pored javnih podataka, uopće išta otkriva. Ne obični kupac - on dobija javni certifikat. To je procesor koji procjenjuje vrijednost upotrijebljenog paketa baterija, osiguravač koji određuje cijenu rizika, recikler koji razvrstava hemikalije i organ vlasti koji vodi postupak. To su čitaoci čije odluke ovise o novcu ili sigurnosti.
I upravo su to polja koja ostaju neotkrivena prema standardnom pristupu. Oni koji bi imali najveći razlog da žele kriptografsku verifikaciju, ne dobijaju je, od svih stvari, upravo za ona polja koja su temelj njihove odluke.
Vjerujemo da znak certifikacije treba značiti isto za sve. “Verified by Transpareo” znači isto u detaljnom izvještaju radionice za popravke kao i na javnom certifikatu kupca: svako prikazano polje potiče od izdavatelja i od tada nije bilo mijenjano. Pečat koji pokriva samo javne polja je samo 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 filter na strani servera savršeno dobro kontroliše pristup. Kriptografska provjera objavljenih polja je nešto što radimo uz to; to nije obaveza koju treba samo odškrcnuti kako bi se ispunila regulativa.
Upravo zato se isplati to zapisati. Bilo bi lako poštovati pismo standarda, isporučiti filter na strani servera i deklarisati nivo kao kompletan. Mi preferiramo obavezu koja se primjenjuje gdje god se pojavi pečat. Uostalom, cijela poenta potpisanog pasoša je u tome da niko ne mora vjerovati platformi. Izuzimanje srednjeg sloja vratilo bi upravo ono povjerenje koje je potpis trebao eliminirati.
Ist princip znači da se jedno polje zanemaruje
Obavezivanje na svako polje pojedinačno sa sobom donosi drugi zahtjev, a on je zapravo propisan evropskim zakonom. Opća uredba o zaštiti podataka daje ljudima pravo na brisanje svojih ličnih podataka. Zapis podataka potpisan kao jedan blok ne može ispuniti ovaj uslov bez uništavanja vlastitog potpisa.
Budući da je svako polje ovdje samostalno, jedno polje se može ukloniti, dok sve ostalo ostaje provjerljivo. Ako se lični podaci slučajno nađu u pasošu, mogu se uredno ukloniti, a pasoš ostaje važeći: nema potrebe za izdavanjem novog pasoša, nema prekidanja historije. Regulatorna polja koja zakon nalaže da se zadrže ostaju na mjestu; sve što se može izbrisati može se ukloniti na zahtjev, čak i godinama kasnije.
Ipak, to je potpuno običan pasoš
Ništa od ovoga ne pretvara pasoš u poseban objekt koji mogu otvoriti samo naši alati. On ostaje provjerljiva iskaznica (Verifiable Credential) u JSON-LD formatu, formatu prema kojem se kreće svijet web standarda, i istom formatu koji koriste Protokol transparentnosti UN-a i širi W3C ekosistem.
Putovnica koju kupac skenira u svom pregledniku stoga je isti objekt koji partner iz sobe za podatke može pročitati, a koji svaki verifikator usklađen sa standardima može provjeriti, ne samo naš. Dodatna sigurnost čitaoca ne košta ništa i nikoga ne veže za nas.
Zašto je ovo tehnički izazovno
Prije svega, da izbjegnemo bilo kakvo nerazumijevanje: mi nismo izmislili ovaj proces. ecdsa-sd-2023 je javna W3C specifikacija; kriptografija koja stoji iza toga nije naša, i svako ko želi da je implementira može o njoj pročitati. Nije teško doći do ideje. Teškoća leži u tome da se izgradi na takav način da će potpis i za deset godina ostati važeći. Tu je posao, i o tome se može reći nešto korisno.
Razlika može zvučati neznatno, ali mijenja osnovni pristup: standardni potpis vrši proračune na bajtovima dokumenta. Selektivno otkrivanje se obračunava na osnovu svojih izjava. Prije potpisivanja, pasoš 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.
Ovo uvodi problem koji potpis zasnovan na bajtovima nema: isti standardizirani oblik mora biti tačno reproduciran za deset godina. Ne približno, već znak po znak; u suprotnom, dokaz više neće biti važeći. Tri stvari stoje na putu tome, i sve tri su neupadljive.
Brojevi gube svoj tip. Ako napišete broj kao običan JSON, informacija o tome o kakvom se broju radilo se izgubi usput. Vrijednost poput 2.0 se nakon obrade JSON-om vraća kao 2. Za čovjeka je to isto, ali za standardizirani oblik to je drugačija izjava, te validacija ne uspijeva.
Oznake još ne predstavljaju značenje. Da bi se pojavila standardizirana forma, naziv svakog polja mora odgovarati jedinstvenom značenju. Ako neko nedostaje, polje tiho nestaje tokom konverzije. Zatim se pojavljuje u pasošu, ali dokaz to ne pokriva i niko ne primjećuje.
Značenja se obično pronalaze na internetu. Ovo mapiranje je sadržano u rječniku koji većina alata preuzima s weba tokom validacije. Svako ko to radi čini validabilnost svog pasoša zavisnom od adrese 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 korijenu, umjesto da ih otkrivamo naknadno.
Tipovi. Svaka vrijednost je zapisana sa svojim tipom, a objavljivanje se zaustavlja čim se u standardizovanom obliku pojavi i samo jedan broj bez tipa. Greška se time 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 lozinka pohranjuje se lokalno na našem sistemu i nikada se ne preuzima s interneta. Nepoznata adresa rezultira prisilnim prekidom tokom potpisivanja, umjesto tihog preusmjeravanja na prazan rezultat.
Identifikatori. Svaki čvor u dokumentu ima stabilan identifikator, što osigurava da standardizirani obrazac ostane reproducibilan, umjesto da se pri svakom pokretanju dodjeljuju novi pomoćni nazivi.
Najzamršeniji dio leži u konceptu ‘Ponesi svoj ključ’. Za svako izdavanje potreban je dodatni, kratkotrajni ključ, pomoću kojeg se polja koja se otkrivaju potpisuju pojedinačno. Izdavatelj sam generiše i odbacuje ovaj ključ. Da ga mi posjedujemo, mogli bismo retroaktivno izmišljati pojedinačna polja, a nezavisnost potpisa izdavatelja bila bi samo tvrdnja. Provjeravamo vraćeni dokaz pomoću pohranjenog javnog ključa prije nego što mu povjerujemo.
Svaki pasoš sadrži dva takva dokaza: jedan od izdavatelja i jedan od Transparea, a svaki se nezavisno izveden za pregled čitaoca. Dva potpisa, dvije nezavisne 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 pasoš se potpisuje prilikom objavljivanja i povezuje sa prethodnom verzijom. Nepovratna desetogodišnja arhiva se uspostavlja i stupa na snagu čim se pasoši registruju u [EU DPP registar].(/de/blog/dpp-register-ist-gesetz). Potpisivanje svakog polja umjesto cijelog bloka je proširenje ove osnovne funkcionalnosti, a ne dodatak nečemu što nikada nije bilo namijenjeno za ovu svrhu.
Naša pozicija
Jednostavno rečeno, izbor je jasan. Možete otkriti zaštićena polja i zamoliti čitaoca da vjeruje vašem filtru - to ispunjava standard. Ili ih možete otkriti i istovremeno pružiti dokaz - to ispunjava viši standard, za koji vjerujemo da ova polja zaslužuju.
Odlučili smo se za dokaz, radi svakog čitaoca, jer pečat treba da znači jedno te isto, bez obzira ko ga gleda. Za one koji to žele vidjeti u akciji: dvije demo verzije na koje se linkuje iznad provjeravaju se direktno u pregledniku, offline, koristeći samo javni ključ.
