我已经看过WWDC关于iOS5中数据保护的一些文档和视频,它看起来非常好,因为只要您的设备被锁定,它就可以加密所有应用程序数据并保护它。但是,我发现该系统范围的数据保护机制有两个主要问题:
1-如果某人设法在没有锁定的情况下窃取我的iPhone(这通常是“窃取和运行”情况下发生的情况),它可能会将我的iPhone插入笔记本电脑并以未加密的方式访问我的数据< / p>
2-它迫使我定义一个系统范围的密码,这对一些用户来说似乎很自然,但对很多用户来说仍然很麻烦。我迫使我的用户定义系统级密码似乎是滥用的,即使我的应用程序是加密可能真正需要它的唯一应用程序。而且它更加辱骂,因为四位数的密码不能很好地抵御暴力攻击。
所以我的问题如下。有没有简单的方法可以使用特定于我的应用程序的密码来加密我的数据,这样每次用户启动应用程序时,他们都必须输入密码,但他们不必在系统级别定义一个密码?如果没有,我是否至少可以使用这种特定于应用程序的密码插入标准数据保护API?如果没有,是否值得在核心数据之上编写我自己的加密层以实现这种情况?或者它是否可以添加到iOS的未来版本中(在这种情况下,我现在可能会坚持使用系统范围的密码并稍后升级)?
答案 0 :(得分:0)
其他操作系统上的一些数据保护API(例如Windows上的DPAPI)允许开发人员为用于保护数据的密钥派生过程提供补充熵。在这些系统上,您可以轻松地从引脚编号中获取该数据。如果没有该引脚,则无法生成密钥并读取数据。
我看起来并且在iOS上找不到任何这种效果,但我不是一个客观的程序员,所以坦率地说,阅读苹果的文档对我来说是一种痛苦,而且我看起来并不太难。
答案 1 :(得分:0)
根据您的使用情况,您可能希望在应用中启用数据保护,但如果用户不使用密码,则不会为您提供太多保护。我不知道启用该权利是否会强制使用密码。
您可以采取路径要求应用程序在启动时具有PIN码,然后使用该PIN码以及其他一些数据数据来生成公共加密函数的密钥。