Windows 服务如何访问使用 NTFS EFS 加密的文件夹

信息安全 加密 视窗 ntfs
2021-08-27 21:43:00

如果我理解正确,当我在 Windows 中为特定文件夹启用 NTFS 加密 (EFS) 时,它会使用特定帐户的用户名/密码(加盐)来创建用于数据加密和解密的非对称密钥。如果我为某个文件夹启用加密,我认为这意味着其他系统帐户(如LocalSystemNetworkService)将无法访问该文件夹的内容。

如果您为整个驱动器启用加密,这将如何工作?即在这种情况下,Windows 服务如何能够使用磁盘?

我问的原因是我想在包含多个应用程序(服务、gui 控制台、一些命令行工具等)的已部署可执行文件的某个文件夹上启用加密,所以我想确切地了解我是如何将需要配置所有这些才能工作。

(更新)

澄清一下,我们有一个位于远程位置的服务器,我们希望保护我们安装的软件不被复制或反汇编。服务器正在运行一些服务,这些服务从设备接收数据并将其存储在周围,并且它有一个用于可视化的 Web 应用程序。登录受相当强的密码保护,但这并不能阻止任何人取出磁盘并制作副本。

如果EFS适合这个?还是我们应该采取不同的方法?

4个回答

也许是 BitLocker 而不是 EFS?

我们有一个位于远程位置的服务器 [...] 阻止任何人取出磁盘并制作副本。

好吧,您可以使用 BitLocker 全盘加密并将解密密钥存储在主板的 TPM 芯片中。并将 BitLocker 设置为在启动时自动解锁卷。

这意味着小偷将不得不窃取整个服务器,而不仅仅是取出磁盘。

这种 BitLocker 卷解锁操作模式仅称为 TPM

这是一篇列出不同模式的博客文章:

Luis Rocha,Count upon Security博客,2014 年 6 月 23 日,BitLocker 与 TPM 分 10 步。(在这里 存档。):

  • 仅 TPM:启动序列不需要身份验证,但可以防止脱机攻击,是对用户最透明的方法。

这至少会使任何试图获取密钥的尝试更容易预防/检测。

您的可执行文件迟早需要位于托管它的服务器的内存中。所以无论如何它都可以用于分析。

为了加载到内存中,如果之前已加密,则必须对其进行解密。

换句话说,一旦您控制了远程服务器,您将在那里运行的数据将可用于分析。

系统文件夹没有 EFS。

文档说:你不能这样做。(我没有尝试过,但是文档对此很清楚。)

MSDN 条目文件加密(在此处存档)说:

请注意,以下项目无法加密:

  • 压缩文件
  • 系统文件
  • 系统目录
  • 根目录
  • 交易

回答这个问题:EFS​​是否适合这个?

我认为EFS适合:

  • 使用 EFS 保护加密,以防硬盘被放入另一台计算机。没有安全证书无法读取文件
  • 为了保护您在运行服务器中的源代码,请使用您管理的用户加密所有文件夹源代码。这样,管理员或系统帐户都无法读取或访问您的源代码。但是apache无法读取文件。您必须使用加密文件夹的相同用户帐户运行 apache 服务。确保在 apache 服务器配置中禁用文件列表。
  • 如果攻击者重置您的用户密码,任何人都无法使用加密文件,您必须提供安全证书。

编辑:

  • 当然,您必须能够访问正在部署站点的 Web 服务器,并且能够创建和管理用户。

有人检测到这种方法缺少什么吗?