Közzététel a szignatúra megőrzése mellett

Közzététel a szignatúra megőrzése mellett

A termékigazolvány minden olvasója ugyanazokat a nyilvános adatokat kapja meg, egyesek pedig ezen felül védett mezőket is. A kérdés az, hogy ezek a kiegészítő mezők rendelkeznek-e hitelesítéssel. Minden mezőt külön aláírunk, így még a nyilvánosságra hozott mezők is ellenőrizhetők egy nyilvános kulcs segítségével - offline módon, anélkül, hogy hozzánk kellene fordulniuk.

A digitális termékigazolvány nem mindenkinek ugyanazt mutatja. Egy vásárló a nyilvános adatokat látja. Egy javítóműhely vagy újrahasznosító több információt lát. A piacfelügyeleti hatóság pedig mindent lát. Ez egyértelmű, és az európai szabványok mára kifejezetten rögzítik ezt.

Az érdekes kérdés azonban kevésbé nyilvánvaló: ha valakinek a nyilvános adatokon túl védett mezők is hozzáférhetővé válnak, akkor bizonyítani tudja-e, hogy éppen ezek a mezők hitelesek? Vagy bízni kell abban, hogy a platform helyesen válogatta ki és változatlanul továbbította azokat?

A legtöbb platform esetében az őszinte válasz: bizalom. Mi a miénket úgy építettük fel, hogy a válasz „bizonyíték” legyen - nemcsak a nyilvános mezők esetében, hanem minden olyan mező esetében is, amely csak a nyilvánosságra hozatal során kerül hozzáadásra. Miért számít ez a különbség, és miért választottuk ennek érdekében a bonyolultabb utat.

A hozzáférési szabályt mindenki egyformán teljesíti

Az EN 18239, az európai szabvány a DPP-ben a hozzáférési jogokról, a biztonságról és a titkosságról, adat elemenkénti hozzáférés-vezérlést ír elő: minden mezőhöz tartozik egy szabály, hogy ki láthatja azt. Ez a helyes követelmény, és nem nehéz teljesíteni. Hogy ezeknek a szabványoknak egyáltalán milyen státuszuk van, azt a harmonizált szabványok című bejegyzésünkben részleteztük.

A szokásos módszer erre a szerveroldali szűrés. A szerver tudja, ki kérdez, ellenőrzi, hogy az adott személy mit láthat, és pontosan ezt a kivonatot adja vissza. Hozzáférés-vezérlés: megoldva. A szabvány nem követel többet.

Van azonban egy bökkenő, amivel a szabvány nem foglalkozik: A kivonat aláírás nélkül érkezik. Az olvasó egy számára összeállított nézetet kap, és el kell hinnie, hogy a szerver becsületesen válogatta össze az adatokat, és az átvitel során semmit sem módosított. Egy nyilvános tájékoztató esetében ez rendben van. De egy olyan érték esetében, amelyre egy feldolgozó egy használt elem árát alapozza, ez már nagy bizalom.

Ahol egy egyetlen aláírás határait elérjük

A kézenfekvő megoldás az adatok aláírása. A skála mindkét végén jól működik egy hagyományos aláírás: aláírjuk a nyilvános nézetet, aláírjuk a teljes adatsort, és mindkettőt egy nyilvános kulccsal ellenőrizzük, anélkül, hogy egy szerver állna közöttük. Hogy ez részletesen hogyan zajlik, azt a Aláírások és tanúsítványok a DPP-ben című bejegyzésben olvashatja.

A közepén azonban megakad a dolog. A teljes dokumentumra vonatkozó aláírás pontosan egy mezőkészletet fed le, nevezetesen azokat, amelyek az aláíráskor jelen voltak. Ha egy jogosult olvasó számára egy védett mezőt is hozzáférhetővé teszünk, ez a mező a aláírt halmazon kívül esik, és fedezet nélkül jut el hozzá. Ha viszont eleve a teljes adatsort aláírjuk, az aláírás ugyan mindent lefed, de akkor mindenkinek mindent meg kellene mutatnunk.

A köztes szintek így kiesnek a rendszerből: a javítóműhely, a biztosító, az újrahasznosító. Ha előre aláírnánk a „ki mit lát” minden lehetséges kombinációját, kombinációnként egy saját aláírt dokumentumra lenne szükség, és a kombinációk száma minden további hozzáférési csoporttal robbanásszerűen megnő. Ezt senki sem teszi. Visszatérünk az aláíratlan szerveres szűrőhöz, és a közbenső lépés ismét a bizalmon alapul.

Minden mező egyenkénti aláírása

Van egy jobb megoldás, és erre építjük fel a platformot. Ahelyett, hogy a kész dokumentumot egy blokként aláírná, a kibocsátó egyetlen aláírási lépésben minden mezőt külön-külön határoz meg (a szabványok ismerőinek: a W3C ecdsa-sd-2023 tanúsítványa a szelektív nyilvánosságra hozatalhoz).

Minden nézet a nyilvános magból indul

Minden nézet ugyanazokkal a nyilvános mezőkkel kezdődik. Amit az olvasó ezen felül lát, az mezőről mezőre kerül hozzáadásra, és ezek a mezők mindegyike továbbra is a kibocsátó nyilvános kulcsához vezet vissza - offline módban, újbóli aláírás nélkül és anélkül, hogy meg kellene bízni abban a szervezetben, amely a nézetet összeállította. A jogosultság nélküli mezők egyszerűen hiányoznak. Nem feketére festve, hanem egyáltalán nincsenek ott, és semmi sem szivárog ki róluk.

Miért éppen a „törhetetlenség” a lényeg

Képzeljünk el egy közjegyzőt, aki nem a levelet egészében hitelesíti, hanem minden bekezdést külön-külön. A nyilvános levelet mindenki megkapja. Aki többre jogosult, megkapja a kiegészítő bekezdéseket is, és mindegyik továbbra is ugyanazon közjegyző pecsétjét viseli. A szokásos eljárás során a platform leírja ezeket a bekezdéseket az Ön számára, és ami Önhöz eljut, az már csak az ő szavát viseli.

Miért fontos ebben az esetben a „sértetlen” kifejezés, azt érdemes még egy mondatban kifejteni. Egy sértetlen pecsét nem azt jelenti, hogy a tartalom igaz. Azt jelenti: pontosan ezt írta a kibocsátó, és azóta senki sem változtatott rajta semmit. Így mindenki kiesik a bizalmi körből, aki csak továbbította a dokumentumot - a köztes tároló, a hálózat, az archívum, mi magunk. Már nem számít, ki adta át Önnek az okmányt.

És a pecsét bináris. Vagy megmarad, vagy nem; félig törött pecsét nem létezik. Ha megszakad, nem tudhatja meg, melyik mondatot módosították, hanem csak azt, hogy az egész lapnak már nem bízhat. Ezért nem fokozatos különbség, hogy a kiegészítő mezők a pecséttel együtt érkeznek-e Önhöz, vagy anélkül: pecsét nélkül nem csak valamivel gyengébb a hitelességük, hanem egyáltalán nincs hitelességük.

Mindkét eljárás megtekintése

Ezt mindenki saját maga ellenőrizheti. A Transpareo Time Machine a termékigazolványokhoz készült nyílt forráskódú megjelenítő alkalmazásunk: végiglapozza az igazolvány verziótörténetét, és közben a néző böngészőjében számolja ki az egyes aláírásokat, anélkül, hogy a mi szerverünket kérdezné. Két példaútlevél nyilvánosan elérhető benne. Egy póló útlevele a teljes dokumentumra kiterjedő aláírást tartalmaz, egy elem útlevele pedig mezőnkénti közzétételt.

Mindkettő nyílt W3C-specifikáció: eddsa-jcs-2022 a teljes dokumentumra kiterjedő aláíráshoz, ecdsa-sd-2023 a mezőnkénti közzétételhez. Bármelyik érdeklődő megvalósíthatja őket. A ráfordítás az oka annak, hogy sokan nem fogják megtenni: a teljes dokumentumra kiterjedő aláírás létrehozása és üzemeltetése lényegesen olcsóbb, és aki csak nyilvános adatokat szolgáltat, annak ez is elegendő.

Az, hogy a Time Machine mindkét eljárást támogatja, szándékos, és ez így is marad. Nem tartozik egyetlen platformhoz sem. Egy olyan ellenőr, aki csak a drágább eljárást fogadja el, számunkra lenne hasznos, másnak viszont senkinek.

Kinek tárják fel a védett mezőket

Érdemes megkérdezni, hogy a nyilvános adatokon túl egyáltalán kinek tárnak fel bármit is. Nem az alkalmi vásárlónak, ő csak a nyilvános adatlapot kapja meg. Hanem az adatfeldolgozónak, aki megítéli, mennyit ér egy használt akkumulátorcsomag; a biztosítónak, aki kiszámítja a kockázatot; az újrahasznosítónak, aki a vegyi anyagokat válogatja; valamint a hatóságnak, aki egy ügyet épít fel. Ők azok az olvasók, akiknek a döntései pénzhez vagy biztonsághoz kapcsolódnak.

És pontosan ezek azok a mezők, amelyek a szokásos megközelítésben fedetlenül maradnak. Aki a leginkább indokolt lenne arra, hogy kriptográfiai igazolást kérjen, éppen azokról a mezőkről nem kapja meg, amelyek döntését alátámasztják.

Úgy véljük, hogy egy tanúsító pecsétnek mindenki számára ugyanazt kell jelentenie. A „Transpareo által ellenőrzött” felirat egy javítóműhely kiterjesztett nézetén ugyanazt jelenti, mint egy vásárló nyilvános igazolványán: minden megjelenített terület a kiállítótól származik, és azóta nem nyúltak hozzá. Egy olyan pecsét, amely csak a nyilvános mezőkre vonatkozik, csak fél pecsét.

Több, mint amit a szabvány előír

Nyíltan kimondjuk: ezek közül semmi sem előírás. Az EN 18239 előírja, hogy a hozzáférést szabályozni kell, és egy szerveroldali szűrő kifogástalanul szabályozza a hozzáférést. Az is, hogy a nyilvános mezőket kriptográfiailag ellenőrizhetővé tegyük, olyan dolog, amit mi magunktól teszünk, nem pedig egy kötelezően teljesítendő pont a szabályozásban.

Pont ezért érdemes ezt leírni. Könnyű lenne betartani a szabvány betűjét, átadni a szerveroldali szűrőt, és a szintet teljesítettnek nyilvánítani. Mi inkább azt szeretnénk, hogy az ígéret mindenhol érvényes legyen, ahol a pecsét megjelenik. Hiszen az aláírt útlevél lényege éppen az, hogy senkinek sem kell megbíznia a platformban. Ha a középső szintet kivesszük kivételként, pontosan azt a bizalmat állítjuk vissza, amelyet az aláírásnak el kellett volna távolítania.

Ugyanez az elv teszi lehetővé egy mező figyelmen kívül hagyását

Ha minden mezőre külön-külön kell dönteni, az egy második tulajdonságot is magával hoz, és ezt az európai jog valóban megköveteli. Az általános adatvédelmi rendelet biztosítja az embereknek azt a jogot, hogy személyes adataik törlését kérjék. Egy blokként aláírt adatrekord ezt nem tudja teljesíteni anélkül, hogy megsemmisítené a saját aláírását.

Mivel itt minden mező önálló, egy-egy mező eltávolítható, miközben a többi továbbra is ellenőrizhető marad. Ha véletlenül személyes adatok kerülnek egy útlevélbe, azok tisztán eltávolíthatók, és az útlevél érvényben marad: nincs szükség új kiállításra, nincs megszakított előzmény. A törvény által megőrzésre előírt szabályozási mezők megmaradnak; ami törölhető, azt kérésre törölni lehet, akár évekkel később is.

Ennek ellenére egy teljesen szokványos útlevél

Mindez nem teszi az útlevelet olyan különleges objektummá, amelyet csak a mi eszközeink tudnak megnyitni. Továbbra is egy Verifiable Credential marad JSON-LD formátumban, amelyre a webes szabványok világa törekszik, és amelyet az ENSZ Átláthatósági Protokollja és a többi W3C-környezet is használ.

Az a személyi igazolvány, amelyet egy vásárló a böngészőjében beolvas, így ugyanaz az objektum, amelyet egy adattermi partner is beolvashat, és minden szabványnak megfelelő ellenőr ellenőrizheti, nem csak a miénk. A kiegészítő biztonság semmibe sem kerül az olvasónak, és senkit sem köt hozzánk.

Miért nehéz ez technikailag?

Először is, hogy ne keletkezzen téves benyomás: nem mi találtuk ki ezt az eljárást. Az ecdsa-sd-2023 egy nyilvános W3C-specifikáció, a mögötte álló kriptográfia nem tőlünk származik, és aki megvalósítani szeretné, az utánanézhet. Nem az az nehéz, hogy az ötlet felmerüljön. Az a nehéz, hogy úgy megvalósítsuk, hogy egy jelszó tíz év múlva is érvényes legyen. Ebben rejlik a munka, és erről lehet valami hasznosat mondani.

A különbség aprónak tűnik, de alapvetően megváltoztatja az alapot: egy hagyományos aláírás a dokumentum bájtai alapján számol. A szelektív nyilvánosságra hozatal viszont a benne szereplő állítások alapján számol. Az útlevelet az aláírás előtt szabványosított formába hozzák, amelyben minden adat önálló, egymástól független mondatként jelenik meg. Csak így lehet egy mondatot kihagyni anélkül, hogy a többi sérülne.

Ezzel egy olyan problémát örökölünk, amellyel a bájt-aláírásnak nincs dolga: ugyanazt a szabványosított formát tíz év múlva is pontosan vissza kell állítani. Nem hozzávetőlegesen, hanem karakterről karakterre, különben a bizonyíték már nem lesz érvényes. Három dolog áll ennek az útjában, és mindhárom jelentéktelennek tűnik.

A számok elveszítik a típusukat. Ha egy számot egyszerű JSON-ként írunk le, az átvitel során elveszik, hogy milyen típusú szám volt. Egy 2,0-s érték egy JSON-átvitel után 2-ként tér vissza. Egy ember számára ez ugyanaz, a szabványosított formában azonban egy másik mondat, és az ellenőrzés sikertelen lesz.

A megnevezések még nem jelentenek jelentést. Ahhoz, hogy a szabványosított forma létrejöjjön, minden mezőnévnek egy egyértelmű jelentésre kell utalnia. Ha hiányzik egy, a mező az átalakítás során észrevétlenül eltűnik. Ekkor szerepel ugyan az igazolványban, de a bizonyítvány nem fedi le, és senki sem veszi észre.

A jelentések általában az interneten találhatók. Ez a leképezés egy szókincsben szerepel, amelyet a legtöbb eszköz az ellenőrzés során az internetről tölt le. Aki így jár el, az útlevele ellenőrizhetőségét attól teszi függővé, hogy egy idegen cím tíz év múlva is válaszoljon, méghozzá változatlan formában.

Hogyan oldottuk meg

Ahárom problémát a gyökérnél zártuk le, ahelyett, hogy később orvosoltuk ## volnaőket.

Típusok. Minden értéket a típusával együtt írunk le, és a közzététel megszakad, amint a szabványos formában akár egyetlen típus nélküli szám is megjelenik. Így a hiba ott kerül felszínre, ahol egy sorba kerül, ahelyett, hogy évekkel később megmagyarázhatatlan ellenőrzési hibaként jelentkezne.

Szótárak. Minden szótár, amelyre egy útlevél hivatkozik, nálunk helyileg rendelkezésre áll, és soha nem töltjük le az internetről. Egy ismeretlen cím az aláírás során kemény leállást okoz, nem pedig csendes visszaesést egy üres eredményre.

Azonosítók. A dokumentum minden csomópontja stabil azonosítót hordoz, így a szabványosított forma reprodukálható marad, ahelyett, hogy minden futtatáskor új segédneveket kellene kiosztani.

A legkényesebb rész a „Bring Your Own Key” (Hozd magaddal a saját kulcsodat) elvben rejlik. Minden kibocsátáshoz egy további, rövid élettartamú kulcsra van szükség, amellyel a nyilvánosságra hozható mezőket egyenként aláírják. Ezt a kulcsot maga a kibocsátó generálja és semmisíti meg. Ha nálunk lenne, utólag kitalálhatnánk egyes mezőket, és a kiállító aláírásának függetlensége csupán állítás maradna. A visszaküldött igazolást a letétbe helyezett nyilvános kulccsal ellenőrizzük, mielőtt megbízunk benne.

Minden igazolvány két ilyen igazolást tartalmaz: egyet a kibocsátótól és egyet a Transpareótól, és mindkettőt a rendszer a felhasználó számára függetlenül vezeti le. Két aláírás, két egymástól független hatóság, még egy-egy külön nyilvánosságra hozott mező esetében is.

Számunkra ez a ráfordítás indokolt. Az ellenőrizhetőséget nem utólag építettük be; a platform már az első verziótól kezdve erre épült. Minden útlevelet a közzétételkor aláírnak, és az előző verzióhoz láncolnak. A megváltoztathatatlan tízéves archívum létrejön, és azonnal működésbe lép, amint az útleveleket az EU-DPP-nyilvántartás nyilvántartásba kerülnek. Az, hogy minden mezőt aláírunk a teljes blokk helyett, ennek a magnak a kiterjesztése, nem pedig valami olyanra épített felépítmény, amit soha nem is erre a célra szántak.

Hol tartunk

Ha leegyszerűsítjük, a választás egyszerű. Nyilvánosságra hozhatja a védett mezőket, és megkérheti az olvasót, hogy bízzon a szűrőjében - ez megfelel a szabványnak. Vagy nyilvánosságra hozhatja őket, és egyúttal megadhatja a bizonyítékot is - ez egy magasabb követelménynek felel meg, amelyet véleményünk szerint ezek a mezők megérdemelnek.

Mi a bizonyíték mellett döntöttünk, minden olvasó érdekében, mert egy pecsétnek egy dolgot kell jelentenie, függetlenül attól, ki nézi. Aki szeretné látni, hogyan működik: a fentebb linkelt két demo közvetlenül a böngészőben, offline módban ellenőrzi magát, kizárólag egy nyilvános kulcs segítségével.

Frissítések a hozzáférési szintekkel és igazolásokkal kapcsolatban

Szelektív közzététel, aláírások és a DPP-szabványok fejlődése - havonta összefoglalva a beérkező levelek között.