【问题标题】:Opening and storing encrypted documents offline in iOS在 iOS 中离线打开和存储加密文档
【发布时间】:2012-08-13 08:19:52
【问题描述】:

我已下载加密文件,可在文件夹中离线查看,我想知道:

  • 如何在适当的阅读器中打开它们,因为它们是 ms office docs 和 prezi 格式

  • 我想它们必须是未加密的,以便读者可以阅读它们,但在这种情况下如何确保安全?

  • 使用哪个文件夹来避免 iCloud 同步,我已经阅读了这个Disable iCloud sync

  • iOS 是否通过基于应用程序密钥的加密来保护应用程序的文档,因为我阅读它还是我错了?

【问题讨论】:

    标签: ios encryption cryptography ms-office


    【解决方案1】:

    即兴发言,随着想法的出现,Sven 对UIDocumentInteractionController 的看法是正确的,并且对象由 URL 标识。

    但是,您可能不需要对磁盘上的文件进行解密即可使用。您可能可以编写自己的小 URL 协议(子类 NSURLProtocol 并适当地实现方法;您最终应该检查 URL 是否在您创建的发明方案中 - 例如 myApplicationEncrypted:// - 然后将数据包发送到 NSURLProtocolClient ) 并通过NSURLProtocol +registerClass 将其注册到设备。

    您显然需要在磁盘和协议客户端之间进行解密。因此,您将传递未加密的数据——您需要对 UIDocumentInteractionController 做出信任判断。

    文档交互控制器已记录在您的应用中工作,因此不应该存在沙盒问题。

    【讨论】:

    • 我不确定 NSURLClient 方法是否用于获取文档数据。但是,即使您即时解密数据,一旦其他应用程序可以访问数据,它就不再受到保护。您不能强制其他应用确保其安全。
    • @Sven 我非常有信心注册为NSURLProtocols 的东西总是处理URL 获取的东西。尽管这就是“思想发生时”的意思——这是一个尝试的想法,而不是我尝试过的想法。我想如果用户使用交互控制器尝试在另一个应用程序中打开,因为您的 NSURLProtocol 子类仅限于您的沙箱,那么会有问题。
    • UIDocumentInteractionController 没有通过自定义的 NSURLProtocol。您也不能使用非 file:// 方案,因为 UIDocumentInteractionController 会引发错误。我只成功使用了 UIWebView 及其 loadRequest、自定义方案 (mysecurestore://) 和响应该方案的自定义 NSURLProtocol。
    【解决方案2】:

    您可以使用UIDocumentInteractionController 对象将您的文档发送到其他应用程序。您使用指向文档的文件 URL 对其进行初始化,然后使用其中一种方法来呈现它。

    这将负责显示预览(如果可能)并让用户选择应在其中打开文档的应用程序。

    文档必须被解密才能工作。然后,您无法对文件的安全性做出任何保证 - 一旦将其移交给另一个应用程序,您将无法控制。

    如果您的应用没有明确选择使用 iCloud 同步,您的数据将不会与 iCloud 同步。发送到 iCloud 的是整个设备的备份(如果启用)。正如您在链接的问题中已经阅读的那样,有一些方法可以为单个文件禁用此功能。

    iOS 文件保护基于设备密钥,而不是每个应用程序密钥。这也不是必需的,因为应用程序受到沙盒的相互保护,除非您的手机已越狱。在越狱的手机上没有安全保证。

    【讨论】:

      猜你喜欢
      • 2019-01-06
      • 1970-01-01
      • 1970-01-01
      • 2011-04-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-13
      • 1970-01-01
      相关资源
      最近更新 更多