Шифрование папки для приложения Android? - PullRequest
4 голосов
/ 29 февраля 2012

Приложение, над которым я работаю, получает все файлы с SD-карты, но эти файлы действительно важны, и приложение должно поддерживать проблему безопасности. Таким образом, существует возможность, что папка или каталог, содержащий файл, могут быть зашифрованы или заблокированы с ключом и будет использоваться только моим приложением? Пожалуйста, помогите, я новичок и застрял в этой точке.

Ответы [ 3 ]

3 голосов
/ 29 февраля 2012

В Android все, что хранится на SD-карте, не защищено разрешениями и может быть доступно любому приложению, имеющему разрешение на прикосновение к SD-карте (и любому / любому, кто может вытащить карту и прочитать ее в другом месте).По сути, вы должны предположить, что если вы разместите ресурсы там, они могут быть доступны любому.Итак, вы правы, вы хотите зашифровать эти ресурсы, чтобы даже при таком доступе никто не мог получить к ним доступ.

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

Вам нужен ключ для шифрования этих данных, и вы должны хранить этот ключ в секрете (любой, кто знает, что он может расшифровать данные).У вас есть два варианта ... (1) запрашивать пароль у пользователя каждый раз, когда он использует приложение, и затем извлекать ключ из этого пароля, или (2) сохранять пароль в вашем приложении.(2) опасно, поскольку приложения Android могут быть легко восстановлены, когда злоумышленник может просто заглянуть в ваше приложение и найти ключ.(1) предпочтительнее, так как тогда злоумышленник не хранит ключ для восстановления ... компромисс в том, что вашим пользователям необходимо ввести пароль для использования вашего приложения.Что вы должны сделать здесь, это функция анализа риска ... насколько важны эти данные?Вам нужна надежная защита или вы защищаете его, чтобы атакующему было только труднее?Только вы можете ответить на это, исходя из ваших вариантов использования и чувствительности / риска ваших данных.

0 голосов
/ 29 февраля 2012

Вот как сделать новую папку:

String SaveFolder = "/Save";
        String extStorageDirectory = Environment.getExternalStorageDirectory().toString();
        File mySaveFolder = new File(extStorageDirectory + SaveFolder);
        mySaveFolder.mkdir();

Получил этот код в public void onCreate Теперь он создает папку с именем "Сохранить".

Редактировать: Iпосмотрел там нет способа установить пароль или что-то.Хотя я читаю здесь http://developer.android.com/guide/topics/data/data-storage.html#filesInternal, можно сохранять файлы во внутренней памяти, где пользователи тоже не могут получить доступ, но я никогда не использовал это, поэтому не могу вам с этим помочь.

0 голосов
/ 29 февраля 2012

Посмотрите на эти ресурсы:

http://source.android.com/tech/encryption/android_crypto_implementation.html

http://developer.android.com/reference/javax/crypto/package-summary.html

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

...