Digitaalne tootepass ei näita kõigile sama teavet. Ostja näeb avalikku teavet. Remonditöökoda või taaskasutaja näeb rohkem. Turujärelevalveasutus näeb kõike. See on selge ja Euroopa standardid sätestavad seda nüüd selgesõnaliselt.
Huvitav küsimus on aga veidi varjatum: kui kellelegi avaldatakse lisaks avalikele andmetele ka kaitstud väljad, kas ta saab siis tõendada, et just need väljad on ehtsad? Või peab ta lootma, et platvorm on need õigesti välja valinud ja muutmata kujul edasi andnud?
Enamiku platvormide puhul on aus vastus: usaldus. Meie oleme oma platvormi ehitanud nii, et vastuseks on tõend - mitte ainult avalike väljade puhul, vaid iga välja puhul, mis lisandub alles avalikustamisel. Miks see erinevus on oluline ja miks me oleme selleks valinud keerulisema tee.
Juurdepääsureeglit täidavad kõik ühtmoodi
EN 18239, Euroopa standard juurdepääsuõiguste, turvalisuse ja konfidentsiaalsuse kohta DPP-s, nõuab juurdepääsu kontrolli iga andmeelemendi puhul: iga välja jaoks on reegel, kes seda näha tohib. See on õige nõue ja seda pole raske täita. Milline on nende standardite staatus üldse, oleme lahti seletanud rubriigis harmoniseeritud standardid.
Tavaliselt saavutatakse see serveripoolse filtreerimise abil. Server teab, kes päringut teeb, kontrollib, mida see isik näha tohib, ja edastab tagasi just selle osa. Juurdepääsu kontroll: tehtud. Rohkem standard ei nõua.
Siin on aga üks konks, millega standard ei tegele: Väljavõte saabub allkirjastamata. Lugeja saab enda jaoks koostatud vaate ja peab uskuma, et server on valiku ausalt teinud ega ole teel midagi muutnud. Avaliku teabelehe puhul on see korras. Kuid väärtuse puhul, millele andmete töötleja tugineb kasutatud patarei hinna määramisel, on see liiga suur usaldus.
Kus üksik allkiri jõuab oma piirini
Kõige loogilisem lahendus on andmed allkirjastada. Skaala mõlemas otsas toimib tavaline allkiri hästi: allkirjastada avalik vaade, allkirjastada täielik andmekogum ning mõlemad kontrollitakse avalikku võtit kasutades, ilma et vahele jääks server. Kuidas see täpsemalt toimib, on kirjeldatud artiklis Allkirjad ja sertifikaadid DPP-s.
Keskosas tekib aga probleem. Kogu dokumendi allkirjastamine hõlmab täpselt ühte väljade kogumit, nimelt neid, mis allkirjastamise hetkel olemas olid. Kui volitatud lugejale avatakse täiendavalt üks kaitstud väli, jääb see väli allkirjastatud kogumi väljapoole ja jõuab temani katmata kujul. Kui aga allkirjastada kohe algusest peale kogu andmekogum, hõlmab allkiri küll kõike, kuid siis tuleks kõigile kõike näidata.
Vahepealsed tasemed jäävad seega lüüsi vahele: remonditöökoda, kindlustusandja, ringlussevõtja. Kui soovitaks eelnevalt allkirjastada iga võimaliku „kes-näeb-mida” kombinatsiooni, oleks vaja iga kombinatsiooni jaoks eraldi allkirjastatud dokumenti, ning kombinatsioonide arv kasvab plahvatuslikult iga uue juurdepääsurühma lisandumisega. Seda ei tee keegi. Tuleb tagasi pöörduda allkirjastamata serverifiltri juurde ja vahepealne lüli tugineb jälle usaldusele.
Iga välja eraldi allkirjastamine
On olemas parem lahendus ja sellele rajame me oma platvormi. Selle asemel, et allkirjastada valmis dokument ühe plokina, määrab väljastaja ühe allkirjastamisvooru jooksul iga välja eraldi kindlaks (standarditega kursis olevatele: W3C-tõend ecdsa-sd-2023 valikulise avalikustamise jaoks).
Iga vaade algab avalikust tuumast
Iga vaade algab seega samade avalikest väljadest. See, mida lugeja lisaks näeb, lisandub välihaaval, ja igaüks neist väljadest viib endiselt tagasi väljastaja avalikule võtmele - offline-režiimis, ilma uuesti allkirjastamiseta ja ilma usalduseta vaate koostanud asutuse vastu. Väljad, millele pole õigust, puuduvad lihtsalt. Neid ei ole mustaks värvitud, vaid neid pole üldse olemas, ja nende kohta ei lekita midagi.
Miks „katkematus” ongi kogu asja mõte
Kujutlege notarit, kes ei kinnita kirja tervikuna, vaid iga lõiku eraldi. Avaliku kirja saab igaüks. Kes on õigustatud saama rohkem, saab lisalõigud juurde, ja igaüks neist kannab endiselt sama notari pitserit. Tavapärase menetluse puhul kirjutab platvorm need lõigud teie eest ümber, ja see, mis teieni jõuab, kannab vaid teie sõna.
Miks „katkematu“ siin oluline on, väärib veel ühte lauset. Terve pitser ei tähenda, et sisu on tõene. See tähendab: just seda on väljastaja kirjutanud ja sellest ajast peale pole keegi selles midagi muutnud. Seega jääb usaldusküsimusest välja igaüks, kes on dokumenti vaid edasi andnud - vahemälu, võrk, arhiiv, meie. Kes teile passi andis, ei oma enam tähtsust.
Ja pitser on binaarne. See püsib või ei püsigi, poolikult purunenud pitserit ei ole olemas. Kui pitser murdub, ei saa te teada, millist lauset on muudetud, vaid ainult seda, et kogu lehele ei saa enam usaldada. Seetõttu ei ole see järkjärguline erinevus, kas lisaväljad jõuavad teieni koos pitseriga või ilma: ilma pitserita ei ole need mitte veidi nõrgemalt täidetud, vaid üldse mitte täidetud.
Mõlema meetodi vaatamine
Igaüks saab seda ise kontrollida. Transpareo Time Machine on meie avatud lähtekoodiga rakendus tootepasside ### vaatamiseks: see sirvib passi versioonide ajalugu ja arvutab sealjuures iga allkirja vaataja brauseris uuesti läbi, ilma et peaks meie serverilt midagi küsima. Selles on avalikult kättesaadavad kaks näidispassi. T-särgi passil on kogu dokumendi hõlmav allkiri, patarei passil aga väljade kaupa avalikustatud andmed.
Mõlemad on avatud W3C-spetsifikatsioonid: eddsa-jcs-2022 kogu dokumendi hõlmava allkirja jaoks, ecdsa-sd-2023 väljade kaupa avalikustamise jaoks. Neid saab rakendada igaüks, kes soovib. Vaev on põhjus, miks paljud seda ei tee: kogu dokumendi hõlmav allkiri on märkimisväärselt odavam luua ja hallata, ning kes edastab ainult avalikku teavet, saab sellega hakkama.
See, et Time Machine valdab mõlemat meetodit, on taotluslik ja jääb nii. See ei kuulu ühelegi platvormile. Kontrollija, kes aktsepteerib ainult kallimat meetodit, oleks tööriist meile ja mitte kellelegi teisele.
Kellele avalikustatakse kaitstud väljad
Tasub küsida, kellele üldse avalikustatakse midagi lisaks avalikele andmetele. Mitte juhuslikule ostjale - tema saab avaliku passi. Need on töötleja, kes hindab kasutatud akupaki väärtust; kindlustusandja, kes hindab riski; ringlussevõtja, kes sorteerib kemikaale; ametiasutus, kes koostab juhtumi toimikut. Need on lugejad, kelle otsused sõltuvad rahast või turvalisusest.
Ja just need väljad jäävad tavapärases lähenemisviisis katmata. Kes oleks kõige enam huvitatud krüptograafilisest tõendist, ei saa seda just nendes valdkondades, millel põhineb tema otsus.
Meie arvates peaks kontrollmärgis kõigile sama tähendama. „Transpareo poolt kontrollitud“ tähendab remonditöökoja laiendatud vaates sama, mis ostja avalikus sertifikaadis: iga näidatud valdkond pärineb väljastajalt ja seda pole sellest ajast saadik muudetud. Pitser, mis kehtib ainult avalikele väljadele, on poolik pitser.
Rohkem, kui standard nõuab
Ütleme seda avameelselt: midagi sellest ei ole kohustuslik. ## StandardEN 18239 nõuab, et juurdepääsu kontrollitaks, ja serveripoolne filter kontrollib juurdepääsu veatult. Ka avalikustatud väljade krüptograafiliselt kontrollitavaks muutmine on midagi, mida me teeme lisaks, mitte nõue, mida regulatsioon meilt nõuab.
Just seetõttu on seda väärt kirja panna. Oleks lihtne täita standardi sõnastust, pakkuda välja serverifilter ja kuulutada see etapp lõpetatuks. Me eelistame, et lubadus kehtiks kõikjal, kus pitser esineb. Sest allkirjastatud passi kogu mõte seisneb selles, et keegi ei pea platvormi usaldama. Keskmise taseme erandina välja jätmine taastab just selle usalduse, mille allkiri pidi kõrvaldama.
Sama põhimõte laseb ühe välja unustada
Iga välja eraldi määratlemine toob kaasa teise omaduse, mida Euroopa õigus tegelikult nõuab. Isikuandmete kaitse üldmäärus annab inimestele õiguse lasta isikuandmed kustutada. Ühe plokina allkirjastatud andmekogum ei suuda seda nõuet täita ilma oma allkirja hävitamata.
Kuna siin on iga väli eraldi, saab ühe väli eemaldada, samas kui ülejäänud osa jääb endiselt kontrollitavaks. Kui isikuandmed satuvad kogemata passi, saab need sealt puhtalt välja võtta ja pass jääb kehtivaks: pole vaja uut passi väljastada ega ajalugu katkestada. Seadusega säilitamiseks nõutud regulatiivsed väljad jäävad alles; see, mida on võimalik kustutada, saab soovi korral kustutada isegi aastaid hiljem.
Sellest hoolimata on tegemist täiesti tavalise passiga
Miski sellest ei muuda passi eriobjektiks, mida suudavad avada ainult meie tööriistad. See jääb verifitseeritavaks tunnistuseks JSON-LD-vormingus, mille poole veebistandardite maailm liigub, ning samas vormingus, mida kasutavad ÜRO läbipaistvusprotokoll ja ülejäänud W3C-keskkond.
Pass, mida ostja brauseris skaneerib, on seega sama objekt, mida andmeruumi partner saab sisse lugeda, ja iga standarditele vastav kontrollija saab seda kontrollida, mitte ainult meie oma. Lisaturvalisus ei maksa lugejale midagi ega seo kedagi meiega.
Miks see on tehniliselt keeruline
Esmalt, et ei tekiks valet muljet: meie ei ole seda protseduuri leiutanud. ecdsa-sd-2023 on avalik W3C-spetsifikatsioon, selle aluseks olev krüptograafia ei pärine meilt, ja kes soovib seda rakendada, võib selle kohta lugeda. Raske ei ole ideed välja mõelda. Raske on see nii ehitada, et parool toimiks veel kümne aasta pärast. Just selles peitub töö, ja selle kohta saab midagi kasulikku öelda.
Erinevus tundub väike, kuid see muudab aluspõhimõtet: tavaline allkiri teeb arvutusi dokumendi baitide põhjal. Valikuline avalikustamine arvutab selle väidete põhjal. Pass viiakse enne allkirjastamist standardiseeritud vormi, kus iga andmeväide esineb eraldi, iseseisva lausena. Alles sel viisil on võimalik üks lause välja jätta, ilma et see kahjustaks ülejäänuid.
Sellega kaasneb probleem, mida bait-allkirjal ei ole: sama standardiseeritud vorm peab kümne aasta pärast täpselt samasugusena taastuma. Mitte ligikaudselt, vaid tähemärgihaaval, vastasel juhul ei sobi tõend enam kokku. Selle teostamisele seisavad takistuseks kolm asja, ja need kõik kolm on tähtsusetud.
Arvud kaotavad oma tüübi. Kui arv kirjutatakse lihtsalt JSON-ina, läheb teel kaduma, milline arv see oli. Väärtus nagu 2,0 tuleb pärast ühte ringi JSON-is tagasi kui 2. Inimese jaoks on see sama, standardiseeritud vormi jaoks aga teine lause, ja kontroll ebaõnnestub.
Nimetused ei tähenda veel midagi. Et standardvorm tekiks, peab iga väljanimi viima üheainsa tähenduseni. Kui üks puudub, kaob väli teisendamisel vaikimisi. See on siis küll passis olemas, kuid tõend seda ei hõlma ja keegi ei märka seda.
Tähendused asuvad tavaliselt võrgus. See seos on sõnastikus, mille enamik tööriistu kontrollimisel võrgust alla laadib. Kes seda teeb, sõltub oma passi kontrollitavus sellest, et võõras aadress vastab veel kümne aasta pärast ja seda muutumatul kujul.
Kuidas me selle lahendasime
Me sulgesime need kolm punkti juba alguses, selle asemel et neid hiljem kinni püüda.
Tüübid. Iga väärtus kirjutatakse koos oma tüübiga ning avaldamine katkeb niipea, kui standardvormis ilmub kasvõi üks tüübita arv. Viga ilmneb seega kohe, kus see maksab ühe rea, mitte aastaid hiljem seletamatu kontrollirikkumisena.
Sõnastikud. Iga sõnastik, millele pass viitab, on meil kohapeal olemas ja seda ei laadita kunagi internetist alla. Tundmatu aadress põhjustab allkirjastamise käigus kohe katkestuse, mitte vaikset tagasilangemist tühja tulemuseni.
Identifikaatorid. Igal dokumendi sõlmel on stabiilne identifikaator, et standardvorm jääks reprodutseeritavaks, selle asemel et iga läbiviimise korral uusi abinimesid määrata.
Kõige delikaatsem osa peitub funktsioonis „Bring Your Own Key”. Iga väljastamise jaoks on vaja täiendavat, lühiajalist võtit, millega avalikustatavad väljad ükshaaval allkirjastatakse. Selle võtme genereerib ja tühistab väljastaja ise. Kui see oleks meie käes, saaksime üksikuid välju tagantjärele välja mõelda ja väljastaja allkirja sõltumatus oleks vaid väide. Enne kui me tagastatud tõendit usaldame, kontrollime seda salvestatud avalikuga võtmega.
Igal passil on kaks sellist tõendit: üks väljastajalt ja teine Transpareolt, ning mõlemad tuletatakse lugeja jaoks vaatamiseks sõltumatult. Kaks allkirja, kaks üksteisest sõltumatut autoriteeti, isegi ühe üksiku avalikustatud välja puhul.
Meie jaoks on see vaev õigesti paigutatud. Me ei ole kontrollitavust hiljem juurde lisanud; platvorm on selle ümber loodud juba esimesest versioonist alates. Iga pass allkirjastatakse avaldamisel ja aheldatakse eelmise versiooniga. Muutumatu kümneaastane arhiiv on loodud ja hakkab toimima niipea, kui passid on registreeritud EL-DPP-registris registreeritakse. Iga välja allkirjastamine kogu ploki asemel on selle tuuma laiendus, mitte lisandus millelegi, mida selleks kunagi mõeldud ei olnud.
Kus me praegu oleme
Kui asja lihtsustada, on valik lihtne. Võite avalikustada kaitstud väljad ja paluda lugejal usaldada teie filtrit - see vastab standardile. Või võite need avalikustada ja lisada kohe ka tõendi - see vastab kõrgemale nõudele, mida need väljad meie arvates väärivad.
Oleme otsustanud tõendi kasuks iga lugeja jaoks, sest pitser peaks tähendama ühte ja sama asja, olenemata sellest, kes seda vaatab. Kes soovib näha, kuidas see toimib: kaks eespool viidatud demo versiooni kontrollivad end otse brauseris, võrguühenduseta, kasutades ainult avalikku võtit.
