Лучшие практики для хранения и защиты закрытых ключей API в приложениях

Большинство разработчиков приложений интегрируют в свои приложения сторонние библиотеки. Если оно's для доступа к сервису, например 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

}

Какой, по вашему мнению, лучший и самый безопасный способ хранения закрытого ключа? Запутывание, шифрование, как вы думаете?

Ответы на вопрос(14)

Ваш ответ на вопрос