【发布时间】:2019-02-17 22:28:00
【问题描述】:
我正在使用 AWS Cognito,我需要在我的 android 应用程序中的某处存储一些凭证和机密,以便以后使用它们来登录/注册/注销用户。
一些来源建议将凭据存储在项目 gradle.properties 文件中。从那里,凭据将被检索为BuildConfig.FIELD_NAME。我可以 100% 确定在逆向工程时无法从 apk 中提取这些内容吗?
我正在考虑的另一种方法是使用非对称加密算法(使用公私钥)加密凭据,并在需要时在运行时对其进行解密,但同样,我需要将公钥存储在我的应用程序中的某个位置解密凭据。这不再起作用,因为可以通过反编译 apk 来提取公钥。
我已经对此进行了大量研究,但在这种情况下我没有发现任何可以帮助我的东西。几乎每篇文章都提到如何存储密码等凭据,但情况不同,因为我没有在运行时从服务器或任何地方检索我的秘密和凭据。调用 API 来获取凭据又是一件坏事。
那么,我怎样才能尽可能安全地做到这一点? 我在等你的解决方案!谢谢
编辑: 密钥库并没有真正起作用,因为我必须在将它们添加到密钥库之前从某个地方获取秘密
【问题讨论】:
-
@Killer 我不认为这是重复的,因为我需要在将秘密添加到密钥库之前将其存储在某个地方
-
是的,我现在更清楚你的问题了。但问题集中在同一件事上。但是,接受的答案仅回答从外部服务器检索数据并在内部保存时的方面。但是问题仍然有建议,比如使用 NDK 来保存秘密数据
标签: android amazon-web-services security encryption credentials