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

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

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

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

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

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

Сите го почитуваат правилото за пристап на ист начин

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

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

Меѓутоа, постои една замка, која стандардот не ја третира: Делот пристигнува непотпишан. Читателот добива приказ прилагоден специјално за него и мора да верува дека серверот го избрал искрено и дека ништо не е изменето по пат. За јавна информативна белешка, тоа е во ред. Но, за вредност врз основа на која рециклирачот ја одредува цената на користена батерија, тоа е голема доверба.

Каде што еден потпис ги достигнува своите граници

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

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

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

Потпишување на секое поле поединечно

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

Секој приказ започнува со јавното јадро

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

Зошто “непрекинатоста” е целата поента

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

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

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

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

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

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

Фактот што Time Machine ги поддржува и двете методи е намерно и ќе остане така. Тој не припаѓа на ниедна платформа. Верификатор што прифаќа само поскапата метода би бил алатка за нас и за никој друг.

На кого се откриваат заштитените полиња

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

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

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

Повеќе од она што го бара стандардот

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

Токму затоа вреди да се запише. Би било лесно да се усогласиме со буквата на стандардот, да го испорачаме серверскиот филтер и да ја прогласиме фазата за завршена. Ние претпочитаме обврската да важи каде и да се појавува печатот. На крајот на краиштата, целата поента на потпишаниот пасош е тоа што никој не мора да ѝ верува на платформата. Исклучувањето на средниот слој токму ја враќа довербата што потписот требаше да ја елиминира.

Истиот принцип овозможува да се занемари некое поле

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

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

Сепак, тоа е сосема обичен пасош

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

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

Зошто ова е технички предизвик

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

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

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

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

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

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

Како го решивме тоа

Ги решивме трите проблеми во коренот, наместо да ги фаќаме подоцна.

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

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

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

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

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

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

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

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

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

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

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