2012-03-05 3 views
1

Когда вы следуете за документом Application Licensing на странице разработчика для Android, чтобы использовать ServerManagedPolicy для лицензирования, в разделе Implementing an Obfuscator говорится, что объявить приватный статический конечный массив из 20 со случайными байтами под названием SALT. Это передается конструктору AESObfuscator, и в описании говорится, что это «массив случайных байтов для использования для каждой (un) обфускации». Я новичок в этом, но я думаю, что это для обфускации значений предпочтений.Android obfuscation hide salt value

Когда позже я запутываю сам код, используя опцию ProGuard, поставляемую с Android SDK для Eclipse, экспортируя apk, я получаю окончательный apk. Но использование приложения с обратным инженером, такого как apktool на моем apk, показывает массив SALT в простых байтах. Теперь, как я уже сказал, я новичок в этом, и мой вопрос может показаться немного наивным ... но разве это не плохо? Не должен ли бит-массив быть немного более скрытым?

ответ

3

Соль не секрет, поэтому это не проблема, если она раскрыта. Тем не менее, обфускатор искажает код (в основном, имена переменных и методов), а не значения. Итак, все, что вы сохранили как (строки, массивы байтов, ваш ключ обфускации), будет восстановлено путем декомпиляции. Обфускация делает это немного сложнее найти, но если вы целенаправленно ищете случайный 16-байтовый массив или 128-битный ключ, его не так сложно найти.

BTW, этот пример на самом деле не способствует передовым методам - ​​вы должны использовать произвольное генерируемое значение для каждой операции шифрования и хранить его вместе с зашифрованными данными. Не жестко-кодируйте его своим кодом шифрования и используйте его каждый раз. Опять же, этот пример предполагает, что вы будете шифровать (для целей обфускации) только одно предпочтение.

+0

Спасибо. У меня сложилось впечатление от документа, что это будет простой «конечный способ» сделать это, поэтому теперь я вижу, что мне нужно больше копать в этом до публикации. – rickbear