NTFS文件加密:EFS加密文件系统的原理与实践

什么是NTFS文件加密?

NTFS文件加密通常指Windows系统内置的EFS(Encrypting File System),它基于公钥加密技术,对NTFS卷上的文件进行透明加密。用户访问加密文件时系统自动解密,而其他用户即使拥有文件权限也无法读取内容。

EFS加密原理

EFS使用对称加密与非对称加密结合:

  • 每个文件生成一个随机生成的文件加密密钥(FEK),用对称算法(如AES)加密文件内容。
  • FEK被用户的公钥加密,存储在文件头中。用户私钥用于解密FEK。
  • 添加额外恢复代理时,FEK也会用恢复代理的公钥加密。

用户私钥受用户登录密码保护(通过DPAPI加密)存储在本地配置文件或智能卡中。

如何加密文件或文件夹

  1. 右键点击文件/文件夹 → 属性 → 高级。
  2. 勾选“加密内容以便保护数据” → 确定。
  3. 如果是文件夹,系统会询问是否应用到子文件夹和文件。

加密后的文件名显示为绿色(默认)。首次加密系统会自动生成用户证书。可通过 certmgr.msc 查看“个人”证书。

备份与导出证书

重要:如果用户证书丢失(例如重装系统),加密文件将永久无法访问。务必导出证书:

  • 运行 certmgr.msc → 展开“个人” → 证书 → 选中带有“加密文件系统”用途的证书。
  • 右键 → 所有任务 → 导出 → 选择“导出私钥” → 设置密码保护 → 保存为PFX文件。
  • 将PFX文件备份到安全位置(如密码管理器、U盘)。

共享加密文件

EFS不允许直接共享加密文件给其他用户,但可添加其他用户(需对方有EFS公钥):

  1. 右键加密文件 → 属性 → 高级 → 详细信息。
  2. 添加 → 选择用户(需对方证书在受信任的证书存储中)。

添加后,该用户也能解密文件。

数据恢复

如果用户私钥丢失,可通过恢复代理(通常为域管理员)解密。独立系统默认无恢复代理,但可手动设置:

  • 组策略编辑器 → 计算机配置 → Windows设置 → 安全设置 → 公钥策略 → 加密文件系统 → 添加数据恢复代理。

否则,唯一方法是使用之前的证书PFX文件导入。

EFS vs BitLocker

特性EFSBitLocker
范围单个文件/文件夹整个驱动器
透明性对用户透明,但文件所有者可访问系统启动后全盘可见
保护点防止其他用户读取文件(即使离线)防止驱动器被盗后读取数据
网络传输只保护NTFS卷上,解密后明文传输解锁后全盘暴露

通常建议组合使用:BitLocker保护设备丢失风险,EFS保护多用户环境下的文件级机密。

安全提醒

  • 加密后不要删除证书,否则恢复无望。
  • 系统崩溃时,EFS文件无法访问;BitLocker则可通过恢复密钥引导。
  • 加密文件在移动、复制到非NTFS卷(如FAT32)时会自动解密。
  • 恶意软件可能读取解密后的文件,EFS不防木马。

结语

NTFS文件加密是Windows原生强大的安全功能,正确使用可有效防止未经授权的数据泄露。但务必重视证书备份,避免永久损失。