Digitální produktový pas neukazuje všem stejné informace. Kupující vidí veřejně dostupné údaje. Opravna nebo recyklační podnik vidí více. Orgán dohledu nad trhem vidí vše. To je jasné a evropské normy to nyní výslovně stanovují.
Zajímavá otázka zní poněkud tišeji: Pokud jsou někomu kromě veřejných údajů zpřístupněna i chráněná pole, může pak prokázat, že právě tato pole jsou autentická? Nebo musí věřit, že je platforma správně vybrala a předala beze změn?
U většiny platforem zní upřímná odpověď: důvěra. My jsme naši platformu vybudovali tak, aby odpovědí bylo „důkaz“ - a to nejen pro veřejná pole, ale pro každé pole, které se přidá až při zpřístupnění. Proč na tomto rozdílu záleží a proč jsme se vydali tou náročnější cestou.
Pravidlo přístupu splňují všichni stejně
NormaEN 18239, evropská norma pro přístupová práva, bezpečnost a důvěrnost v rámci DPP, vyžaduje řízení přístupu pro každý datový prvek: pro každé pole existuje pravidlo, kdo ho smí vidět. To je správný požadavek a není těžké jej splnit. Jaký status tyto normy vlastně mají, jsme podrobně rozebrali v článku harmonizované normy.
Obvyklým způsobem, jak toho dosáhnout, je filtrování na straně serveru. Server ví, kdo žádá o data, ověří, co tato osoba smí vidět, a vrátí přesně tento výřez. Řízení přístupu: hotovo. Norma nic víc nevyžaduje.
Je tu však jeden háček, o který se norma nestará: Výňatek dorazí nepodepsaný. Čtenář obdrží pro něj sestavený výňatek a musí věřit, že server provedl výběr poctivě a během přenosu nic nezměnil. U veřejného informačního letáku je to v pořádku. U hodnoty, na které zpracovatel okamžitě zakládá cenu použité baterie, je to však velká důvěra.
Kde jednotlivý podpis naráží na své limity
Zřejmým řešením je data podepsat. Pro oba konce škály funguje běžný podpis dobře: podepsat veřejný výpis, podepsat kompletní datový záznam a oba ověřit pomocí veřejného klíče, aniž by mezi nimi stál nějaký server. Jak to funguje v detailu, je popsáno v článku Podpisy a certifikáty v DPP.
Problém nastává uprostřed. Podpis celého dokumentu pokrývá přesně jednu sadu polí, a to ta, která byla při podepisování k dispozici. Pokud oprávněnému čtenáři dodatečně zpřístupníte chráněné pole, leží toto pole mimo podepsanou množinu a dostane se k němu bez podpisu. Pokud místo toho od začátku podepíšete celý datový záznam, podpis sice pokryje vše, ale pak byste museli každému ukázat úplně všechno.
Úrovně mezi tím tak propadají sítem: opravna, pojišťovna, recyklační firma. Chtěli-li bychom předem podepsat každou možnou kombinaci „kdo co vidí“, potřebovali bychom pro každou kombinaci vlastní podepsaný dokument a počet kombinací by s každou další skupinou s přístupem exponenciálně rostl. To nikdo nedělá. Vrátíme se k nepodepsanému serverovému filtru a střední úroveň opět funguje na základě důvěry.
Podepsat každé pole zvlášť
Existuje lepší řešení a na něm stavíme naši platformu. Místo podpisu hotového dokumentu jako jednoho bloku se vydavatel v jediném podpisu vyjadřuje ke každému poli zvlášť (pro znalce standardů: certifikát W3C ecdsa-sd-2023 pro selektivní zveřejnění).
Každý náhled začíná u veřejného jádra
Každý náhled tedy začíná u stejných veřejných polí. To, co čtenář uvidí navíc, se přidává pole po poli, a každé z těchto polí i nadále vede zpět k veřejnému klíči vystavitele - offline, bez opakovaného podepisování a bez důvěry v subjekt, který náhled sestavil. Pole, na která není nárok, prostě chybí. Nejsou začerněná, ale vůbec tam nejsou, a nic o nich neprosakuje.
Proč je „neporušenost“ tím hlavním bodem
Představte si notáře, který neověřuje dopis jako celek, ale každý odstavec zvlášť. Veřejný dopis dostane každý. Kdo má nárok na více, dostane k tomu další odstavce, a každý z nich nadále nese pečeť téhož notáře. Při obvyklém postupu platforma tyto odstavce za vás přepíše a to, co k vám dorazí, nese už jen její slovo.
Proč je přitom důležité, aby pečeť zůstala „neporušená“, si zaslouží ještě jednu větu. Nezničená pečeť neříká, že obsah je pravdivý. Říká: Přesně toto napsal vystavitel a od té doby nikdo na dokumentu nic nezměnil. Tím pádem z otázky důvěry vypadává každý, kdo dokument pouze předal dál - mezipaměť, síť, archiv, my. Kdo vám pas předal, už nehraje žádnou roli.
A pečeť je binární. Buď drží, nebo nedrží, nic jako napůl zlomená pečeť neexistuje. Pokud se pečeť poruší, nedozvíte se, která věta byla změněna, ale pouze to, že již nemůžete důvěřovat celému listu. Proto není žádný postupný rozdíl v tom, zda se k vám dodatečná pole dostanou s pečetí nebo bez ní: bez pečetě nejsou jen o něco méně podložená, ale nejsou podložená vůbec.
Oba způsoby prohlížení
To si může každý ověřit sám. Transpareo Time Machine je naše aplikace s otevřeným zdrojovým kódem pro prohlížení produktových pasů: listuje v historii verzí pasu a přitom přepočítává každou signaturu v prohlížeči uživatele, aniž by se dotazovala na náš server. Ve veřejném provozu jsou zde dva ukázkové pasy. Pas k tričku obsahuje podpis celého dokumentu, pas k baterii pak zveřejnění po jednotlivých polích.
V obou případech se jedná o otevřené specifikace W3C: eddsa-jcs-2022 pro podpis celého dokumentu, ecdsa-sd-2023 pro zveřejnění po jednotlivých polích. Implementovat je může kdokoli, kdo chce. Náročnost je důvodem, proč to mnozí neudělají: Podpis celého dokumentu je výrazně levnější na vytvoření i provoz a komu stačí poskytovat pouze veřejná data, tomu to stačí.
To, že Time Machine ovládá oba postupy, je záměrné a tak to i zůstane. Nepatří žádné platformě. Ověřovatel, který by akceptoval pouze dražší postup, by byl nástrojem pouze pro nás a pro nikoho jiného.
Komu jsou chráněná pole zpřístupňována
Stojí za to se zeptat, komu je kromě veřejných dat vůbec něco zpřístupňováno. Ne náhodné kupující, ta dostane veřejný certifikát. Jsou to zpracovatelé, kteří posuzují, jakou má použitý akumulátorový modul hodnotu, pojistitelé, kteří oceňují riziko, recyklátoři, kteří třídí chemické látky, a úřady, které sestavují spis. To jsou čtenáři, jejichž rozhodnutí závisí na penězích nebo bezpečnosti.
A jsou to právě ty údaje, které v běžném přístupu zůstávají nezveřejněné. Ten, kdo by měl největší důvod požadovat kryptografický certifikát, jej nedostane právě pro ty údaje, na nichž závisí jeho rozhodnutí.
Domníváme se, že certifikační pečeť by měla mít pro všechny stejný význam. „Ověřeno společností Transpareo“ znamená v rozšířeném náhledu opravny totéž jako na veřejném certifikátu kupující: Každá zobrazená oblast pochází od vydavatele a od té doby s ní nebylo manipulováno. Pečeť, která se vztahuje pouze na veřejná pole, je poloviční pečeť.
Více, než vyžaduje norma
Říkáme to otevřeně: nic z toho není předepsáno. ## NormaEN 18239 vyžaduje, aby byl přístup řízen, a filtr na straně serveru přístup řídí bezchybně. I to, že zveřejněná pole jsou kryptograficky ověřitelná, je něco, co děláme navíc, není to jen položka, kterou od nás předpis vyžaduje.
Právě proto stojí za to to uvést. Bylo by snadné splnit literu normy, dodat serverový filtr a prohlásit tuto úroveň za splněnou. Raději však chceme, aby tento závazek platil všude tam, kde se pečeť objeví. Celý smysl podepsaného pasu totiž spočívá v tom, že nikdo nemusí platformě důvěřovat. Vyjmutí střední úrovně jako výjimky vrací přesně tu důvěru, kterou měl podpis odstranit.
Stejný princip vede k opomenutí jednoho pole
Zaměření se na každé pole zvlášť s sebou nese druhou vlastnost, a tu evropské právo skutečně vyžaduje. Obecné nařízení o ochraně osobních údajů dává lidem právo na výmaz osobních údajů. Datový záznam podepsaný jako jeden blok nemůže tuto povinnost splnit, aniž by zničil vlastní podpis.
Jelikož zde každé pole stojí samostatně, lze odstranit jednotlivé pole, zatímco vše ostatní zůstává ověřitelné. Pokud se omylem dostanou osobní údaje do pasu, lze je z něj čistě odstranit a pas zůstává platný: žádné nové vystavení, žádná přerušená historie. Regulační pole, jejichž uchovávání zákon vyžaduje, zůstávají zachována; to, co lze vymazat, lze na požádání vymazat, a to i o několik let později.
Přesto jde o zcela běžný pas
Nic z toho nedělá z pasu žádný zvláštní objekt, který by dokázaly otevřít pouze naše nástroje. Zůstává ověřitelnou kvalifikací (Verifiable Credential) ve formátu JSON-LD, formátu, ke kterému směřuje svět webových standardů, a ve stejném formátu, jaký používá Protokol OSN pro transparentnost (UN Transparency Protocol) i ostatní prostředí W3C.
Průkaz, který zákaznice naskenuje v prohlížeči, je tedy stejný objekt, který může načíst partner v datovém prostoru, a každý ověřovatel dodržující standardy jej může zkontrolovat, nejen ten náš. Tato dodatečná bezpečnost čtenáře nic nestojí a nikoho k nám nevazuje.
Proč je to technicky náročné
Nejprve, aby nevznikl mylný dojem: tento postup jsme nevymysleli. ecdsa-sd-2023 je veřejná specifikace W3C, kryptografie, na které je založen, nepochází od nás, a kdokoli ji chce implementovat, může si o tom přečíst. Není těžké přijít s nápadem. Těžké je jej zrealizovat tak, aby se heslo dalo ověřit i za deset let. Právě v tom spočívá práce a o tom se dá říci něco užitečného.
Rozdíl zní jako maličkost, ale posouvá samotný základ: běžný podpis provádí výpočty na základě bajtů dokumentu. Selektivní zveřejnění provádí výpočet na základě jeho tvrzení. Pas je před podepsáním převeden do standardizované podoby, v níž je každý údaj uveden jako samostatná, o sobě stojící věta. Teprve díky tomu lze jednu větu vynechat, aniž by to poškodilo ostatní.
Tím se objevuje problém, který podpis založený na bajtech nemá: stejná standardizovaná forma se musí za deset let znovu přesně objevit. Ne přibližně, ale znak po znaku, jinak už nebude důkaz platný. Tomu stojí v cestě tři věci a všechny tři jsou nenápadné.
Čísla ztrácejí svůj typ. Pokud se číslo zapíše jako pouhý JSON, ztratí se při přenosu informace o tom, o jaké číslo se jednalo. Hodnota jako 2,0 se po průchodu JSON vrátí jako 2. Pro člověka je to totéž, pro standardizovanou formu však jde o jinou větu, a kontrola selže.
Názvy ještě neznamenají význam. Aby vznikla standardizovaná forma, musí každý název pole odkazovat na jednoznačný význam. Chybí-li nějaký, pole při převodu tiše zmizí. Je pak sice uvedeno v pasu, ale doklad to nezahrnuje a nikdo si toho nevšimne.
Významy se obvykle nacházejí na internetu. Toto přiřazení je uvedeno ve slovníku, který si většina nástrojů při kontrole stahuje z internetu. Kdo tak činí, podmiňuje ověřitelnost svého pasu tím, že cizí adresa bude i za deset let stále odpovídat, a to beze změn.
Jak jsme to vyřešili
Tyto tři body jsme vyřešili u kořene, místo abychom je řešili až později.
Typy. Každá hodnota se zapisuje se svým typem a publikace se přeruší, jakmile se v normalizované formě objeví byť jen jedno číslo bez typu. Chyba se tak objeví hned tam, kde stojí jeden řádek, místo aby se o několik let později projevila jako nevysvětlitelné porušení ověřitelnosti.
Slovníky. Každý slovník, na který pas odkazuje, máme k dispozici lokálně a nikdy jej nestahujeme z internetu. Neznámá adresa znamená tvrdé přerušení při podepisování, nikoli tichý návrat k prázdnému výsledku.
Identifikátory. Každý uzel v dokumentu nese stabilní identifikátor, aby standardizovaná forma zůstala reprodukovatelná, místo aby se při každém průchodu přidělovaly nové pomocné názvy.
Nejchoulostivější část spočívá v principu „Bring Your Own Key“. Pro každé vystavení je zapotřebí dodatečný, krátkodobý klíč, pomocí kterého se jednotlivě podepisují pole určená ke zveřejnění. Tento klíč generuje a ruší sám vystavovatel. Kdyby byl u nás, mohli bychom jednotlivá pole dodatečně vymyslet a nezávislost podpisu vystavovatele by byla pouze deklarativní. Vrácený doklad ověřujeme proti uloženému veřejnému klíči, než mu uvěříme.
Každý pas obsahuje dva takové doklady, jeden od vystavovatele a jeden od Transpareo, a každý z nich je pro čtenáře odvozen nezávisle. Dva podpisy, dvě navzájem nezávislé autority, a to i pro jednotlivě zveřejněné pole.
Pro nás je tato námaha na správném místě. Ověřitelnost jsme nepřidali dodatečně; platforma byla od první verze vyvinuta právě s ohledem na ni. Každý pas je při zveřejnění podepsán a navázán na předchozí verzi. Je vytvořen nezměnitelný desetiletý archiv, který se aktivuje, jakmile jsou pasy zaregistrovány v registru EU-DPP. Podepisování jednotlivých polí namísto celého bloku je rozšířením tohoto jádra, nikoli nánosem na něco, co k tomu nikdy nebylo určeno.
Kde se nacházíme
Zjednodušeně řečeno, volba je jednoduchá. Můžete chráněná pole zveřejnit a požádat čtenáře, aby důvěřoval vašemu filtru - to splňuje normu. Nebo je můžete zveřejnit a zároveň poskytnout důkaz - to splňuje vyšší standard, který si tato pole podle našeho názoru zaslouží.
Rozhodli jsme se pro důkaz, a to pro každého čtenáře, protože pečeť by měla znamenat totéž, ať se na ni dívá kdokoli. Kdo chce vidět, jak to funguje: Obě výše odkazované ukázky se ověřují přímo v prohlížeči, offline, pouze pomocí veřejného klíče.
