大多数应用程序开发人员都会将一些第三方库集成到他们的应用中,如果是为了访问服务,例如Dropbox或YouTube,或者用于记录崩溃。第三方库和服务的数量令人惊人。这些库和服务大多是通过某种方式进行身份验证后集成的,大多数情况下,这是通过API密钥进行的。出于安全考虑,服务通常会生成公共和私有密钥,通常也称为秘密密钥。不幸的是,为了连接到服务,必须使用此私有密钥进行身份验证,因此可能成为应用程序的一部分。
毫无疑问,这面临着巨大的安全问题。公共和私有API密钥可以在几分钟内从APK中提取,并且很容易被自动化。
假设我有类似于这样的东西,那么我该如何保护秘密密钥:
public class DropboxService {
private final static String APP_KEY = "jk433g34hg3";
private final static String APP_SECRET = "987dwdqwdqw90";
private final static AccessType ACCESS_TYPE = AccessType.DROPBOX;
// SOME MORE CODE HERE
}
在您看来,存储私钥的最佳和最安全的方法是什么?混淆、加密,您认为怎样?