Разкриване, без да се загуби подписът

Разкриване, без да се загуби подписът

Transpareo подписва всяко поле от продуктовия паспорт поотделно, така че дори защитените полета да могат да бъдат проверени самостоятелно. Читателят не е длъжен да се доверява на платформата.

Цифровият паспорт на продукта не показва едно и също на всички. Купувачката вижда публично достъпните данни. Сервизът или фирмата за рециклиране вижда повече. Органът за надзор на пазара вижда всичко. Това е ясно, а европейските стандарти вече го постановяват изрично.

Интересният въпрос е по-фин: ако някой получи достъп до защитени полета, които надхвърлят обхвата на публичните данни, може ли той да докаже, че именно тези полета са автентични? Или трябва да се довери, че платформата ги е подбрала правилно и ги е предала без промени?

Представете си нотариус, който не заверява писмото като цяло, а всеки параграф поотделно. Всеки получава публичното писмо. Който има право на повече, получава и допълнителните параграфи, като всеки от тях продължава да носи печата на същия нотариус. Така сме изградили нашата платформа. При повечето платформи честният отговор на горния въпрос е: доверие. При нас той е: доказателство за всяко поле, което се добавя едва при разкриването. Тази статия обяснява защо тази разлика има значение и защо сме избрали по-трудоемкия път.

Всички спазват правилото за достъп по един и същ начин

EN 18239, европейският стандарт за права на достъп, сигурност и поверителност в DPP, изисква достъпът да се контролира по полета: за всяко поле има правило, което определя кой има право да го вижда. Това е правилното изискване и не е трудно да се изпълни. Какъв статут имат изобщо тези стандарти, разяснихме в нашата статия за хармонизираните стандарти.

Обичайният начин за постигането ѝ е чрез филтър на сървъра. Сървърът знае кой отправя запитването, проверява какво има право да вижда това лице и връща точно този фрагмент. Нормата не изисква нищо повече. Читателят трябва да вярва, че сървърът е подбрал информацията честно и не е променил нищо по пътя. За публичен информационен лист това е напълно приемливо. За стойност, на която преработвателят основава цената на употребявана батерия, това изисква много доверие.

Има обаче един улов, за който стандартът не се грижи: частта се получава без печат.

Очевидното решение е данните да бъдат подписани. За двата края на скалата обикновеният подпис работи добре: подписване на публичния изглед, подписване на пълния набор от данни. Как точно става това, е описано в раздела „Подписи и сертификати“ в DPP. В средата обаче нещата се объркват. Подписът върху целия документ обхваща точно полетата, които са били налице по време на подписването. Ако на оторизиран читател се разкрие допълнително защитено поле, това поле остава извън подписания набор и пристига при него непокрито. Никой не подписва предварително всяка възможна комбинация от „кой какво вижда“, тъй като броят на комбинациите нараства експоненциално. Връщаме се към филтъра без печат, а средното ниво отново се основава на доверие.

Подписване на всяко поле поотделно

Има по-добра конструкция и върху нея изграждаме платформата. Вместо да подписва готовия документ като един блок, създателят определя всяко поле поотделно в един единствен цикъл (за запознатите със стандартите: процедурата на W3C ecdsa-sd-2023).

Всяко представяне започва с едни и същи публични полета. Това, което читателят вижда отвъд тях, се добавя поле по поле, като всяко от тези полета продължава да води до публичния ключ на производителя - офлайн, без повторно подписване и без доверие в институцията, която е съставила представянето. Полетата без претенции просто липсват. Не са зачеркнати, а изобщо ги няма, и нищо за тях не прозира.

Един цикъл: сервизът

Сервизът е декларирал законен интерес към дадена батерия - едно от нивата на достъп, които Регламентът за батериите изрично предвижда. Системата на сервиза се регистрира с ключа си в нашия интерфейс и изтегля паспорта. Отговорът е същият публичен паспорт, който вижда и купувачката, но с точно едно поле повече: инструкцията за демонтаж, която се разкрива само на оторизирани читатели. Няма втори документ, няма специална версия.

Преди сервизът да се довери на това поле, софтуерът му проверява приложената печат срещу публичния ключ на производителя. Ако проверката е успешна, включително и за допълнителното поле, той знае: тези инструкции произхождат точно от производителя и никой по веригата не ги е променил. Ако проверката не е успешна, той отхвърля цялото съдържание. Това, че получава точно онези полета, на които има право, остава задача на нашата система за контрол на достъпа. Новото е следващата стъпка: дали полученото е автентично, той проверява сам, без да ни пита.

Защо „ненарушената“печат## е от съществено значение

Един непокътнат печат не означава, че съдържанието е вярно. То казва: точно това е написал производителят и оттогава никой не е променил нито един знак в него. По този начин всеки, който просто е препратил документа, отпада от въпроса за доверието: междинното хранилище, мрежата, архивът, ние.

Няма вече значение кой ви е дал паспорта.

А печатът е двоичен. Той е валиден или не е, няма такова нещо като „наполовина нарушен“. Ето защо няма степенна разлика дали допълнителните полета пристигат при вас с печат или без: без печат те не са по-слабо запълнени, а изобщо не са запълнени.

Двата метода за преглед

Всеки може да провери това сам. Transpareo Time Machine е нашето приложение с отворен код за преглед на продуктови паспорти: то прелиства историята на версиите на даден паспорт и при това изчислява всеки подпис в браузъра на потребителя, без да се обръща към наш сървър. Паспортът на една тениска носи подпис върху целия документ, а този на една батерия - одобрение поле по поле.

И двете са отворени стандарти на W3C, които всеки може да приложи. Подписът, обхващащ целия документ, е значително по-евтин за създаване и поддържане, и за тези, които предоставят само публични данни, това е напълно достатъчно. Фактът, че Time Machine поддържа и двата метода, е умишлен: паспортът остава обикновен стандартен формат, който може да бъде проверен от всеки подходящ инструмент, а не само от нашия.

На кого е от полза това и какво изисква стандартът

На кого изобщо се разкрива нещо освен публичните данни? Не на случайната купувачка. Това са преработвателят, който преценява колко струва употребяван акумулаторен пакет, застрахователят, който оценява риска, рециклиращият оператор, който сортира химикалите, и държавният орган, който разследва даден случай. Читатели, чиито решения зависят от пари или сигурност. А при обичайния подход именно тези читатели не получават сертификат за полетата, на които се основава тяхното решение. Смятаме, че сертификатът за проверка трябва да означава едно и също за всички: всяко показано поле произхожда от производителя и оттогава не е било докосвано. Печат, който важи само за публичните полета, е половин печат.

Казваме го открито: нищо от това не е задължително. Стандартът EN 18239 изисква достъпът да бъде контролиран, а филтърът на сървъра го прави безупречно. Освен това ние правим публикуваните полета подлежащи на проверка, защото целия смисъл на подписания паспорт е, че никой не трябва да се доверява на платформата. Изключването на средното ниво като изключение възстановява точно онова доверие, което подписът трябваше да премахне.

Същият принцип позволява едно поле да бъде пренебрегнато

Определянето на всяко поле поотделно води до втора характеристика, която всъщност се изисква от европейското право. Общият регламент за защита на данните дава на хората правото да поискат изтриването на лични данни. Набор от данни, подписан като единен блок, не може да изпълни това изискване, без да унищожи собствения си подпис.

Тъй като тук всяко поле е самостоятелно, едно отделно поле може да бъде премахнато, докато останалата част продължава да важи. Ако по невнимание лични данни попаднат в паспорт, те се изтриват напълно, а паспортът остава валиден: няма нужда от преиздаване, няма прекъсване на историята. Полетата, които законът изисква да се съхраняват, остават; това, което може да бъде изтрито, може да бъде изтрито при поискване, дори години по-късно.

Защо това е трудно и как го решихме

Ниене сме измислили този метод - той е публичен стандарт на W3C. Трудното не е да се измисли идеята. Трудното е да се реализира така, че паспортът да продължава да се проверява и след десет години. Обикновеният подпис се изчислява въз основа на байтовете на документа. Подписът по полета се изчислява въз основа на отделните данни в него, за което преди подписването паспортът се преобразува в фиксиран формат, в който всяка информация е представена като отделен ред. Този формат трябва да се възпроизведе след десет години символ по символ, в противен случай печатът вече няма да съвпада. Три на пръв поглед незначителни неща пречат на това и ние сме премахнали и трите в основата им.

Числата губят своя тип. Стойност като 2.0 се връща като 2 след преминаване през обикновен формат на данни. За човека това е едно и също, но за фиксирания формат е различно изречение. При нас всяка стойност се съхранява с нейния тип, а публикуването се прекъсва, веднага щом се появи дори едно число без тип.

Наименованията все още не означават нищо. Всяко име на поле трябва да сочи към еднозначно значение в речник, в противен случай полето изчезва без предупреждение при преобразуването и печатът не го покрива. При нас всеки речник се намира локално и никога не се извлича от мрежата; неизвестно име на поле спира подписването, вместо тихо да върне празен резултат.

Записите се нуждаят от фиксирани имена. При нас всеки запис в документа носи фиксиран идентификатор, за да остане изписването същото при всяко преминаване, вместо всеки път да се присвояват нови временни имена.

Най-деликатната част е свързана с собствения ключ на производителя. За всяко издаване се изисква допълнителен, краткотраен ключ, с който отделните полета, подлежащи на разкриване, се подписват поотделно. Този ключ се генерира и изтрива от самия производител. Ако той се намираше при нас, бихме могли да измислим отделни полета впоследствие. Всеки паспорт носи два такива печата - един от производителя и един от Transpareo, дори и за отделно разкрито поле.

За нас този разход е оправдан. Всеки паспорт се подписва при публикуването и се свързва с предходната версия, а неизменяемият десетгодишен архив влиза в сила веднага щом паспортите бъдат регистрирани в регистъра на EU-DPP. Подписването на всяко поле, вместо на целия блок, е разширение на тази основна концепция, а не допълнение.

Къде се намираме

Решихме да използваме доказателство за всеки читател, защото печатът трябва да означава едно и също нещо, независимо кой го разглежда. Който иска да види как работи: двата примера за паспорти, към които има линкове по-горе, се проверяват директно в браузъра, без да се запитва сървър.

Въпроси относно тази публикация

Има ли стандарт, който предписва сигнатурата по полета?

Не. EN 18239, европейският стандарт за права за достъп в DPP, изисква достъпът да се контролира по отделни полета, а филтърът на сървъра отговаря напълно на това изискване. Решението да направим достъпните полета подлежащи на проверка е наше, а не някаква формалност, изисквана от някой регулатор. Смятаме, че усилията са оправдани, защото целия смисъл на подписания паспорт се състои в това, че никой не трябва да се доверява на платформата. Какъв статут имат изобщо тези стандарти, е описано в нашата статия за хармонизираните стандарти.

Публикуваме само обществено достъпни данни. Имаме ли нужда от това?

Вероятно не, и ние го казваме така. Подписът върху целия документ обхваща паспорт, чиито полета са изцяло публични, и е значително по-евтин за създаване и поддържане. Подписването поле по поле си заслужава, веднага щом се появи втора целева група, например мрежа за ремонт, фирма за рециклиране или държавен орган, на които иначе бихте предоставили извлечения без печат. И двата метода са отворени стандарти на W3C (ecdsa-sd-2023 за подписите по полета); всеки инструмент, който поддържа стандарта, може да ги проверява, и двата се изпълняват днес в Transpareo Time Machine - върху „паспорт“ на тениска и върху „паспорт“ на батерия.

Могат ли личните данни да бъдат изтрити по-късно, без да се анулира паспортът?

Да, и това изискване действително е предвидено в европейското законодателство. Общият регламент за защита на данните дава на хората правото да поискат изтриването на лични данни, а запис, подписан като блок, не може да изпълни това изискване, без да унищожи собствения си подпис. Тъй като тук всяко поле е заложено поотделно, едно отделно поле може да бъде премахнато, докато останалата част продължава да важи, без да се налага преиздаване и без да се нарушава историята на версиите. Полетата, които законът изисква да бъдат запазени, остават на мястото си.

Кой притежава ключа за подпис?

Всеки паспорт носи два печата, като единият от тях може да бъде вашият. За всяко издаване е необходим и краткосрочен ключ, който подписва поотделно полетата, подлежащи на разкриване; този ключ се генерира и изтрива от самия производител, тъй като, ако беше в наше разположение, бихме могли да измислим отделни полета впоследствие. Преди да се доверим на върнатия печат, го проверяваме спрямо съхранения публичен ключ. По този начин всеки паспорт носи два печата от две независими институции - както за отделно разкрито поле, така и за целия набор от данни.

Ще бъде ли валиден този паспорт след десет години?

Именно в това се състои усилието. Сигнатурата по полета изчислява въз основа на отделните данни в документа, а не въз основа на неговите байтове, така че същият фиксиран формат трябва да се възпроизведе знак по знак дори десетилетие по-късно. Три фактора нарушават това, и ние сме премахнали и трите в корена им. Всяка стойност се съхранява заедно с типа си, всеки речник се намира при нас и никога не се извлича от мрежата, а всеки запис носи фиксиран идентификатор. Непроменимото десетгодишно архивно хранилище е създадено и влиза в сила, веднага щом паспортите бъдат регистрирани в регистъра на ЕС. Повече по темата можете да прочетете в нашия анализ на Регламента за регистъра.

Актуализации относно нивата на достъп и удостоверенията

Селективно разкриване на информация, подписи и развитието на стандартите на DPP - ежемесечно в кратък формат във вашата пощенска кутия.