Digitālā produkta pase ne visiem rāda to pašu. Pircēja redz publiski pieejamos datus. Remonta darbnīca vai pārstrādātājs redz vairāk. Tirgus uzraudzības iestāde redz visu. Tas ir noskaidrots, un Eiropas standarti to tagad skaidri nosaka.
Interesantākais jautājums ir mazāk pamanāms: ja kādam tiek atklāti aizsargātie lauki, kas pārsniedz publiski pieejamos datus, vai viņš var pierādīt, ka tieši šie lauki ir autentiski? Vai arī viņam jāpaļaujas uz to, ka platforma tos ir pareizi atlasījusi un nodevusi tālāk nemainītā veidā?
Lielākajā daļā platformu godīgā atbilde ir: uzticēšanās. Mēs esam izveidojuši savu platformu tā, lai atbilde būtu „pierādījums” - ne tikai attiecībā uz publiskajiem laukiem, bet arī uz katru lauku, kas tiek pievienots tikai atklāšanas brīdī. Kāpēc šī atšķirība ir svarīga un kāpēc mēs šajā jautājumā esam izvēlējušies sarežģītāko ceļu.
Piekļuves noteikumus visi ievēro vienādi
EN 18239, Eiropas standarts par piekļuves tiesībām, drošību un konfidencialitāti DPP, prasa piekļuves kontroli katram datu elementam: katram laukam ir noteikums, kurš to drīkst redzēt. Tā ir pareiza prasība, un to nav grūti izpildīt. Kāds vispār ir šo standartu statuss, mēs esam izklāstījuši sadaļā saskaņotie standarti.
Parastais veids, kā to panākt, ir filtrēšana servera pusē. Serveris zina, kas veic pieprasījumu, pārbauda, ko šī persona drīkst redzēt, un atgriež tieši šo fragmentu. Piekļuves kontrole: izpildīta. Standarts neparedz neko vairāk.
Tomēr ir viens „bet”, par ko standarts nerūpējas: Fragments tiek saņemts neparakstīts. Lasītājs saņem viņam sagatavotu skatu un ir spiests ticēt, ka serveris ir godīgi veicis atlasi un ceļā neko nav mainījis. Publiskai informatīvai lapas ierakstam tas ir pieņemami. Taču, ja runa ir par vērtību, uz kuras pamata apstrādātājs nosaka, piemēram, lietotas baterijas cenu, tas prasa pārāk lielu uzticēšanos.
Kur atsevišķs paraksts sasniedz savas robežas
Loģiskais risinājums ir parakstīt datus. Abos skalas galos labi darbojas parasts paraksts: parakstīt publisko skatu, parakstīt pilno datu kopu, un abus pārbaudīt, izmantojot publisko atslēgu, bez starpniekservera iesaistīšanas. Kā tas notiek sīkāk, ir aprakstīts rakstā „Paraksti un sertifikāti DPP”.
Problēma rodas vidusposmā. Paraksts, kas attiecas uz visu dokumentu, aptver tieši vienu lauku kopumu, proti, tos, kas bija pieejami parakstīšanas brīdī. Ja pilnvarotam lasītājam papildus atklāj aizsargātu lauku, šis lauks atrodas ārpus parakstītā kopuma un nonāk pie viņa neparakstīts. Ja tā vietā jau sākumā paraksta pilnu datu kopu, paraksts gan aptver visu, bet tad būtu jāparāda viss ikvienam.
Tādējādi starpposmi paliek neaptverti: remontdarbnīca, apdrošinātājs, pārstrādātājs. Ja vēlētos iepriekš parakstīt katru iespējamo „kas ko redz” kombināciju, katrai kombinācijai būtu nepieciešams atsevišķs parakstīts dokuments, un kombināciju skaits strauji pieaugtu ar katru jaunu piekļuves grupu. To neviens nedara. Tādēļ atgriežamies pie neparakstītā servera filtra, un vidusposms atkal balstās uz uzticēšanos.
Katrs lauks tiek parakstīts atsevišķi
Ir labāka konstrukcija, un uz tās mēs veidojam platformu. Tā vietā, lai parakstītu gatavo dokumentu kā vienu bloku, izdevējs vienā parakstīšanas ciklā atsevišķi nosaka katru lauku (tiem, kas pārzina standartus: W3C apliecinājums ecdsa-sd-2023 selektīvai atklāšanai).
Katra skatījuma sākums ir publiskais kodols
Katra skatījuma ### sākumsir tie paši publiskie lauki. Tas, ko lasītājs redz papildus, tiek pievienots lauks pēc lauka, un katrs no šiem laukiem joprojām ved atpakaļ uz izdevēja publisko atslēgu - bezsaistē, bez atkārtotas parakstīšanas un bez uzticēšanās iestādei, kas šo skatījumu ir izveidojusi. Lauki, uz kuriem nav tiesību, vienkārši trūkst. Tie nav aizkrāsoti, bet vispār nav klāt, un nekas par tiem neizsūcas.
Kāpēc «nepārtraukts» ir viss būtiskais
Iedomājieties notāru, kurš neapstiprina vēstuli kopumā, bet katru rindkopu atsevišķi. Publisko vēstuli saņem ikviens. Tiem, kam ir tiesības uz vairāk, tiek pievienoti papildu punkti, un katrs no tiem joprojām ir apzīmogots ar tā paša notāra zīmogu. Parastajā procedūrā platforma šos punktus pārraksta jūsu vietā, un tas, ko saņemat, ir apzīmogots tikai ar tās vārdu.
Kāpēc šajā gadījumā ir svarīgi, lai zīmogs būtu «nesabojāts», ir vērts paskaidrot ar vēl vienu teikumu. Nesabojāts zīmogs nenorāda, ka saturs ir patiesīgs. Tas norāda: tieši to ir uzrakstījis izdevējs, un kopš tā laika neviens nav mainījis ne zīmi. Tādējādi no uzticamības jautājuma izslēdzas ikviens, kurš dokumentu vienkārši ir nodevis tālāk - starpglabātava, tīkls, arhīvs, mēs. Vairs nav nozīmes, kurš jums izsniedza pasi.
Un zīmogs ir binārs. Tas ir vai nav, puslīdz bojāta zīmoga nav. Ja zīmogs tiek salauzts, jūs neuzzināsiet, kurš teikums ir mainīts, bet tikai to, ka vairs nevarat uzticēties visam dokumentam. Tāpēc nav pakāpeniskas atšķirības, vai papildu lauki ar zīmogu nonāk pie jums vai bez tā: bez zīmoga tie nav tikai nedaudz vājāk apliecināti, tie vispār nav apliecināti.
Abas metodes apskatei
To ikviens var pārbaudīt pats. „Transpareo Time Machine“ ir mūsu atvērtā koda lietotne produktu pasu apskatei: tā pārlapo pases versiju vēsturi un vienlaikus pārrēķina katru parakstu skatītāja pārlūkprogrammā, neuzdot jautājumu mūsu serverim. Tajā publiski darbojas divi paraugpases. T-krekla pasei ir paraksts, kas attiecas uz visu dokumentu, bet baterijas pasei - atklāta informācija pa laukiem.
Abas ir atvērtas W3C specifikācijas: eddsa-jcs-2022 parakstam, kas aptver visu dokumentu, un ecdsa-sd-2023 atklāšanai pa laukiem. To var īstenot ikviens, kurš to vēlas. Pūles, kas ar to saistītas, ir iemesls, kāpēc daudzi to nedarīs: paraksts visam dokumentam ir ievērojami lētāk izveidot un uzturēt, un tiem, kas sniedz tikai publiskos datus, ar to pietiek.
Tas, ka „Time Machine” pārvalda abas metodes, ir apzināts lēmums, un tā tas arī paliks. Tas nepieder nevienai platformai. Pārbaudītājs, kurš pieņemtu tikai dārgāko metodi, būtu instruments tikai mums un nevienam citam.
Kam tiek atklāti aizsargātie lauki
Ir vērts jautāt, kam vispār tiek atklāta informācija, kas pārsniedz publiskos datus. Ne jau gadījuma pircējai - viņa saņem publisko sertifikātu. Tie ir pārstrādātājs, kurš novērtē lietota akumulatoru bloka vērtību, apdrošinātājs, kurš aprēķina riska cenu, pārstrādātājs, kurš šķiro ķīmiskās vielas, un iestāde, kura veido lietu. Tie ir lasītāji, kuru lēmumi ir saistīti ar naudu vai drošību.
Un tieši šie lauki parastajā pieejā paliek neatklāti. Tie, kuriem būtu vislielākais iemesls vēlēties kriptogrāfisku apliecinājumu, to nesaņem tieši attiecībā uz tiem laukiem, kas ir viņu lēmuma pamatā.
Mēs uzskatām, ka pārbaudes zīme visiem būtu jānozīmē vienu un to pašu. Uzraksts „Pārbaudīts ar Transpareo” paplašinātajā skatā remontdarbnīcā nozīmē to pašu, ko pircējas publiskajā sertifikātā: katra parādītā joma nāk no izdevēja un kopš tā laika nav tikusi mainīta. Zīmogs, kas attiecas tikai uz publiskajiem laukiem, ir nepilnīgs zīmogs.
Vairāk, nekā prasa standarts
Mēs to sakām atklāti: nekas no tā nav obligāti noteikts. Standarts EN 18239 prasa, lai piekļuve tiktu kontrolēta, un servera filtrs to nodrošina nevainojami. Arī atklāto lauku padarīšana kriptogrāfiski pārbaudāmiem ir kaut kas, ko mēs darām papildus, nevis atzīme, ko no mums prasa regulējums.
Tieši tāpēc tas ir vērts tikt fiksēts rakstiski. Būtu viegli izpildīt standarta burtisko prasību, nodrošināt servera filtru un pasludināt šo posmu par pabeigtu. Mēs tomēr dodam priekšroku tam, lai šis solījums būtu spēkā visur, kur parādās zīmogs. Jo parakstītas pases jēga ir tieši tajā, ka nevienam nav jāuzticas platformai. Vidējā līmeņa izslēgšana kā izņēmums atjauno tieši to uzticību, ko paraksts bija paredzēts novērst.
Tas pats princips ļauj aizmirst kādu lauku
Konkrēta nostāja attiecībā uz katru lauku atsevišķi rada otru īpašību, un to faktiski prasa Eiropas tiesības. Vispārīgā datu aizsardzības regula piešķir cilvēkiem tiesības pieprasīt personas datu dzēšanu. Datu kopums, kas parakstīts kā viens bloks, nevar izpildīt šo prasību, neiznīcinot paša parakstu.
Tā kā šeit katrs lauks ir atsevišķs, var izņemt vienu konkrētu lauku, kamēr pārējā informācija joprojām ir pārbaudāma. Ja personas dati nejauši nonāk pasē, tos var pilnībā izņemt, un pase paliek derīga: nav nepieciešama jaunas pases izsniegšana, nav pārtraukta vēsture. Regulējumā noteiktie lauki, kurus likums prasa saglabāt, paliek nemainīgi; to, ko var dzēst, pēc pieprasījuma var dzēst pat gadiem vēlāk.
Tomēr tā ir pavisam parasta pase
Nekas no minētā nepadara pasi par īpašu objektu, ko var atvērt tikai ar mūsu rīkiem. Tā paliek pārbaudāma apliecība (Verifiable Credential) JSON-LD formātā, uz kuru virzās tīmekļa standartu pasaule, un tas ir tas pats formāts, ko izmanto ANO Pārredzamības protokols un pārējā W3C vide.
Tādējādi pase, ko pircēja ieskenē pārlūkprogrammā, ir tas pats objekts, ko var ievadīt datu telpas partneris, un to var pārbaudīt jebkurš standartiem atbilstošs pārbaudītājs, ne tikai mūsu. Papildu drošība lasītājam neko nemaksā un nevienu nesaista ar mums.
Kāpēc tas ir tehniski sarežģīti
Vispirms, lai neradītu nepareizu iespaidu: mēs neesam izgudrojuši šo procedūru. ecdsa-sd-2023 ir publiska W3C specifikācija, tās pamatā esošā kriptogrāfija nav mūsu izstrādāta, un ikviens, kas vēlas to īstenot, var ar to iepazīties. Grūti nav nākt klajā ar ideju. Grūti ir to izveidot tā, lai parole joprojām būtu pārbaudāma pēc desmit gadiem. Tieši tur slēpjas darbs, un par to var pateikt kaut ko noderīgu.
Atšķirība šķiet neliela, taču tā maina pamatu: parastais paraksts veic aprēķinus, izmantojot dokumenta baitus. Selektīvā atklāšana veic aprēķinus, balstoties uz tā apgalvojumiem. Pirms parakstīšanas pase tiek pārveidota standartizētā formā, kurā katrs apgalvojums ir atsevišķs, patstāvīgs teikums. Tikai tādējādi ir iespējams izlaist vienu teikumu, neietekmējot pārējos.
Tādējādi rodas problēma, kas baitu parakstam nav raksturīga: pēc desmit gadiem šai pašai standartizētajai formai ir jābūt precīzi tāda pati. Ne aptuveni, bet zīme pēc zīmes, citādi pierādījums vairs nederēs. Tam ceļā stāv trīs lietas, un visas trīs ir neuzkrītošas.
Skaitļi zaudē savu tipu. Ja skaitli raksta kā vienkāršu JSON, procesa gaitā pazūd informācija par to, kāds skaitlis tas bija. Vērtība, piemēram, 2,0, pēc apstrādes ar JSON atgriežas kā 2. Cilvēkam tas ir viens un tas pats, bet standartizētajai formai - cits teikums, un pārbaude neizdodas.
Nosaukumi vēl nav nozīme. Lai izveidotos standartizētā forma, katram lauka nosaukumam ir jāatbilst viennozīmīgai nozīmei. Ja kāda nozīme trūkst, lauks pārveidošanas laikā nemanāmi pazūd. Tas tad ir norādīts pasē, bet apliecinājums to neaptver, un neviens to nepamana.
Nozīmes parasti atrodas tīmeklī. Šī saistība ir iekļauta vārdnīcā, ko lielākā daļa rīku pārbaudes laikā lejupielādē no tīmekļa. Kas tā rīkojas, padara savas pases pārbaudāmību atkarīgu no tā, vai sveša adrese pēc desmit gadiem joprojām atbildēs, turklāt nemainītā veidā.
Kā mēs to atrisinājām
Mēs izlīdzinājām šos trīs punktus jau sākumā, nevis mēģinājām tos novērst vēlāk.
Tipi. Katra vērtība tiek rakstīta kopā ar savu tipu, un publicēšana tiek pārtraukta, tiklīdz standartizētā formā parādās pat viens skaitlis bez tipa. Tādējādi kļūda tiek atklāta tajā brīdī, kad tā izmaksā vienu rindu, nevis gadiem vēlāk kā neizskaidrojams pārbaudes pārkāpums.
Vārdnīcas. Katra vārdnīca, uz kuru atsaucas pase, mums ir pieejama lokāli un nekad netiek lejupielādēta no tīkla. Nezināma adrese ir strauja pārtraukšana parakstīšanas procesā, nevis klusa atgriešanās pie tukša rezultāta.
Identifikatori. Katram dokumenta mezglam ir piešķirts stabils identifikators, lai standartizētā forma paliktu reproducējama, nevis katrā ciklā tiktu piešķirti jauni palīgvārdi.
Visdelikātākā daļa ir „Bring Your Own Key” (lietojiet savu atslēgu). Katrai izsniegšanai ir nepieciešama papildu, īslaicīga atslēga, ar kuru atsevišķi tiek parakstīti atklājamie lauki. Šo atslēgu izveido un izmet pats izsniedzējs. Ja atslēga atrastos pie mums, mēs varētu pēc tam izdomāt atsevišķus laukus, un izdevēja paraksta neatkarība būtu tikai deklaratīva. Mēs pārbaudām atgriezto apliecinājumu, salīdzinot to ar reģistrēto publisko atslēgu, pirms tam uzticamies.
Katrā pasē ir divi šādi apliecinājumi - viens no izdevēja un viens no „Transpareo” -, un katrs no tiem tiek neatkarīgi atvasināts, lai lasītājs to varētu apskatīt. Divi paraksti, divas viena no otras neatkarīgas autoritātes - pat vienam atsevišķi atklātam laukam.
Mūsuprāt, šis ieguldījums ir pamatots. Mēs neesam pārbaudāmību pievienojuši pēc tam; platforma ir veidota ap to jau no pirmās versijas. Katra pase tiek parakstīta publicēšanas brīdī un saistīta ar iepriekšējo versiju. Ir izveidots nemaināms desmit gadu arhīvs, kas stājas spēkā, tiklīdz pases tiek reģistrētas ES DPP reģistrā. Katra lauka parakstīšana, nevis visa bloka, ir šīs pamatfunkcijas paplašinājums, nevis papildinājums kaut kam, kas nekad nav bijis tam paredzēts.
Kāda ir pašreizējā situācija
Vienkāršojot, izvēle ir vienkārša. Jūs varat atklāt aizsargātos laukus un lūgt lasītājam uzticēties jūsu filtram - tas atbilst standartam. Vai arī jūs varat tos atklāt un vienlaikus sniegt pierādījumu - tas atbilst augstākām prasībām, kuras, mūsuprāt, šie lauki ir pelnījuši.
Mēs esam izvēlējušies pierādījumu katram lasītājam, jo zīmogam vajadzētu nozīmēt vienu un to pašu, neatkarīgi no tā, kurš to apskata. Ja vēlaties redzēt, kā tas darbojas: abas iepriekš minētās demonstrācijas var pārbaudīt tieši pārlūkprogrammā, bezsaistē, izmantojot vienīgi publisko atslēgu.
