PKCS # 11 - Как защитить владельца смарт-карты от вредоносного поставщика смарт-карт при записи новых сертификатов на уже подготовленную смарт-карту - PullRequest
0 голосов
/ 28 февраля 2019

В настоящее время я изучаю PKCS # 11, и есть определенный сценарий, с которым я не знаю, как справиться.

Это сценарий:

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

Смарт-карты, насколько мне известно, имеют два типа пользователей: обычный пользователь (PIN-код пользователя) и SO (SO PIN-код).

Так в чем проблема?Когда провайдер использует ПИН-код пользователя для генерации ключей и написания сертификатов, мы можем программно изменить его с помощью операции взаимодействия SetPin или позволить клиенту изменить его позже дома, с помощью соответствующего программного обеспечения.Проблема возникает, когда клиент захочет получить новые сертификаты для своей смарт-карты, и на этом этапе поставщик не знает ПИН-код пользователя для карты (т. Е. Он не может использовать какие-либо криптографические механизмы на карте).Если клиент предоставит пароль для лица, предоставляющего информацию, он сможет заставить клиента подписать несколько случайных документов своими сертификатами вместо использования ПИН-кода для правильной причины (используя механизмы PKCS # 11 для написания нового сертификата)

Итак, мой вопрос:

Есть ли какой-нибудь способ, которым мы можем иметь второй ПИН-код пользователя на карте (отдельно для провайдера и клиента) для определенных токенов?Можем ли мы сделать некоторые механизмы PKCS # 11 доступными только для конкретного пользователя (например, создать пару ключей только для провайдера и подписать документы сертификатами только для клиента)?

Какой будет стандартизированный сценарий для работы с этим видомпроблемы?Буду рад услышать ваше мнение.

1 Ответ

0 голосов
/ 28 февраля 2019

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

Для аутентификации в системе механизм ПИН не подходит (может быть атакован посредством воспроизведения), и типичным решением является ответ на вызов.Это также имеет то преимущество, что он не позволяет выполнять подпись.

Другой вариант (если ключ может быть сгенерирован только один раз) будет через жизненный цикл файла сертификата.Неинициализированный файл может вообще не требовать аутентификации, и только после написания сертификата изменяется жизненный цикл файла.

Можно также переупорядочить весь процесс, поэтому User-PIN невсе же действительный и поэтому никакая подпись не может быть создана во время написания сертификатаТолько после этого пользователь выбирает значение PIN-кода и устанавливает его.

...