#c #cryptography #window #x509certificate2 #cng
#c #криптография #окно #x509certificate2 #cng
Вопрос:
Я внедряю программу, которая включает сохранение и чтение сертификатов в хранилище сертификатов.
Открытие и чтение сертификата осуществляется с помощью следующих 2 API:
CertOpenStore()
CertFindCertificateInStore()
Например, сертификат (A) хранится программой в хранилище сертификатов, и я хочу, чтобы пользователь не мог взаимодействовать с хранилищем, где хранится сертификат (добавление сертификата вручную, удаление сертификата …). Удаление или добавление сертификата осуществляется только программой.
Итак, как мне это сделать?
Заранее спасибо.
Ответ №1:
В принципе, вы не можете полностью заставить это работать, поскольку это похоже на проблему DRM. Пользователь всегда может перепроектировать ваше приложение и создать свою собственную среду выполнения.
Вы можете попробовать запустить MAC поверх хранилища и сохранить ключ в своем приложении. Однако, если пользователь найдет ключ, то ваше хранилище может быть изменено и может быть создан новый тег аутентификации.
В конце концов, вам понадобится либо доверенная среда выполнения (TEE), либо какое-то разрешение на доступ для вашего приложения (т. Е. работающее под определенным пользователем, которое может изменять файлы, в то время как обычный пользователь может только читать файл).