android - 加密 Android 设备上的信息(合理防止用户访问)

标签 android security encryption obfuscation

我们正在制作一个 Android 应用程序,一个问答游戏,我们希望在用户离线时缓存问题和答案。这样做的问题是,在用户回答问题之前,我们需要向用户隐瞒这些数据。否则很容易作弊,对游戏造成伤害。然后可以提取所有问题和答案并自动将答案提交给服务器 API。

最方便的方法是在安装时从我们的服务器检索 key 或 secret ,将其隐藏在“某处”,并使用它与服务器通信,以及对存储中的问题和答案进行加密。但显然,将其隐藏在“某处”并不是一个安全的概念。

我研究了一下,似乎在这种情况下不可能进行可靠的加密,因为应用程序必须“知道” secret (无论是证书、密码短语 + salt,还是其他什么)或者至少它在哪里可以找到,这个可以通过反编译提取出来。然而,我们会觉得它足够难做。

问题是:您是否知道一种方法可以让普通用户难以从 APK 中检索 secret - 即,几乎不可能编写自动 key 提取程序?

到目前为止我最好的猜测:

  • 在数据库中隐藏一些信息,并将其用作 key 的盐
  • 从设备中添加几位信息作为盐(IMEI、电子邮件地址、序列号...)——也许再加上加盐的方式可能难以获得?

最佳答案

您可以为每个问题使用单独的键,这取决于对上一个问题的回答。因此,除非您已经回答了问题 1,否则无法解密问题 2。

关于android - 加密 Android 设备上的信息(合理防止用户访问),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6388470/

相关文章:

php - 128位PHP数据加密和解密

android - 在 Android TextView 中编码

java - Android暂停部分代码并等待Activity完成

java - Android:如何删除 Activity 标题栏?

java - 如何修复 GWT 中的 "Cookie set without httpOnly"安全问题

c++ - 如何以编程方式改进破解替换密码?

java - 启动服务后 Activity 挂起

iphone - 如何防止 iOS 上的格式字符串攻击和缓冲区溢出?

security - JWT 刷新 token 流程

java - 在 Spring 配置文件中加密密码