Android обфускация скрыть ценность соли - PullRequest
1 голос
/ 05 марта 2012

Следуя документу Application Licensing на странице разработчика для Android, чтобы использовать ServerManagedPolicy для лицензирования, в разделе Реализация Obfuscator говорится об объявлении частного статического окончательного массива 20 сслучайные байты, называемые СОЛЬ.Это передается конструктору AESObfuscator, и в описании говорится, что это «массив случайных байтов для использования при каждом (не) запутывании».Я новичок в этом, но я думаю, что это для обфусцирования значений предпочтений.

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

1 Ответ

3 голосов
/ 05 марта 2012

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

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

...