2011-01-12 6 views
9

Я использую API Dropbox. В примере приложения, она включает в себя следующие строки:Хранение ключей API в Android, достаточно ли обфустации?

// 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"; 

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

+2

Просьба прочитать обсуждение этой темы здесь: https://groups.google.com/d/topic/android-developers/quD5gYIZ4Ig/discussion –

ответ

5

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

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

2

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

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

 Смежные вопросы

  • Нет связанных вопросов^_^