我正在开发一个应用程序,我们需要在 Gradle 编译时加密某些资产。然后我们需要用相同的私钥解密它们,所以我们使用对称密钥系统,但我们可以使用非对称系统。关键问题是我们希望以某种方式将密钥保存在 APK 中,但安全地存储它们。这样我们就不必向服务器请求这些私钥或非对称系统中的合作伙伴密钥。APK 文件本身很容易逆向工程和反编译,包括资源和 Java 代码。
然而,我们在我们的应用程序中使用了一个 C 库。我们正在使用为 ARM 架构编译的这个库的 .so 文件。我们使用应用程序主 Java 代码中的 SWIG 接口与该库进行交互。我想知道是否可以将私钥存储在该库的源代码中,然后通过 SWIG 绑定函数访问这些密钥。我认为这是解决我的问题的最佳解决方案,因为 ARM .so 文件需要花哨的商业反编译器和 ARM 体系结构的知识才能有效地对它们进行逆向工程。从而使这种获取私钥的方法非常安全。