iOS数据保护是如何工作的

iOS数据保护是如何工作的,ios,data-protection,Ios,Data Protection,我有一个简短的问题: 我下载了一个iOS应用程序,它使用NSFileProtectionComplete类来保护包含敏感信息的sqlite文件 根据iOS安全文档(),当设备(iPhone/iPad)与笔记本电脑配对时,笔记本电脑会从移动设备获得托管密钥包。密钥包包含解密设备上信息所需的所有类密钥 但是,我注意到,当我将设备与笔记本电脑配对并使用iExplorer浏览文件系统时,sqlite文件仅在设备解锁时可用。当手机锁定(仍配对)时,文件不可读。锁定设备时,可以查看未使用NSFileProt

我有一个简短的问题:

我下载了一个iOS应用程序,它使用NSFileProtectionComplete类来保护包含敏感信息的sqlite文件

根据iOS安全文档(),当设备(iPhone/iPad)与笔记本电脑配对时,笔记本电脑会从移动设备获得托管密钥包。密钥包包含解密设备上信息所需的所有类密钥

但是,我注意到,当我将设备与笔记本电脑配对并使用iExplorer浏览文件系统时,sqlite文件仅在设备解锁时可用。当手机锁定(仍配对)时,文件不可读。锁定设备时,可以查看未使用NSFileProtectionComplete的文件

如果托管密钥包包含解密信息的所有类密钥,为什么我必须解锁设备才能通过iExplorer访问它

我在iPad3上使用iOS 6.0,并使用iOS数据保护工具()确定文件使用的数据保护类

iOS应用程序:AccountVault
文件:PointMinder.sqlite

任何帮助都将不胜感激


谢谢。

从您链接的文档文件:

完全保护(NSFileProtectionComplete):类密钥为 使用从用户密码和设备派生的密钥进行保护 UID。用户锁定设备后不久(如果需要,10秒) 密码设置为(立即),解密的类密钥为 已放弃,使该类中的所有数据在 用户再次输入密码

所以,若你们想访问那个些文件,那个么设备应该被解锁。苹果就是这样做的。

编辑:在“黑客攻击和保护iOS应用程序”中找到:

保护类密钥是主加密密钥,用于根据文件的访问策略解锁文件。 保护类是用于强制执行文件访问策略的加密机制。

有些文件非常重要,只有当设备的用户界面解锁时,操作系统才能解密它们。这些文件的加密密钥用一个类密钥包装,该类密钥只有在用户输入其密码后才可用。当设备再次锁定时,密钥将从内存中擦除,使文件再次不可用。

保护级主密钥存储在称为密钥包的托管中。密钥包包含加密的保护类主密钥,以及设备上系统文件的其他密钥。系统密钥包使用另一个名为BAGI的加密密钥进行加密,该密钥也存储在NAND的可擦除存储器中。只要用户进行身份验证以满足特定的安全保护策略,就可以解密密钥包中的加密密钥


因此,该文件的密钥会被传输,但会被加密。当您输入密码时,操作系统会解密该密钥,然后可以使用该密钥解密受其保护的文件。

这只适用于我应用程序中的SQLite数据库,而不是我希望的其他资源。但是,在锁定设备并等待几分钟后,在iExplore仍然打开且设备仍然连接的情况下,我仍然面临同样的问题,无法访问数据库。如果我断开iPad并重新连接,我想iExplore会被迫刷新,然后我就无法访问数据库。因此,不确定它的内存中是否只有旧的“未加密”数据库信息或其他信息。

忘了提到iPad有密码保护。iExplorer知道在哪里可以找到托管密钥包和备份密码短语吗?如果设备未配对,iExplorer无法访问文件系统。配对设备后唯一的变化是钥匙袋被转移。所以我猜它使用的托管密钥包很像iTunes来解密和读取信息。你有没有发现关于这个的其他信息?谢谢回复。在您的评论之后,我尝试了另一个测试:在将设备与iTunes配对并解锁设备后,我打开了iExplorer。在这个阶段,sqlite文件是可以访问的——就像它最初一样。在执行该操作之后,我锁定了设备并等待了5分钟,注意到sqlite文件仍然可以访问。这个实验也没有按预期进行。这里我要指出的是,设备设置为立即解锁,sqlite文件使用的是NSFileProtectionComplete-我已经检查了两次。根据我提到的文档:“当密码锁定设备首次连接到iTunes时,系统会提示用户输入密码。然后,设备创建一个托管密钥包并将其传递给主机。托管密钥包包含与设备上使用的完全相同的类密钥。“它说明所有的类密钥都存在于托管密钥包中。如果我已经拥有了所有的类密钥,为什么它需要密码来解锁类密钥?换句话说,获得类密钥需要UID和密码的组合,但所有的类密钥都已经存在于托管密钥包中。奇怪的是,5分钟后文件被删除。”直到可访问。可能它是类似于iExplorer中的缓存版本(我自己从未使用过)?另外:每个文件的密钥由几个类密钥中的一个打包,这取决于文件应在何种情况下可访问。这可能意味着并非所有的类密钥都在配对时解密。@John Topley,谢谢您的编辑。现在我知道了更多的格式。:)是的,可能。我会继续研究。