我是iOS开发的新手,我正在开发一个小型的iOS移动应用程序来存储用户的敏感信息。最初,我想使用自定义的AES加密来加密/解密所有数据。我还希望加密的数据与iCloud同步。在阅读了更多之后,我从iPhone 3GS了解到每个设备都有一个内置的AES-256密码引擎。在XCode上,我观察到我可以为移动应用程序打开一个名为“数据保护”的选项来保护数据。根据我的分析,我有以下问题:
发布于 2014-10-09 08:23:03
这实际上取决于您要防范的场景有多少种。只要有足够的时间和精力,你可能创建的任何场景都会被打破。然而,为了解决以下几个问题:
1)是的,您需要设置一个密码才能激活此功能。
2)您可以使用CommonCrypto库(或者像RNCryptor这样的包装器)
3)这是一个糟糕的想法,原因很简单:开发一个安全的算法是非常困难的。最微小的缺陷会泄露所有的数据,人们花费了多年的时间去发现这些缺陷(尽管我可能误解了你所说的“自定义加密”)。
如果您希望尽可能安全,您必须这样做:将您的文件发送到服务器进行处理(通过HTTPS)。侵入服务器要比入侵iOS应用程序要难得多。如果您只使用RNCryptor,那么撕毁应用程序寻找密码或如何获得密码是非常简单的。基本上,如果应用程序能做到这一点,那么BlackHat也能做到。
编辑我忘了一件事!如果您为每个安装生成一个随机密码并将其存储在密钥链中,那么这将有所帮助,但这并不是万无一失的( iOS密钥链内容可以从已越狱的设备中检索到,特别是当用户有一周密码时)。然而,这将使用户的数据无法恢复,如果他们擦除操作系统的任何原因。
发布于 2014-10-09 08:18:25
RNCryptor非常有用,但它基本上只是苹果自己的CommonCrypto功能的包装器(这使得实现它相当容易)。如果您想加密设备上甚至用户都无法获得的数据,这是非常有用的。
关于你的具体问题:
我希望这能帮到你。
更新:另一件需要考虑的事情..。如果您实现自己的加密,即使使用RNCryptor/CommonCrypto,也可能会产生导出控制分支。这可能会影响你的决定,这取决于你愿意处理多少文件和/或延迟。您可以在苹果的网站上了解更多信息,以下是:
https://itunesconnect.apple.com/WebObjects/iTunesConnect.woa/wo/20.0.0.13.7.2.7.9.3.1.2.3.3.1.5.7.1
发布于 2014-10-09 08:06:35
非常简单:https://github.com/RNCryptor/RNCryptor,我用它做了一个聊天应用,它太好了。
https://stackoverflow.com/questions/26273232
复制相似问题