Жестко закодированный секретный текст в приложении для Android, чтобы использовать его для аутентификации или других целей.

Я хочу сохранить переменную, где никто не может видеть значение,

Если кто-то попытается декомпилировать файл APK:

private final String secretkey = "THEmyKEYISLOVE";

Я скомпилировал приложение в APK, а затем декомпилировал его с помощью http://www.javadecompilers.com.

Когда я проверил код, он показывает значение! Является ли это проблемой безопасности?

Я читал что-то о подписанных APK-файлах, которые включают в себя открытый ключ внутри APK, поэтому его могут открыть только те, у кого есть закрытый ключ. Это работает, чтобы никто не видел значение secretkey?

Любой совет?


person Tarık Seyceri    schedule 01.08.2016    source источник
comment
Тут нет 100% решения. Что бы вы ни делали, приложение должно иметь возможность восстановить значение, и злоумышленник может сделать то же самое. Если вы разрабатываете для API 18 или выше, это может помочь: developer.android.com/ обучение/статьи/keystore.html   -  person Henry    schedule 01.08.2016
comment
stackoverflow.com/a/5220925/5515371   -  person Mujammil Ahamed    schedule 01.08.2016
comment
Просто используйте стеганографию и спрячьте текст внутри картинки.   -  person Phantômaxx    schedule 01.08.2016
comment
Большое спасибо за быстрый ответ, это достаточно справедливо :)   -  person Tarık Seyceri    schedule 01.08.2016


Ответы (2)


Идея использования асимметричного шифрования состоит в том, чтобы иметь пару ключей: открытый ключ, известный другим сторонам, и закрытый ключ, известный только вам. Не кодируйте ключи жестко в коде. Храните их либо в частном хранилище, либо в хранилище ключей Android. Лучше всего хранить их на сервере и получать их при необходимости. Есть и другие способы хранения, такие как сохранение их в изображении в ресурсах Android.

Вы также можете использовать обфускатор при создании apk, сделайте это, включив proguard. Это действие, которое вы пропустили в предыдущем вопросе.

person Santa Teclado    schedule 01.08.2016

Это невозможно сделать. Вы должны спроектировать свое приложение так, чтобы оно было безопасным даже при наличии ненадежного клиента.

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

person Antimony    schedule 01.08.2016