bcrypto / btok

Cryptographic tokens
4 stars 4 forks source link

Нарушение ограничения чтения DG1 #56

Closed andrewkostevich closed 5 years ago

andrewkostevich commented 5 years ago

Права доступа из сертификата терминала могут запрещать чтение терминалом элемента DG1 с серийным номером КТА. Но в ходе протокола BAUTH терминал вне зависимости от установленных прав доступа получает сертификат КТА с серийным номером, равным значению элемента DG1 - по факту у терминала доступ к DG1 есть всегда.

agievich commented 5 years ago

Права доступа в сертификате терминала касаются чтения группы DG1. Речь идет только об этом.

Действительно, серийный номер, который хранится в DG1, терминал может получить косвенно, извлекая номер из сертификата КТ. Для этого a) должна пройти аутентификация терминала перед КТ; б) аутентификация должна быть двусторонней (вот еще одна причина, почему односторонний режим BAUTH важен; см. дискуссию #38).

Извлечение серийного номера из сертификата КТ не кажется проблемой. Точно также не является проблемой то, что серийный номер печатается на карте и может быть прочитан визуально.

andrewkostevich commented 5 years ago

Извлечение серийного номера из сертификата КТ не кажется проблемой

Серийный номер КТ является номером паспорта - аутентификация перед любым терминалом с запретом доступа к паспортным данным по факту раскрывает паспортные данные (самую важную часть паспортных данных - номер паспорта)

olegotory commented 5 years ago

Является ли серийный номер id-карты "чуствительной" информацией, по моему мнению, однозначно сказать нельзя. Есть группа данных, которая содержит персональный номер. Персональный номер действительно является важной информации, он неизменен для гражданина на протяжении всей жизни. А серийный номер id-карты это как рег. номер автомобиля.

Если серийный номер id-карты все же является "чуствительной" информацией, то есть два пути.

  1. В сертификате карты указывать серийный номер, отличный от DG1, например, серийный номер чипа карты (в зарубежных спецификациях аутентификацию карты часто называют аутентификацией чипа).
  2. При выполнении прокотокола bauth с взаимной аутентификацией на шаге проверки сертификата терминала/УЦ дополнительно проверять, что терминал/УЦ имеет право доступа к DG-1, и если он такого права не имеет -- завершать команду с ошибкой. Но как-то будет странно, сертификат может быть корректным, а команда проверки сертификата возвращает ошибку. Возможно можно найти подходящий код ошибки.

1-й способ: пока сложно оценить все негативные моменты. Один из негативных моментов это то, что у id-карты фактически будут 2 серийных номера, что усложняет ведение различных баз данных. Второй -- нет никакой связи (биндинга) сертификата карты с группами данных. С другой стороны упрощается процесс персонализации карт. 2-й способ: усложняет процесс аутентификации.

agievich commented 5 years ago

Да, указание серийного номера КТ в сертификате не кажется проблемой: a) речь идет о терминале, который получил сертификат и, таком образом, аккредитован для работы в инфрастуктуре; б) речь идет о терминале, который прошел аутентификацию перед КТ; в) сертификат КТ передается в защищенном виде. Серийный номер становится известным только терминалу.

А как по-другому? Считать аккредитованные терминалы потенциально враждебными? Довольно спорно. Особенно в связи с предложениями о кэшировании сертификатов (#42, #43) и предположениями о том, что терминалов будет совсем немного.

Разнести номер КТ и номер сертификата КТ? Да, можно. Но что это изменит? Утверждение аутентификации "КТ с номером XXX" будет изменено на "КТ с сертификатом номер YYY". Анонимность все равно соблюдена не будет. Для обеспечения анонимности нужны более тонкие механизмы. Самый простой из них -- RI (Restricted Identification) -- прорабатывался нами в самом начале, но пока отложен из-за низкой потребности в нем. Кстати, режим односторонней аутентификации BAUTH сохраняет возможность поддержки анонимности в будущем.

И почему серийный номер -- это номер паспорта. Это в BTOK не утверждается.

andrewkostevich commented 5 years ago

И почему серийный номер -- это номер паспорта. Это в BTOK не утверждается.

Если мы говорим о разрабатываемой ID-карте, то это номер паспорта.

указание серийного номера КТ в сертификате не кажется проблемой:

Получение значения DG1 минуя ограничения на чтение DG1 - это просто внутреннее противоречие стандарта, которое лучше снять (пусть УЦ назначит порядковый номер сертификата)

Считать аккредитованные терминалы потенциально враждебными?

Например, если терминал обслуживает продажу спиртного и других товаров 18+, то терминалу надо одно право - на проверку возраста. В текущей конфигурации терминалу по факту будут доступны номера паспортов всех покупателей - это не правильно даже для дружественного терминала.

Анонимность все равно соблюдена не будет.

Это не вопрос анонимности (анонимности нет), это вопрос возможности/невозможности терминала связать облегченный сертификат (и информационные системы для которых он использовался) с персональными данными сверх тех, что ему разрешены, причем - самое неприятное - связать с номером паспорта, который однозначно идентифицирует человека.

Шутка: администратор терминала 18+ будет знать номера паспортов всех алкоголиков и сдавать их черным риэлторам.

agievich commented 5 years ago

Если мы говорим о разрабатываемой ID-карте, то это номер паспорта.

Здесь мы обсуждаем не id-карту, а стандарт BTOK.

связать с номером паспорта, который однозначно идентифицирует человека.

Разве номер сертификата не характеризует владельца однозначно?

agievich commented 5 years ago

Дискуссия свелась к вопросу, должен ли отличаться серийный номер сертификата от серийного номера КТ или нет. Стандарт может быть прочитан так, что серийные номера сертификата и КТ -- это разные номера, и тогда ничто не мешает УЦ назначать сертификатам номера по своему усмотрению. УЦ может повторять номер КТ в номере сертификата. Или может не повторять.

Недоговоренность в стандарте -- это не очень здорово (и я все-таки склоняюсь к определенному прочтению, см. комментарий в #55), но в данной ситуации она снимает напряженность с чтением DG1.

Предложение: без изменений (речь теперь идет о будущих редакциях BTOK).

agievich commented 5 years ago

В https://github.com/bcrypto/btok/commit/667110be1903eb4a39f76ed5a3f1b729725839b6 при описании компонента certHolderReference уточнено, что речь идет о серийном номере сертификата. Этот номер может отличаться от номера КТ или совпадать. В BTOK не уточняется.