繁体   English   中英

加密密钥:可以使用混淆吗?

[英]Encryption key: Can I use obfuscation?

我正在为某人构建一个iOS应用。 该应用程序将用于进行模拟考试以获得专业许可。 问题数据存储在Core Data中,但是问题和答案字符串需要加密,因为客户花费大量时间编写它们,并且不希望其他人窃取他的作品以在竞争产品中使用。

因此,我要做的是将核心数据中的属性设置为可转换,使用自定义NSValueTransformer将字符串转换为NSData,然后在转换字符串时使用RNEncrypt进行加密和解密。

到现在为止还挺好。

这是我的困境:我需要使用密钥来加密和解密数据,但是如何获取/创建数据呢?

我的选择:

  • 硬编码==不好!
  • 生成密钥并将其存储在钥匙串中==不是正确的安全性类型。 即。 不能保护设备所有者。
  • 从用户密码生成密钥==没有其他原因让用户必须登录。
  • 该应用程序连接到服务器并获取带有一些身份验证内容的密钥(我不知道确切涉及的内容)==我不想依靠网络连接来使该应用程序正常工作。
  • 混淆,我觉得如果我从其他字符串和方法sig的某个位创建一个字符串,然后对其进行哈希处理,那就足够了==可能不会。

我的问题是:-迷惑,足够了吗,其他人成功了吗? -从我的研究中,我了解到拥有ipa的黑客可以看到所有硬编码的字符串,类名和方法信号,但是他们看不到方法内部的代码(是正确的吗?),所以有人怎么读关键,如果它是建立在方法内部/生成的? -作为标题,我可以使用混淆吗? -我有错过的任何选择吗?

作为记录,如果需要的话,我将让人们注册和登录。

不能在本地安全地存储数据 一旦您能够解密它,攻击者也可以。 这适用于每种加密技术。 无论您尝试什么。

您必须为服务器上的每个数据点存储数据或不同的解密密钥,并每次都一次一个地检索它。 您还必须确保用户不仅发送100个请求,而且手工检索所有数据。

请注意,仅将一个密钥存储在服务器上将导致与在应用程序中进行硬编码完全相同的操作。 不限制请求只会导致攻击者比查看已解密的本地数据库需要更多的时间。

当然,你可以混淆它,使其看起来像它有它背后的一些好的加密-但如果有人想要得到的数据,他就可以。

关于IPA中的代码:您将无法看到原始代码,但是将能够看到一些与原始代码产生相同输出的代码。 只要设备可以产生有效密钥,攻击者也可以。

我不知道是否有一个庞大的社区正在寻找随机应用程序来窃取其一些内部问题/答案/数据,我对此表示怀疑。

您只需要使产品好极了,就不会有任何具有相同数据的竞争产品都反对它。 数据本身总是可以被“窃取”。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM