iOS 上特定于应用程序的数据保护

Posted

技术标签:

【中文标题】iOS 上特定于应用程序的数据保护【英文标题】:Application-specific data protection on iOS 【发布时间】:2012-03-09 02:37:48 【问题描述】:

我看过一些来自 WWDC 的关于 ios5 中数据保护的文档和视频,它看起来非常棒,因为它可以加密您的所有应用程序数据,并在您的设备被锁定时对其进行保护。但是,我发现该系统范围的数据保护机制存在两个主要问题:

1- 如果有人设法在我未锁定的情况下偷走了我的 iPhone(这通常发生在“偷跑”案件中),它可能会将我的 iPhone 插入笔记本电脑并访问我未加密的数据

2- 它迫使我定义一个系统范围的密码,这对某些用户来说似乎很自然,但对很多用户来说仍然很麻烦。即使我的应用程序是唯一真正需要加密的应用程序,我也强迫我的用户定义系统级密码,这似乎是一种侮辱。而且它更具有滥用性,因为四位数的密码不能很好地防止暴力攻击。

所以我的问题如下。是否有任何简单的方法可以使用特定于我的应用程序的密码来加密我的数据,这样每次用户启动应用程序时,他们都必须输入密码,但不必在系统级别定义密码?如果不是,我至少可以使用这种特定于应用程序的密码插入标准数据保护 API 吗?如果没有,是否值得在核心数据之上编写我自己的加密层来启用这样的场景?还是可能会添加到未来版本的 iOS 中(在这种情况下,我可能会暂时使用系统范围的密码并稍后升级)?

【问题讨论】:

请尝试在apple.stackexchange.com 上提问。 @sch—为什么?这是一道编程题。 是的,抱歉,我第一次阅读时没有理解您的问题。虽然现在,我真的不知道我是如何误解它的:) 虽然我理解您的担忧,但问题是您的用户是否关心在应用级别对特定应用中的数据进行加密。 他们当然非常关心对这些数据进行高度加密并保护其免受任何形式的入侵,因为它是身份信息,并且该应用程序的承诺之一是分布式安全存储。因此,我们希望应用与移​​动银行应用程序相同级别的数据保护。 【参考方案1】:

其他操作系统上的几个数据保护 API(例如 Windows 上的 DPAPI)允许开发人员为用于保护数据的密钥派生过程提供补充熵。在这些系统上,您可以轻松地从密码中获取该数据。如果没有该引脚,您将无法生成密钥并读取数据。

我在 iOS 上查看并找不到任何与此效果有关的东西,但坦率地说,我不是一个客观的 c 程序员,阅读苹果的文档对我来说是一种痛苦,而且我并没有太努力。

【讨论】:

【参考方案2】:

根据您的用例,您可能希望在应用中启用数据保护,但如果用户不使用密码,它不会为您提供太多保护。我不知道启用该权利是否会强制输入密码。

您可以采取这样的方式,要求应用在启动时有一个 pin 码,然后使用该 pin 码以及一些其他数据数据来生成通用加密功能的密钥。

https://developer.apple.com/reference/security

【讨论】:

以上是关于iOS 上特定于应用程序的数据保护的主要内容,如果未能解决你的问题,请参考以下文章

带有 socket.io 的单页应用程序中的特定于部分的侦听器

iOS 完整数据保护 + 应用程序:performFetchWithCompletionHandler

iOS 数据保护不适用于已安装的应用程序

实施和测试 iOS 数据保护

iOS 数据保护的工作原理

如何将数据保护类权利添加到我的 iOS 5 应用程序