我在硬盘驱动器的某处有一个文件,我想确保它只能由特定程序访问,而不是
- 由时间机器支持
- 由 OS X 10.7 的版本功能复制
- 以系统复制的任何其他方式 - 除非用户明确这样做,即通过将其复制到其他目录。
是否可以在 Objective-C 或 C 中以编程方式执行此操作?
我在硬盘驱动器的某处有一个文件,我想确保它只能由特定程序访问,而不是
是否可以在 Objective-C 或 C 中以编程方式执行此操作?
据我所知,使用CSBackupSetItemExcluded就足够了 - 您需要链接到CoreServices
框架才能访问它。这负责 Time Machine 和版本。我不知道系统会自动复制文件的任何其他情况,除非用户明确完成。
不可能绝对确定只有特定程序才能访问用户计算机上的本地文件。这是因为如果用户足够精明,所有可能的方法都可以绕过。
执行此操作的一种常见(尽管复杂)方法是使用 Web 服务器提供的密钥加密文件。为了获取密钥并解锁文件,程序必须联系 Web 服务器,进行身份验证,然后使用密钥解密文件。如果您经常更改密钥并将其绑定到用户,攻击者将很难绕过这一点。攻击将包括当文件在内存中未加密时转储进程内存,然后以这种方式访问它。这很难,但可行。这种方法可以阻止除最老练的攻击者之外的所有攻击者。许多 PDF 和其他文档 DRM 都是以这种方式实现的(亚马逊为每个设备分配一个密钥并进行安装,但除此之外是相同的想法)。