【问题标题】:How to protect (encrypt) data stored by webkit/local store如何保护(加密)由 webkit/本地存储存储的数据
【发布时间】:2013-04-11 09:27:04
【问题描述】:

我正在开发一个使用 PhoneGap 框架的应用程序,因此它只是一个使用 HTML5 的普通网络应用程序。与许多网络应用程序一样,我的客户也希望设备离线时数据可用。对于这些情况,我想将数据存储在浏览器的本地存储中。

但是,客户还希望数据被加密,这样在设备丢失的情况下,敏感数据不会落入坏人之手。我目前的研究提出了 2 个可能的方法:

1) 在存储到本地存储之前,使用 JS 加密框架对任何数据进行加密。由于我的应用需要用户登录,我可以使用用户密码来派生加密密钥(用户密码存储在 iOS 钥匙串中)

2) 用户iOS的数据保护机制https://www.apple.com/business/docs/iOS_Security_Guide.pdf

对于 2),在开发者门户(应用程序 ID 部分)中启用数据保护是否正确不会实际上加密任何内容,而是 启用加密的可能性使用适当的NSDataNSFileManager 操作的特定文件? 还是可以通过在 App ID/配置文件级别启用数据保护来加密整个沙箱(包括浏览器本地存储!)?

还有其他推荐的方法来保护浏览器本地存储中存储的数据吗?

【问题讨论】:

  • 从用户密码中获取密钥(使用正确的 KDF 和 salt)。要求用户在启动应用程序时输入密码。但显然,只有当用户的密码很强大时,这才是安全的。

标签: ios security encryption webkit data-protection


【解决方案1】:

第一个选项适用于跨设备。

我在研究中发现的两个可靠的 JS 加密框架是

无论您做什么,请确保用于派生加密密钥的可能数据(在您的示例中为密码)安全存储。

【讨论】:

  • 使用 iOS 的钥匙串应该是安全的吧?我发现了在存储到钥匙串之前额外加密密码的代码示例。这是必要的吗?我认为钥匙串的重点已经有一个安全的位置来存储敏感的东西......?另外,有人可以告诉我上面的2)吗?
  • 引用 Mac 开发者库:“钥匙串是一个加密的容器,用于保存多个应用程序和安全服务的密码。钥匙串是安全存储容器,这意味着当钥匙串被锁定时,没有人可以访问其受保护的内容。”所以没有必要额外加密密码,除非你非常偏执;)来源:developer.apple.com/library/mac/#documentation/security/…
  • 谢谢你的信息。 2)但是我仍然不清楚。通过在配置文件中启用数据保护,应用沙箱是否可以全局加密(inkl.浏览器本地存储)?
  • 我明白了,看看这个问题,因为它解决了您的一些问题:stackoverflow.com/questions/4595955/protecting-the-app-sandbox
  • 很遗憾,此页面没有解释配置文件选项的作用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-01-20
  • 1970-01-01
  • 2011-10-24
  • 1970-01-01
  • 1970-01-01
  • 2016-02-18
相关资源
最近更新 更多