【发布时间】:2015-10-08 16:03:42
【问题描述】:
我正在为某人构建一个 iOS 应用程序。该应用程序将用于参加模拟考试以获得专业执照。问题数据存储在 Core Data 中,但问题和答案字符串需要加密,因为客户花费大量时间编写它们并且不希望其他人窃取他的工作以用于竞争产品。
所以我想要做的是将核心数据中的属性设置为可转换,使用自定义 NSValueTransformer 将字符串转换为 NSData,并在转换时使用 RNEncrypt 进行加密和解密。
到目前为止一切顺利。
这是我的困境:我需要使用密钥来加密和解密数据,但我如何获取/创建它?
我的选择:
- 硬编码 == 糟糕!
- 生成密钥并存储在钥匙串中 == 不是正确的安全类型。即不保护设备的所有者。
- 根据用户密码生成密钥 == 用户无需登录。
- 应用程序连接到服务器并获取带有一些身份验证内容的密钥(我不知道具体涉及什么)== 我不想依赖网络连接来使应用程序工作。
- 混淆,我觉得如果我从其他字符串和方法 sig 的位创建一个字符串,然后对其进行哈希处理就足够了 == 可能不会。
那么我的问题是: - 混淆,就够了,还有其他人成功了吗? - 从我的研究中,我了解到拥有 ipa 的黑客可以看到所有硬编码的字符串、类名和方法信号,但他们看不到方法中的代码(对吗?),那么有人怎么能阅读如果它是在方法内部构建/生成的,则密钥? - 作为标题,我可以使用混淆吗? - 有没有我遗漏的选项?
为了记录,如果必须的话,我会让人们注册并登录。
【问题讨论】:
标签: ios objective-c security encryption key