Цифровият паспорт на продукта не показва едно и също на всички. Купувачът вижда публично достъпните данни. Сервизът или фирмата за рециклиране вижда повече. Органът за надзор на пазара вижда всичко. Това е изяснено и европейските стандарти вече го постановяват изрично.
Интересният въпрос е по-дискретен: ако някой получи достъп до защитени полета, които надхвърлят обхвата на публичните данни, може ли той да докаже, че именно тези полета са автентични? Или трябва да се довери, че платформата ги е подбрала правилно и ги е предала без промени?
Представете си нотариус, който не заверява писмото като цяло, а всеки параграф поотделно. Всеки получава публичното писмо. Който има право на повече, получава и допълнителните параграфи, като всеки от тях продължава да носи печата на същия нотариус. Така сме изградили нашата платформа. При повечето платформи честният отговор на въпроса по-горе е: доверие. При нас отговорът е: доказателство за всяко поле, което се добавя едва при разкриването. Тази статия обяснява защо тази разлика има значение и защо сме избрали по-трудоемкия път.
Всички спазват правилата за достъп по един и същ начин
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 - върху „паспорт“ на тениска и върху „паспорт“ на батерия.
Могат ли личните данни да бъдат изтрити по-късно, без да се анулира паспортът?
Да, и това изискване действително е предвидено в европейското законодателство. Общият регламент за защита на данните дава на хората правото да поискат изтриването на лични данни, а запис, подписан като блок, не може да изпълни това изискване, без да унищожи собствения си подпис. Тъй като тук всяко поле е заложено поотделно, едно отделно поле може да бъде премахнато, докато останалата част продължава да важи, без да се налага преиздаване и без да се нарушава историята на версиите. Полетата, които законът изисква да бъдат запазени, остават на мястото си.
Кой притежава ключа за подпис?
Всеки паспорт носи два печата, като единият от тях може да бъде вашият. За всяко издаване е необходим и краткосрочен ключ, който подписва поотделно полетата, подлежащи на разкриване; този ключ се генерира и изтрива от самия производител, тъй като, ако беше в наше разположение, бихме могли да измислим отделни полета впоследствие. Преди да се доверим на върнатия печат, го проверяваме спрямо съхранения публичен ключ. По този начин всеки паспорт носи два печата от две независими институции - както за отделно разкрито поле, така и за целия набор от данни.
Ще бъде ли валиден този паспорт след десет години?
Именно в това се състои усилието. Сигнатурата по полета изчислява въз основа на отделните данни в документа, а не въз основа на неговите байтове, така че същият фиксиран формат трябва да се възпроизведе знак по знак дори десетилетие по-късно. Три фактора нарушават това, и ние сме премахнали и трите в корена им. Всяка стойност се съхранява заедно с типа си, всеки речник се намира при нас и никога не се извлича от мрежата, а всеки запис носи фиксиран идентификатор. Непроменимото десетгодишно архивно хранилище е създадено и влиза в сила, веднага щом паспортите бъдат регистрирани в регистъра на ЕС. Повече по темата можете да прочетете в нашия анализ на Регламента за регистъра.




