iOS 如何通过加密存储持久数据?
Posted
技术标签:
【中文标题】iOS 如何通过加密存储持久数据?【英文标题】:How does iOS store persistent data with encryption? 【发布时间】:2011-09-22 07:51:13 【问题描述】:iPhone 应用程序可以加密其存储的数据吗?这样即使是拥有越狱 ios 设备的用户也无法访问该文件。例如,游戏中心可能与本地数据同步,您不希望用户操纵分数。您也不希望您的 IAP 被规避。
有没有一种简单的方法可以在写入设备之前加密您的数据?
也许我的问题不是很清楚。他们确实是:
当我使用类似的东西时:[array writeToFile:path atomically:YES];是否有任何自动加密可确保只有我的应用才能正确访问文件?
如果没有,最简单的实现方法是什么?
PS:现在我发现 NSData 可以完成这项工作,但是 NSDataWritingFileProtectionComplete 标志需要#if __IPHONE_4_0 <= __IPHONE_OS_VERSION_MAX_ALLOWED
。我想知道在不受支持的设备上会发生什么?
【问题讨论】:
请注意,即使在普通的 iOS 设备上,用户也可以访问所有数据(只读)。使用 iPhoneExplorer 之类的应用程序。 【参考方案1】:在@GrahamLee 对this question 的回答以及security.stackexchange.com 上的其他iOS 标记问题中了解有关iOS 加密的更多信息。
基本总结 - 仅基于 iPhone 控件:
如果有人拥有该设备且该设备未锁定,则他们可以访问所有数据 如果有人拥有设备并且该设备被锁定,他们可以获得大部分数据,甚至可能全部(某些例外情况可能适用)您可以在存储数据时在您的应用中进行混淆处理并使用加密,但攻击者可以对该加密代码进行逆向工程以进行解密。
您需要弄清楚此类 DRM 技术的价值,并决定它们在这种情况下是否值得。
【讨论】:
+1 如果 Apple 投入巨资解决问题,并且完全控制硬件、固件和操作系统,无法阻止设备越狱,那么您无法创建更高层的东西将更加牢不可破。这并不意味着一点点混淆是不值得的,但不要指望它是灵丹妙药。【参考方案2】:该文档将帮助您找到更准确的答案:
http://sit.sit.fraunhofer.de/studies/en/sc-iphone-passwords.pdf http://sit.sit.fraunhofer.de/studies/en/sc-iphone-passwords-faq.pdf【讨论】:
以上是关于iOS 如何通过加密存储持久数据?的主要内容,如果未能解决你的问题,请参考以下文章
如何测试 Core Data SQLite 文件是不是已加密?
在 iphone/ipad 的持久存储上加密数据的最安全方法是啥?