Android中的安全API密钥

问题描述 投票:0回答:1

场景:

假设您有一个使用服务器上某些API的Android应用程序。

该应用程序没有登录功能(由于用户在服务器上没有任何个人数据,因此不需要它)

为了将请求发送到服务器,请在服务器上创建OAuth2功能。您向服务器发出请求,它返回一个Auth Token。

但是如果用户监视网络请求,则可以很容易地接受此请求。因此,您创建了一个与Auth请求的POST正文一起发送的密钥。

问题从这里开始:

您创建的此密钥必须保留在应用程序中,并且应用程序中的任何代码都可以分解(反编译),并且可以访问该密钥。

密钥不能在服务器上,否则将需要获取密钥,因此可以对其进行监视。

您无法以任何方式对其进行编码,因为解码功能必须在Android方面,因此可以反编译。

问题:

是否有可能至少使秘密密钥更难解码?

P.S:使用R8或Proguard仅会使代码模糊。如果黑客或攻击者进行了尝试,他们可以轻松查看应用程序的整个代码,并可以继续了解编码或解码的流程,或者在代码内找到密钥。

android security
1个回答
0
投票

绝对不是解决方案,尽管有一些商业解决方案提供了一些锁盒式的实现,但是以较小的规模却无法证明成本是合理的。因此,如果我们想做一些干净,整洁和便宜的事情,这就是我的建议。

[在Android中,借助A ndroid Native Development Kit (NDK),我们获得了本机语言的支持。另外,Android中有JNI(Java Native Interface)。 JNI定义了一种从Java或Kotlin代码生成的字节码与本机代码(即用C或C ++编写的代码)交互的方式。

因此,在Android NDK的帮助下,我们可以保护API密钥。根据Android Studio的版本,我们提供了三种方法来保护API密钥:

  • 使用本机C ++模板
  • 使用CMake
  • 使用ndk-build
  • 您应该进一步探索三种实现方式中的任何一种。

© www.soinside.com 2019 - 2024. All rights reserved.