Открыть хранилище сертификатов (только для программы)

#c #cryptography #window #x509certificate2 #cng

#c #криптография #окно #x509certificate2 #cng

Вопрос:

Я внедряю программу, которая включает сохранение и чтение сертификатов в хранилище сертификатов.

Открытие и чтение сертификата осуществляется с помощью следующих 2 API:

   CertOpenStore()
  CertFindCertificateInStore()
  

Например, сертификат (A) хранится программой в хранилище сертификатов, и я хочу, чтобы пользователь не мог взаимодействовать с хранилищем, где хранится сертификат (добавление сертификата вручную, удаление сертификата …). Удаление или добавление сертификата осуществляется только программой.
Итак, как мне это сделать?

Заранее спасибо.

Ответ №1:

В принципе, вы не можете полностью заставить это работать, поскольку это похоже на проблему DRM. Пользователь всегда может перепроектировать ваше приложение и создать свою собственную среду выполнения.

Вы можете попробовать запустить MAC поверх хранилища и сохранить ключ в своем приложении. Однако, если пользователь найдет ключ, то ваше хранилище может быть изменено и может быть создан новый тег аутентификации.

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