【问题标题】:Protecting data from direct access by other applications in windows保护数据不被 Windows 中的其他应用程序直接访问
【发布时间】:2011-02-26 15:12:16
【问题描述】:

有没有办法保护一些加密数据免受 Windows 中我自己的应用程序以外的应用程序的影响?我不关心保护它免受用户的影响——这显然是不可能的——而是我自己的非提升应用程序。

我知道我可以简单地将应用程序的核心代码作为服务运行,数据只能由系统帐户访问,但我希望我可以让应用程序在不比用户更宽松的令牌下运行普通令牌。

此外,如果可能的话,我宁愿不依赖 .NET。

【问题讨论】:

  • 考虑到用户所做的一切都是通过以他们的帐户运行的某个应用程序,“保护它免受其他应用程序影响”和“保护它免受用户影响”之间没有区别。
  • @Ben,但“保护非提升应用程序”和“保护它不被用户访问”是有区别的。
  • 换句话说,我不希望应用程序能够读取我的安全存储而不在安全桌面上弹出同意对话框,至少(在 vista/7 上)。跨度>
  • @bdonlan:您的应用程序是否在升级?是什么阻止任何其他程序将您的可执行文件复制到可写区域、修补和运行它。或者将 DLL 注入您的进程。
  • 您必须找到一个作为系统运行并提供数据的数据存储,检查请求访问的应用程序的身份。它必须检查进程路径和内容。并且该进程必须设置其令牌以防止其他应用程序注入 DLL(当然,任何具有调试权限的使用都可以绕过这一点)。我不知道有任何现有的软件可以提供这样的数据存储。

标签: windows security isolation


【解决方案1】:

CryptProtectData 可以进行每用户加密(如果您不传递 CRYPTPROTECT_LOCAL_MACHINE 标志,则它是每用户)。但是,如果您选择按用户加密,包括高级管理员在内的其他用户将不会对其进行解密。

【讨论】:

  • 虽然这可能是系统的一个有用组件,但它不能防止其他非提升的应用程序,这正是我在这里真正追求的......
  • 我相信这样目标就更难实现了。应用程序在 Windows 上没有身份,而用户和机器有一个。
猜你喜欢
  • 2017-05-29
  • 1970-01-01
  • 2014-12-25
  • 2012-10-02
  • 1970-01-01
  • 2019-08-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多