2011-04-29 82 views
0

我们正在编写一个iPhone iOS4应用程序,其中包含一个加密的SQLite数据库,并且需要读取一个密钥。数据库包含提供给开发人员的数据,它不包含任何用户数据。iPhone和处理安全密钥传送

我们遇到的问题是如何协商传送密钥和/或在设备到达时是否保留密钥。这可以在没有来自用户的任何交互的情况下完成。

有没有一种方法可以在运行时安全地放入钥匙并从钥匙串中请求钥匙,以便例如,如果应用程序在监狱设备上结束,钥匙不能由邪恶的人员提取?

我怀疑这一切都可以安全地完成,但我不是这里的专家。例如,在源代码中的某些位置,我们需要从钥匙串请求密钥。

感谢您提前对您的想法。

+0

所有的注单都在具有根目录操作系统的设备上关闭,因为具有硬件访问权限的确定攻击者可能会在应用程序从钥匙串中读取数据或解密任何数据库之后立即转储所有内存。 – hotpaw2 2011-04-29 01:30:51

回答

0

当你说'钥匙'时,你是指字符串格式的钥匙吗?如果是这样,那么是放入钥匙链。 SHFFKeychainUtils提供了一个简单的界面来将字符串值存储到iOS钥匙串中。

执行此操作的最佳方法是在应用程序启动时向用户请求密钥,然后使用该NSString加密数据库(或将其存储到钥匙串中以便无忧启动)。