Шифрование папки для Android-приложения?

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

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

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

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

Взгляните на эти ресурсы:

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

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

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

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

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

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

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