iPhone中的数据保护API不加密

iPr*_*abu 4 security iphone api data-protection ios

我需要在Documents Directory中保护我的数据,因此我使用了Apple Data Protection API.Apple资产

  1. 我在设置应用程序中启用了数据保护.设置 - >常规 - >密码锁定开启
  2. 我使用NSDataProtectionKey编写文件

    [data writeToFile:imagePath options:NSDataWritingFileProtectionComplete error:nil];
    
    Run Code Online (Sandbox Code Playgroud)
  3. 文件已成功写入

  4. 我得到了文件属性

     [[NSFileManager defaultManager] attributesOfItemAtPath:fullPath
                                                         error:NULL];
    
    Run Code Online (Sandbox Code Playgroud)
  5. 它会返回这样的属性,因为您可以看到NSFileProtectionKey是NSFileProtectionComplete

    NSFileCreationDate = "2013-01-22 06:10:48 +0000";
    NSFileExtensionHidden = 0;
    NSFileGroupOwnerAccountID = 501;
    NSFileGroupOwnerAccountName = mobile;
    NSFileModificationDate = "2013-01-22 06:10:48 +0000";
    NSFileOwnerAccountID = 501;
    NSFileOwnerAccountName = mobile;
    NSFilePosixPermissions = 420;
    NSFileProtectionKey = NSFileProtectionComplete;
    NSFileReferenceCount = 1;
    NSFileSize = 8964;
    NSFileSystemFileNumber = 335997;
    NSFileSystemNumber = 16777218;
    NSFileType = NSFileTypeRegular;
    
    Run Code Online (Sandbox Code Playgroud)

我确信我已成功写入文件并成功读取该文件.但是当我在iExplorer(Mac的外部iOS设备阅读器应用程序)中打开此设备时,它会向我显示未加密的文件.

没有加密意味着我写了一个图像文件.但我能够在iExplorer中查看该图像(在文档目录中).但我的目的是加密它.因为我不希望用户看到这些文件.我知道其他加密AES算法.但是想知道为什么Data Protection API不起作用.

注意:我使用iPad2 iOS 6.0.1和设备中记录的日志

小智 10

但是想知道为什么Data Protection API不起作用.

它确实有效,你只是期望它比它做的更多.

适用于文件的加密iOS对userland中的任何内容都是透明的.加密是在硬件级别完成的,因此窃取设备闪存的任何人都无法访问数据.但是,如果屏幕已解锁且设备已打开,则操作系统将像处理所有其他文件一样处理这些文件,并且它们似乎不会从文件系统中"加密".

如果要执行此操作,则必须使用某种非对称加密方法对文件进行编码,例如AES(OpenSSL或GnuTLS可以很好地完成工作).