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




