Большинство разработчиков приложений будут интегрировать некоторые сторонние библиотеки в свои приложения. Если это доступ к службе, например 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
}
Что, на ваш взгляд, лучший и самый безопасный способ хранения закрытого ключа? Обфускация, шифрование, что вы думаете?