Razkritje brez izgube podpisa

Razkritje brez izgube podpisa

Kdor dobi dostop do zaščitenih polj, mora ponavadi zaupati platformi. Vsako polje podpisujemo posebej, da jih je mogoče preveriti tudi samostojno.

Digitalni potni list izdelka ne prikazuje vsem istega. Kupec vidi javne podatke. Servis ali podjetje za obdelavo vidi več. Organ za nadzor trga vidi vse. To je jasno, evropski standardi pa to zdaj tudi izrecno določajo.

Zanimivo vprašanje je nekoliko bolj subtilno: če nekdo poleg javnih podatkov vidi tudi zaščitena polja, ali lahko dokaže, da so prav ta polja resnična? Ali pa mora zaupati, da jih je platforma pravilno izbrala in posredovala nespremenjena?

Predstavljajte si notarja, ki ne overi pisma v celoti, ampak vsak odstavek posebej. Javno pismo prejme vsakdo. Kdor ima pravico do več, prejme dodatne odstavke, vsak od njih pa še naprej nosi pečat istega notarja. Tako smo zgradili našo platformo. Pri večini platform je iskren odgovor na zgornje vprašanje: zaupanje. Pri nas pa je: dokaz za vsako polje, ki se doda šele ob razkritju. Ta članek pojasnjuje, zakaj je ta razlika pomembna in zakaj smo se odločili za zahtevnejšo pot.

Pravilo dostopa vsi izpolnjujejo enako

EN 18239, evropski standard za pravice dostopa, varnost in zaupnost v DPP, zahteva, da se dostop nadzira po posameznih poljih: za vsako polje obstaja pravilo, kdo ga sme videti. To je prava zahteva in ni težko jo izpolniti. Kakšen status sploh imajo ti standardi, smo podrobno razložili v našem prispevku o usklajenih standardih.

Običajna pot do tega je filter na strežniku. Strežnik ve, kdo poizveduje, preveri, kaj ta oseba sme videti, in vrne natanko ta izsek. Več standard ne zahteva. Obstaja pa ena težava, s katero se standard ne ukvarja: izsek prispe brez pečata. Bralec mora verjeti, da je strežnik izbor opravil pošteno in da med prenosom ni ničesar spremenil. Za javni informativni list je to v redu. Za vrednost, na kateri obdelovalec takoj utemelji ceno rabljene baterije, pa je to precejšnje zaupanje.

Najbolj očitna rešitev je podpisovanje podatkov. Na obeh koncih lestvice dobro deluje običajni podpis: podpis javnega pregleda in podpis celotnega niza podatkov. Kako to poteka v podrobnostih, je opisano v poglavju »Podpisi in certifikati« v DPP. V sredini pa se sistem zlomi. Podpis celotnega dokumenta zajema natanko tista polja, ki so bila ob podpisu prisotna. Če pooblaščenemu bralcu dodatno razkrijemo zaščiteno polje, leži to polje zunaj podpisanega obsega in pride do njega nezavarovano. Nihče ne more vnaprej podpisati vsake možne kombinacije »kdo vidi kaj«, saj se število kombinacij eksponentno poveča. Zato se zatečemo k filtru brez pečata, srednja stopnja pa spet temelji na zaupanju.

Podpisovanje vsakega polja posebej

Obstaja boljša rešitev, na kateri gradimo platformo. Namesto da bi podpisali končni dokument kot en blok, se avtor v enem samem koraku opredeli za vsako polje posebej (za poznavalce standardov: postopek W3C ecdsa-sd-2023).

Vsak pogled se začne z istimi javnimi polji. Kar bralec vidi poleg tega, se dodaja polje za poljem, vsako od teh polj pa še naprej vodi nazaj do javnega ključa proizvajalca, in sicer offline, brez ponovnega podpisovanja in brez zaupanja v organ, ki je sestavil ta pogled. Polja brez pravice preprosto manjkajo. Niso zamazana, ampak jih sploh ni, in o njih ne pricurlja ničesar.

En krog: servisna delavnica

Servisna delavnica je za baterijo prijavila upravičen interes, kar je ena od stopenj dostopa, ki jih Uredba o baterijah izrecno predvideva. Njegov servisni sistem se s svojim ključem prijavi na naš vmesnik in pridobi potrdilo. Odgovor je isto javno potrdilo, ki ga vidi tudi kupec, le da je obogateno za natanko eno polje: navodila za demontažo, ki so razkrita le pooblaščenim bralcem. Ni drugega dokumenta, ni posebne različice.

Preden se servis zanaša na to polje, njegova programska oprema preveri priloženi pečat z javnim ključem proizvajalca. Če je preverjanje uspešno, tudi glede dodatnega polja, ve: ta navodila izvirajo do zadnjega znaka od proizvajalca in nihče na poti ni ničesar spremenil. Če preverjanje ni uspešno, celoten prikaz odloži na stran. Da prejme natanko tista polja, ki mu pripadajo, ostaja naloga našega nadzora dostopa. Novost je naslednji korak: ali je tisto, kar prispe, resnično, preveri sam, brez da bi nas vprašal.

Zakaj je »nepoškodovan« ključnega pomena

Nepoškodovan pečat ne pomeni, da je vsebina resnična. Pomeni: točno to je napisal izdajatelj in od takrat nihče ni spremenil niti enega znaka. S tem iz vprašanja zaupanja izpade vsak, ki je dokument le posredoval naprej: vmesni pomnilnik, omrežje, arhiv, mi. Kdo vam je izročil potni list, ni več pomembno.

Pečat je binaren. Ali drži ali ne drži, polomljenega pečata ni. Zato ni postopne razlike, ali dodatna polja prispejo k vam s pečatom ali brez njega: brez pečata niso le nekoliko manj verodostojna, ampak sploh niso verodostojna.

Oba načina za ogled

To lahko vsakdo preveri sam. Transpareo Time Machine je naša odprtokodna aplikacija za prikaz potrdil o izdelkih: listaja po zgodovini različic potrdila in pri tem v brskalniku uporabnika ponovno izračuna vsak podpis, ne da bi se pri tem posvetovala z našim strežnikom. Potrdilo za majico vsebuje podpis za celoten dokument, potrdilo za baterijo pa potrditev po posameznih poljih.

Oba sta odprta standarda W3C, ki ju lahko vsakdo implementira. Podpis, ki zajema celoten dokument, je bistveno cenejši za vzpostavitev in vzdrževanje, in tistim, ki posredujejo le javne podatke, to zadostuje. Dejstvo, da Time Machine obvlada oba postopka, je namerno: potrdilo ostaja običajen standardni format, ki ga lahko preveri vsako ustrezno orodje, ne le naše.

Komu to koristi in kaj zahteva standard

Komu se sploh razkrije kaj več kot le javni podatki? Ne naključni kupci. To so predelovalec, ki oceni vrednost rabljenega akumulatorja, zavarovalec, ki določi ceno tveganja, reciklator, ki razvršča kemikalije, in organ, ki sestavlja primer. Bralci, katerih odločitve so odvisne od denarja ali varnosti. In po običajnem pristopu ravno tisti bralci, ki za polja, na katerih temelji njihova odločitev, ne dobijo pečata. Menimo, da bi moral certifikacijski pečat za vse pomeniti isto: vsako prikazano polje izvira od proizvajalca in od takrat ni bilo spremenjeno. Znak, ki velja le za javna polja, je le polovičen znak.

Povedali bomo odkrito: nič od tega ni predpisano. Standard EN 18239 zahteva, da se dostop nadzoruje, in filter na strežniku to opravlja brezhibno. Da bi bila razkrita polja preverljiva, to storimo še dodatno, saj je smisel podpisanega potnega lista prav v tem, da nihče ne sme biti prisiljen zaupati platformi. Izvzetje srednje stopnje kot izjeme ponovno vzpostavi prav tisto zaupanje, ki naj bi ga podpis odpravil.

Isto načelo omogoča, da se polje pozabi

Določanje vsakega polja posebej prinaša še eno lastnost, ki jo dejansko zahteva evropska zakonodaja. Splošna uredba o varstvu podatkov daje posameznikom pravico do izbrisa osebnih podatkov. Podatkovni niz, podpisan kot en blok, tega ne more izpolniti, ne da bi uničil lastni podpis.

Ker je tukaj vsako polje samostojno, je mogoče odstraniti posamezno polje, medtem ko ostalo še naprej velja. Če osebni podatki po pomoti pridejo v potni list, se jih lahko brez težav odstrani, potni list pa ostane veljaven: ni potrebe po ponovni izdaji, zgodovina ostane neprekinjena. Polja, ki jih zakon zahteva ohraniti, ostanejo nespremenjena; tisto, kar je mogoče izbrisati, se lahko na zahtevo izbriše, tudi še leta kasneje.

Zakaj je to težko in kako smo to rešili

Postopka nismo izumili mi, gre za javni standard W3C. Težko ni imeti idejo. Težko je jo izvesti tako, da bo potni list še čez deset let deloval. Običajni podpis se izračuna na podlagi bajtov dokumenta. Podpis po posameznih poljih se izračuna na podlagi posameznih podatkov, zato se potrdilo pred podpisovanjem preoblikuje v fiksno obliko, v kateri je vsak podatek predstavljen kot samostojen stavek. Ta zapis se mora čez deset let ponoviti znak za znakom, sicer pečat ne bo več ustrezal. Temu stojijo na poti tri neopazne stvari, ki smo jih vse tri odpravili pri korenu.

Številke izgubijo svoj tip. Vrednost, kot je 2,0, se po prehodu skozi običajen podatkovni format vrne kot 2. Za človeka je to isto, za fiksno zapisanje pa je to drugačen stavek. Pri nas se vsaka vrednost shrani skupaj s svojim tipom, objava pa se prekine, takoj ko se pojavi tudi le ena številka brez tipa.

Oznake še ne pomenijo pomena. Vsako ime polja mora voditi do edinstvenega pomena v slovarju, sicer polje med pretvorbo tiho izgine in pečat ga ne pokrije. Pri nas je vsak slovar na voljo lokalno in se nikoli ne pridobiva prek omrežja; neznano ime polja ustavi podpisovanje, namesto da bi tiho vrnilo prazen rezultat.

Vnosi potrebujejo fiksna imena. Vsak vnos v dokumentu ima pri nas fiksno identifikacijo, da ostane zapis pri vsakem prehodu enak, namesto da bi vsakič dodeljevali nova pomožna imena.

Najbolj občutljiv del je v lastnem ključu proizvajalca. Za vsako izdajo je potreben dodatni, kratkotrajen ključ, s katerim se posamezna polja, ki se lahko razkrijejo, podpisujejo. Ta ključ ustvari in zavrže proizvajalec sam. Če bi bil pri nas, bi lahko posamezna polja naknadno izmislili. Vsak potni list nosi dva takšna pečata, enega proizvajalca in enega podjetja Transpareo, tudi za posamezno razkrito polje.

Za nas je ta napor upravičen. Vsak potni list se ob objavi podpiše in poveže s prejšnjo različico, nespremenljiv desetletni arhiv pa začne veljati takoj, ko so potni listi registrirani v registru EU-DPP. Podpisovanje posameznih polj namesto celotnega bloka je razširitev tega jedra, ne pa dodatek.

Kje smo

Odločili smo se za dokaz za vsakega bralca, saj naj bi pečat pomenil eno in isto, ne glede na to, kdo ga gleda. Kdor želi videti, kako deluje: oba zgoraj povezana vzorčna potrdila se preverjata neposredno v brskalniku, brez poizvedbe na strežniku.

Vprašanja v zvezi s tem prispevkom

Ali kateri standard predpisuje podpis po posameznih poljih?

Ne. EN 18239, evropski standard za pravice dostopa v DPP, zahteva, da se dostop nadzira po posameznih poljih, kar filter na strežniku v celoti izpolnjuje. Da so razkrita polja poleg tega preverljiva, je naša odločitev in ne le obveznost, ki jo predpisuje katera koli uredba. Menimo, da je ta trud upravičen, saj je smisel podpisanega potnega lista prav v tem, da platformi nihče ne mora zaupati. Kakšen status imajo te standarde, je navedeno v našem prispevku o usklajenih standardih.

Objavljamo le javne podatke. Ali to sploh potrebujemo?

Verjetno ne, in to tudi odkrito priznavamo. Podpis, ki zajema celoten dokument, pokriva potni list, katerega polja so vsa javna, njegova vzpostavitev in vzdrževanje pa sta precej cenejša. Odobritev po posameznih poljih se splača, takoj ko se pridruži druga ciljna skupina, na primer servisna mreža, podjetje za recikliranje ali urad, katerim bi sicer predložili izvlečke brez pečata. Oba postopka sta odprta standarda W3C (ecdsa-sd-2023 za podpis po posameznih poljih), vsako orodje, ki obvlada ta standard, ju lahko preveri, in oba danes delujeta v Transpareo Time Machine, na potnem listu majice in na potnem listu baterije.

Ali je mogoče osebne podatke kasneje izbrisati, ne da bi s tem razveljavili potni list?

Da, in to dejansko zahteva evropska zakonodaja. Splošna uredba o varstvu podatkov daje posameznikom pravico do izbrisa osebnih podatkov, podatkovni zapis, podpisan kot blok, pa te zahteve ne more izpolniti, ne da bi uničil lastni podpis. Ker je tukaj vsako polje določeno posebej, je mogoče posamezno polje odstraniti, medtem ko ostalo še naprej izpolnjuje pogoje, brez ponovne izdaje in brez prekinjene zgodovine različic. Polja, ki jih zakon zahteva ohraniti, ostanejo nespremenjena.

Kdo hrani podpisni ključ?

Vsak potni list nosi dva pečata, eden od njiju pa je lahko vaš. Vsaka izdaja potrebuje še kratkotrajni ključ, ki posamično podpiše polja, ki se lahko razkrijejo; tega ustvari in uniči sam izdajatelj, saj bi lahko, če bi bil v naših rokah, posamezna polja naknadno izmislili. Vrnjeni pečat preverimo z uporabo shranjenega javnega ključa, preden mu zaupamo. Vsak potni list tako nosi dva pečata dveh neodvisnih organov, tako za posamezno razkrito polje kot za celoten niz podatkov.

Ali bo potni list še veljaven čez deset let?

Prav v tem je težava. Podpis po posameznih poljih temelji na posameznih podatkih dokumenta in ne na njegovih bajtih, zato se mora isti fiksni zapis desetletje kasneje ponoviti znak za znakom. Tri stvari to preprečujejo, mi pa smo vse tri odpravili pri korenini. Vsaka vrednost se shrani skupaj s svojim tipom, vsak slovar je shranjen pri nas in se nikoli ne pridobiva prek omrežja, vsak vnos pa ima fiksno identifikacijsko oznako. Nespremenljiv desetletni arhiv je vzpostavljen in začne delovati takoj, ko so potni listi registrirani v registru EU. Več o tem v naši analizi uredbe o registru.

Novosti glede ravni dostopa in dokazil

Selektivno razkritje, podpisi in razvoj standardov DPP - vsak mesec v strnjenem pregledu v vašem nabiralniku.