打开证书存储仅程序

问题描述

我正在实现一个程序,该程序涉及在证书存储区中保存和读取证书。

通过以下两个API完成证书的打开和读取:

  CertOpenStore()
  CertFindCertificateInStore()

例如,证书(A)由程序存储在证书存储中,并且我希望用户无法与存储证书的存储进行交互(手动添加删除证书...)。证书的删除添加仅由程序实现。 那我该怎么办呢?

谢谢。

解决方法

基本上,您无法完全使用它,因为它类似于DRM问题。用户始终可以对应用程序进行逆向工程并创建自己的运行时。

您可以尝试在存储上执行MAC,并将密钥保留在您的应用程序中。但是,如果用户找到了密钥,则可以更改您的商店并可以创建新的身份验证标签。

最后,您需要为应用程序提供一个受信任的执行环境(TEE)或某种访问权限(即,在可以更改文件的特定用户下运行,而普通用户只能读取该文件)。