Откријте, а да не изгубите потпис

Откријте, а да не изгубите потпис

Свако коме су заштићена поља изложена обично мора да верује платформи. Ми потписујемо свако поље појединачно како би се могла независно проверити.

Дигитални пасош производа не приказује свима исте информације. Купац види јавне податке. Сервис или обнављач види више. Тело за надзор тржишта види све. Ово је разјашњено, а европски стандарди сада то експлицитно прописују.

Занимљиво је постављено питање, суптилније: ако некоме поред јавних података прикажу и заштићена поља, може ли он проверити да ли су та поља аутентична? Или мора да верује да је платформа исправно изабрала та поља и пренела их непромењена?

За већину платформи, искрен одговор је: поверење. Ми смо своју платформу изградили на такав начин да је одговор ‘доказ’ - не само за јавна поља, већ и за сва поља која се откривају тек по потреби. Зашто је ова разлика важна и зашто смо изабрали захтевнији пут.

Сви се на исти начин придржавају правила о приступу

EN 18239, европски стандард за права приступа, безбедност и поверљивост у ДПО, захтева контролу приступа на нивоу сваког појединачног елемента података: за свако поље постоји правило које регулише ко има дозволу да га види. Ово је исправан захтев и није тешко испунити га. Статус ових стандарда смо детаљно изложили у одељку хармонизовани стандарди.

Уобичајен начин да се то постигне јесте филтрирање на страни сервера. Сервер зна ко упућује захтев, проверава шта та особа има овлашћење да види и враћа управо тај део. Контрола приступа: решена. Стандард не захтева ништа више.

Међутим, постоји једна замка коју стандард не решава: Одсечак стиже без потписа. Читалац добија приказ прилагођен посебно за њега и мора да верује да га је сервер изабрао поштено и да ништа није измењено на путу. За јавни информативни лист, то је у реду. За вредност на основу које рециклажар одређује цену за половну батерију, то захтева велико поверење.

Где један потпис достиже своје границе

Очигледно решење је да се подаци потпишу. За два краја скале, стандардни потпис добро функционише: потпишите јавни приказ, потпишите комплетан скуп података и проверите оба уз помоћ јавног кључа без сервера као посредника. Како ово детаљно функционише објашњено је у Потписи и сертификати у DPP.

Проблем је у средини. Потпис који покрива цео документ обухвата тачно један скуп поља, наиме она која су била присутна у тренутку потписивања. Ако овлашћеном читаоцу буде одобрен приступ додатном заштићеном пољу, то поље се налази ван потписаног скупа и стиже до њега непотписано. Ако се, уместо тога, цео скуп података потпише од самог почетка, потпис обухвата све, али онда би све морало бити показано свима.

Стога се средње фазе пропуштају: сервис, осигуравач, рециклажа. Ако би се унапред потписала свака могућа комбинација “ко шта види”, за сваку комбинацију био би потребан посебан потписан документ, а број комбинација нагло расте са сваром додатном групом приступа. Нико то не ради. Враћа се на непотписани серверски филтер, а средња фаза се поново ослања на поверење.

Појединачно потписивање сваког поља

Постоји бољи приступ, и управо на њему градимо платформу. Уместо да потписује готов документ као један блок, издавач наводи свако поље појединачно у једном пролазу потписивања (за оне упознате са стандардима: спецификација W3C ecdsa-sd-2023 за селективно откривање).

Сваки приказ почиње јавном основом

Сваки приказ стога почиње истим јавним пољима. Све што читалац види поред тога додаје се поље по поље, и свако од тих поља и даље води до јавног кључа издаваоца - ван мреже, без поновног потписивања и без ослањања на ентитет који је саставио приказ. Поља без тврдње једноставно недостају. Нису затамњена, већ их уопште нема, и ништа о њима не провија.

Водич кроз пример: сервис

Пример ### сервисаилуструје како ово функционише у пракси. Радионица је регистровала легитимни интерес за батерију, један од нивоа приступа који су изричито предвиђени Уредбом о батеријама. Његов систем радионице се пријављује на наш интерфејс користећи свој API кључ и преузима пропусницу.

Одговор је исти јавни пасош који купац види, али са тачно једним додатним пољем: упутствима за демонтажу, која се откривају само овлашћеним читаоцима. Без другог документа, без посебне верзије - само исти пасош са још једним пољем.

Пре него што се предузеће ослони на ово поље, његов софтвер проверава пратећи сертификат помоћу јавног кључа издаваоца. Ако је верификација успешна - укључујући и додатно поље - оно зна: да ова упутства потичу директно од произвођача и да ни ми ни било ко други дуж ланца нису на било који начин мењали. Ако провера не успе, то зна подједнако сигурно и у потпуности одбацује документ.

Наша улога у овоме је намерно минимална. Обезбеђивање да добија управо она поља на која има право остаје задатак наше контроле приступа; сваки серверски филтер ради потпуно исто. Оно што је ново јесте корак који следи: он сам проверава да ли је оно што је стигло аутентично, без да нас пита.

Зашто је “неповређеност” цела поента

Замислите нотара који не оверава писмо у целини, већ сваки пасус појединачно. Сви добијају јавно писмо. Свако ко има право на више добија додатне пасусе, и сваки од њих и даље носи печат истог нотара.

Зашто је “неповређеност” цела поента

Замислите нотара који не оверава писмо у целини, већ оверава сваки пасус појединачно. Сви добијају званично писмо. То значи: ово је тачно оно што је издавач написао и нико није променио ниједан знак од тада. То значи да је свако ко је само проследио документ - посредник, мрежа, архив, ми - искључен из питања поверења. Више није битно ко вам је дао пасош.

А печат је бинаран. Он или држи или не држи; не постоји полусломљен печат. Ако се сломи, нећете знати која је реченица измењена, само да више не можете да верујете целом документу. Зато није ствар степена да ли додатна поља стижу са својим печатом или без њега: Без печата, они нису само мало мање проверљиви; они уопште нису проверљиви.

Оба начина прегледања

Свако може сам да провери ово. Transpareo Time Machine је наша апликација отвореног кода за ### прегледањепасоша производа: Он листа кроз историју верзија пасоша, поново израчунавајући сваки потпис у прегледачу корисника без упитивања било ког од наших сервера. У њему су јавно доступна два примерка пасоша. Пасош за мајицу садржи потпис који покрива цео документ, док пасош за батерију има откривање по пољима.

Обе су отворене W3C спецификације: eddsa-jcs-2022 за потпис који покрива цео документ и ecdsa-sd-2023 за откривање поља по поље. Сви који желе могу да их имплементирају. Уложени напор је разлог зашто многи то неће учинити: потпис за цео документ је знатно јефтинији за подешавање и коришћење, и свако ко само пружа јавне податке може се с тим сналазити.

Чињеница да Time Machine подржава оба метода је намерна и тако ће и остати. Он не припада ниједној платформи. Верификатор који би прихватао само скупљу методу био би алат само за нас и ни за кога више.

Коме се откривају заштићена поља

Вреди се запитати коме се, поред јавних података, уопште открива било шта. Није обичан купац - она добија јавни сертификат. То је прерађивач који процењује вредност коришћеног батеријског пакета, осигуравач који утврђује цену ризика, рециклажа који сортира хемикалије и орган власти који саставља досије. То су читаоци чије одлуке зависе од новца или безбедности.

И управо су то поља која остају непопуњена у оквиру стандардног приступа. Они који имају највећи разлог да желе криптографску верификацију, не добијају је, баш за она поља која су темељ њихове одлуке.

Верујемо да сертификатска ознака треба да значи исто за све. “Verified by Transpareo” значи исто у детаљном извештају сервиса као и на јавном сертификату купца: сваки приказани поље потиче од издаваоца и од тада није мењано. Печат који покрива само јавна поља је само пола печата.

Више од онога што захтева стандард

Да будемо јасни: ништа од овога није обавезно. EN 18239 захтева контролу приступа, а филтер на страни сервера савршено контролише приступ. Криптографска проверљивост откривених поља је такође нешто што ми радимо уз то; то није само ставка коју прописи захтевају да одшкријемо.

Управо због тога вреди то написати. Цела поента потписане пропуснице је у томе што нико не мора да верује платформи. Уклањање посредника као изузетка обнавља управо оно поверење које је потпис требало да елиминише.

Исти принцип омогућава да се поље заборави

Појединачно навођење сваког поља уводи другу карактеристику, а то је заправо захтев европског законодавства. Општа уредба о заштити података даје људима право да затраже брисање својих личних података. Запис података потписан као један блок не може да испуни овај захтев без уништавања сопственог потписа.

Пошто се овде свако поље самостално обрађује, једно поље се може уклонити, док све остало остаје проверљиво. Ако лични подаци случајно заврше у пасошу, они се могу чистим путем уклонити, а пасош остаје важећи: нема потребе за издавањем новог, без нарушене историје. Регулаторна поља која закон налаже да се сачувају остају на месту; све што се може обрисати може се уклонити на захтев, чак и после година.

Ипак, то је сасвим обичан пасош

Ништа од овога не претвара пасош у посебан објекат који могу да отворе само наши алати. Он остаје провераљива легитимација (Verifiable Credential) у JSON-LD формату, формату ка којем се креће свет веб стандарда, и исти формат који користе Протокол транспарентности УН и шири W3C екосистем.

Пасош који купац скенира у свом прегледачу је стога исти објекат који партнер из просторије за податке може да чита, и који сваки верификатор у складу са стандардима може да провери, не само наш. Додатна безбедност читаоца не кошта ништа и никога не везује за нас.

Зашто је ово технички изазовно

Пре свега, да избегнемо било какве неспоразуме: ми нисмо измислили овај процес. ecdsa-sd-2023 је јавна спецификација W3C; криптографија иза ње није наша, и свако ко жели да је имплементира може да се упозна са њом. Није тешко смислити идеју. Тешкоћа лежи у томе да се изгради на такав начин да потпис и даље буде важећи за десет година. У томе је посао, и о томе се може рећи нешто корисно.

Разлика може звучати ситна, али мења основни приступ: стандардни потпис врши прорачуне на бајтовима документа. Селективно откривање се израчунава на основу својих изјава. Пре потписивања, пасош се претвара у стандардизовани облик у којем је свака информација представљена као засебна, самостална изјава. Тек тада је могуће изоставити изјаву без угрожавања остатка.

Ово уводи проблем који потпис заснован на бајтовима нема: исти стандардизовани облик мора бити тачно репродукован за десет година. Не приближно, већ знак по знак; иначе, доказ више неће бити важећи. Три ствари стоје на путу томе, и све три су неприметне.

Бројеви губе свој тип. Ако број напишете као обичан JSON, информација о томе какав је то број се изгуби. Вредност као што је 2.0 се након проласка кроз JSON враћа као 2. За човека је то исто, али за стандардизовани облик то је другачија изјава и валидација не успева.

Ознаке још не представљају значење. Да би се појавио стандардизовани облик, назив сваког поља мора да одговара јединственом значењу. Ако једно поље недостаје, оно тихо нестаје током конверзије. Онда се појављује у пасошу, али доказ га не покрива и нико не примећује.

Значења се обично налазе на интернету. Ово мапирање је садржано у речнику који већина алата преузима са интернета током валидације. Свако ко то ради чини проверљивост свог пасоша зависним од адресе треће стране која ће и даље радити за десет година - и остати непромењена.

Како смо то решили

Решили смо ова три проблема у корену, уместо да их откривамо касније.

Типови. Свака вредност се уноси са својим типом, а објављивање се обуставља чим се у стандардизованом облику појави иједан број без типа. Тако се грешка открива тамо где кошта само један ред кода, а не године касније као необјашњен неуспех валидације.

Речници. Сваки речник на који се позива лозинка чува се локално на нашем систему и никада се не преузима преко интернета. Непозната адреса доводи до прекида током потписивања, уместо тихог преусмеравања на празан резултат.

Идентификатори. Сваки чвор у документу има стабилан идентификатор, што обезбеђује да стандардизовани образац остане репродуцибилан, уместо да се при сваком покретању додељују нова помоћна имена.

Најзахтевнији део лежи у концепту “Понесите свој кључ”. За свако издавање потребан је додатни, кратковечни кључ, помоћу којег се поља која треба открити потписују појединачно. Издавач сам генерише и одбацује овај кључ. Ако бисмо га ми држали, могли бисмо ретроактивно да измишљамо појединачна поља, и независност потписа издаваоца не би била ништа више од тврдње. Проверавамо враћени доказ у односу на сачувани јавни кључ пре него што му поверујемо.

Сваки пасош садржи два таква доказа: један од издаваоца и један од Transpareo-а, и сваки се независно изводи ради прегледања од стране читаоца. Два потписа, два независна ауторитета - чак и за једно поље које се открива.

За нас се овај напор заиста исплати. Нисмо додали проверљивост као последичну мисао; платформа је изграђена по овом принципу од саме прве верзије. Сваки пасош се потписује приликом објављивања и ланачно повезује са претходном верзијом. Непроменљиви десетогодишњи архив се успоставља и ступа на снагу чим се пасоши региструју у ЕУ регистру ДПП. Потписивање сваког поља уместо целог блока представља проширење ове основне функционалности, а не додатак нечему што никада није било намењено за ту сврху.

Где смо сада

Општили смо се за доказ, за сваког читаоца, јер печат треба да значи једно те исто, без обзира на то ко га погледа. За оне који желе да га виде у акцији: две демонстрације наведене изнад могу се проверити директно у прегледачу, без упитивања сервера.

Питања о овој објави

Да ли стандард прописује потпис поље по поље?

Не. EN 18239 захтева да се контрола приступа врши појединачно за сваки елемент података, а филтер на страни сервера у потпуности испуњава овај захтев. Одлука да откривена поља буду проверљива изван тога је наша, а не обавеза коју налаже било који регулатор. Сматрамо да је тај напор оправдан јер је цела поента потписаног пасоша у томе што нико не мора да верује платформи - уклањање посредника управо враћа то поверење. Статус ових стандарда наведен је у нашем чланку о усаглашеним стандардима.

Шта тачно је другачије у поређењу са филтером сервера?

Није питање ко шта види, већ шта заправо стиже. Оба метода показују читаоцу тачно поља на која има право. Код филтрирања на серверу, извод стиже неопотписан, па читалац мора веровати да је сервер изабран у доброј вери и да ништа није промењено на путу. Са потврдом пољица по пољица, исти одломак стиже са потврдом која се може пратити ван мреже до јавног кључа издаваоца, без икаквог упитивања. За јавни информативни лист разлика је чисто академска; али за вредност на основу које рециклатер одређује цену коришћене батерије, то је цела ствар.

Да ли читаоцима треба посебан софтвер за ово?

Не. Пас остаје проверљива креденцијала у JSON-LD, а доказ је јавна W3C крипто-суита ecdsa-sd-2023; то значи да га сваки верификатор у складу са стандардима може проверити. Наша апликација отвореног кода за преглед, Transpareo Time Machine, верификује сваки потпис у прегледачу читаоца без упитивања било ког од наших сервера и намерно је дизајнирана да обрађује једноставне потписе у целом документу. Верификатор који би прихватао само нашу методу био би алат само за нас и ни за кога другог.

Коме се заправо откривају заштићена поља?

Није обичан купац; њој је издата јавна пропусница. То је сервис са регистрованим легитимним интересом, обнављач који процењује вредност коришћеног пакета батерија, рециклажер који сортира хемијске компоненте, осигуравач који утврђује цену ризика и орган који гради случај - заинтересоване стране чије одлуке зависе од новца или безбедности. Уредба ЕУ о батеријама предвиђа управо ове фазе. Истовремено, то су заинтересоване стране које, према стандардном приступу, не добијају доказе управо за области на којима се заснивају њихове одлуке.

Објављујемо само јавне податке. Да ли морамо то да радимо?

Вероватно не, и ми смо у томе сасвим отворени. Потпис који покрива цео документ, користећи крипто-библиотеку eddsa-jcs-2022, покрива низ чија су поља јавна, и знатно је јефтинији за подешавање и рад. Откривање поља појединачно постаје исплативо чим се укључи друга циљна група, као што су мрежа за поправке, рециклажа или јавна власт којој бисте иначе достављали не потписане изводе. Обе методе су отворене W3C спецификације и обе се тренутно користе у Time Machine-у, на “пасошу” мајице и на “пасошу” батерије.

Могу ли лични подаци бити избрисани касније без поништавања пасоша?

Да, и овај аспект је заправо прописан европским правом. Општа уредба о заштити података о личном карактеру даје људима право да затраже брисање својих личних података, а запис података који је потписан као блок не може да испуни овај захтев без уништавања сопственог потписа. Пошто су сва поља овде дефинисана одвојено, могуће је уклонити само једно поље, а да све остало остане проверљиво - без поновног издавања, без фрагментисане историје верзија. Регулаторна поља која закон налаже да се сачувају остају на месту.

Ко држи кључ за потпис?

Сваки пролаз праћен је двама доказима, од којих један може бити ваш. Свака издаја такође захтева краткорочни кључ који појединачно потписује поља која се откривају; издавач сам генерише и одбацује овај кључ, јер ако бисмо га ми држали, могли бисмо ретроактивно измишљати појединачна поља, а независност потписа издавача била би само тврдња. Проверавамо враћени доказ у односу на сачувани јавни кључ пре него што му поверимо. Тако сваки пасош садржи два доказа од два независна органа, и за појединачно откривено поље и за цео скуп података.

Да ли ће пасош и даље бити важећи за десет година?

Управо ту лежи напор. Селективно откривање засновано је на садржају документа, а не на његовим бајтовима; стога исти стандардизовани формат мора бити репродукован карактер по карактер деценију касније. Три ствари нарушавају ову доследност, и све смо их три угушили у корену - свака вредност се бележи са својим типом, а објављивање се зауставља ако се наиђе на број без типа; сваки речник се чува локално и никада се не дозива преко мреже; и сваки чвор носи стабилан идентификатор како би се обезбедило да стандардизовани облик остане репродуцибилан. Непроменљива десетогодишња архива је успостављена и ступиће на снагу чим пасоши буду регистровани у ЕУ регистру, који је оперативан од 20. јула 2026. године у складу са Имплементарном уредбом (ЕУ) 2026/1778. Прочитајте више у нашој анализи Уредбе о регистру.

Ажурирања о нивоима приступа и доказима

Селективно откривање, потписи и развој DPP стандарда - месечни преглед директно у ваш инбокс.