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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Зашто је “нетакнутост” толико важна вреди објаснити мало детаљније. Нетакнут печат не гарантује да је садржај истинит. Он каже: ово је тачно оно што је издавач написао и нико није променио ниједан знак од тада. То значи да је свако ко је само проследио документ - посредник, мрежа, архива, ми - искључен из питања поверења. Више није важно ко вам је дао пасош.

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

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

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

Обе су отворене 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-а, и сваки се независно изводи ради прегледања од стране читаоца. Два потписа, два независна ауторитета - чак и за једно поље које се открива.

За нас се овај напор заиста исплати. Нисмо додали проверљивост као последичну мисао; платформа је изграђена по овом принципу од саме прве верзије. Сваки пасош се потписује приликом објављивања и ланачно повезује са претходном верзијом. Непроменљиви десетогодишњи архив се успоставља и ступа на снагу чим се пасоши региструју у [Регистру ДПП ЕУ].(/de/blog/dpp-register-ist-gesetz). Потписивање сваког поља уместо целог блока представља проширење ове основне функционалности, а не додатак нечему што никада није било намењено за ту сврху.

Наша позиција

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

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

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

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