Хранение ключей API в Android, достаточно ли обфускации? - PullRequest
9 голосов
/ 12 января 2011

Я использую Dropbox API.В примере приложения оно содержит следующие строки:

// Replace this with your consumer key and secret assigned by Dropbox.
// Note that this is a really insecure way to do this, and you shouldn't
// ship code which contains your key & secret in such an obvious way.
// Obfuscation is good.
final static private String CONSUMER_KEY = "PUT_YOUR_CONSUMER_KEY_HERE";
final static private String CONSUMER_SECRET = "PUT_YOUR_CONSUMER_SECRET_HERE";

Я хорошо знаю мантру «Секретность - это не безопасность», и запутывание действительно лишь немного увеличивает количество усилий, необходимых для извлечения ключей.Я не согласен с их утверждением «Обфускация - это хорошо».Что мне делать, чтобы защитить ключи?Достаточно ли 10000 * обфускации или мне следует рассмотреть что-то более сложное?

Ответы [ 2 ]

5 голосов
/ 12 января 2011

Вы не можете с этим поделать. Если пользователь (злоумышленник) имеет защищенные данные и код, который снимает защиту, пользователь может в конечном итоге получить доступ к данным. Это так просто. Отладчик и точка останова в нужное время - это все, что им нужно. Это, и много свободного времени и решимости.

Является ли секретность достаточной для ваших целей, зависит от специфики вашего бизнеса. Но, как правило, в мобильном мире, если клиенты беспокоятся о том, что их данные будут украдены, они применяют высокий уровень защиты от краж и потерь. Такие вещи, как удаленная очистка, обязательная блокировка экрана и т. Д. Я не думаю, что программист должен копировать все это.

2 голосов
/ 13 января 2011

Безопасность никогда не может быть идеальной, поэтому вам решать, сколько работы вы хотите сделать.Вы можете разбить секрет потребителя на несколько строк для простого изменения, которое предлагает минимальный уровень дополнительной безопасности, или вы можете создать алгоритм для представления секрета другим способом (что угодно, от вставки символов, которые не используются через каждые X пробелов в строке).для изменения каждого символа, возможно, на основе числового представления).

Вы должны рассмотреть работу против выгоды.Если это приложение, которое вы и несколько друзей собираетесь использовать, то, вероятно, это не имеет большого значения.Если это будет приложение, которым пользуются 10 миллионов человек, безопасность, очевидно, больше беспокоит.

...