Задумался о шифровании данных в Андроид. Конкретно - применительно к очень простой практической задаче - как скрыть фото от чужих глаз в случае потери/кражи телефона.
Для начала - немного философии. Как известно, телефон на базе android 5+ имеет встроенные инструменты шифрования самого устройства. Для того, чтобы убедиться, идем: Настройки - Безопасность - зашифровать данные. Если там стоит "Зашифровано", то внутренняя память Вашего телефона под защитой. Ну, как под защитой - при вводе пин-кода или пароля данные разблокируются. Отсюда мораль: если Вы не используете пин/пароль на телефон, то данные не защищены никак!
Если же в настройках шифрования стоит "не зашифровано", то есть смысл зашифровать... Обратите внимание: если шифрование Вы включили самостоятельно, то оно отключится при сбросе к заводским установкам. Если же у вас новое устройство, в котором функция шифрования включена заводским способом, нет никакого способа отключить его, даже с помощью возврата к заводским настройкам.
Таким образом, получается, что внутренняя память телефона защищена. А что с "внешней"? (Ну, то есть с SD карточкой в телефон).
А ничего. Она просто не зашифрована. И это может внезапно стать проблемой - хотя бы потому, что там хранятся личные фото. Ничего "такого", но не хотел бы, чтобы они стали достоянием общественности.
В интернетах пишут, что если установить пин на 6+ символов, то появится пункт "Шифровать внешнюю SD карту". У меня не получилось. Ну, будем рыть дальше...
В общем, по итогам расследования. Есть 2 пути шифрования:
Сначала мне показалось, что для моих задач - скрыть фото от посторонних глаз, на случай утери телефона - второй путь самое оно. Попробовал.
Для истории: скачиваем EncDroid, запускаем.
Там идем в Settings, ставим галочку в "Enable SD Card", и в "External SD Card preferenses" - выставляем путь до карточки (в моем случае это /storage/sdcard0)
Создаем зашифрованный "контейнер", помещаем в него файлы... оригиналы не забываем подчищать (на тесте я этого не делал).
Работать - неудобно. Зашифрованный контейнер не прозрачен для программ, увы.
Что же... пробуем первый путь.
Устанавливаю https://play.google.com/store/apps/details?id=com.cybersafesoft.cybersafe.mobile.lite
Ограничения лайт-версии - пароль в 2 симвлоа.. ну, попробуем так.
Создаем сейф, помещаем туда фото. Как минимум - фото в сейфе можно посмотреть встренным просмотрщиком. Не фонтан, но уже более менее нормально. Но вот не монтируется на папку никак! Соответственно, все пляски вокруг этой софтины заканчиваются невозможностью нормального монтировнаия...
Еще на encfs работают:
https://play.google.com/store/apps/details?id=com.giraone.encmanfull
https://play.google.com/store/apps/details?id=com.boxcryptor.android&rdid=com.boxcryptor.android
Последний, кстати, я поставил себе.
"Тупой как пробка", то есть умеет делать хранилище, помещать в него файлы... Неудобно то, что в его том не закачать файлы массово. Не просто неудобно, а очень неудобно (у меня 1000+ фото, заливать по одному - это наверное даже не на неделю задача).
В итоге, попробовал encdroid: https://play.google.com/store/apps/details?id=org.mrpdaemon.android.encdroid
Попробовал поработать с ней... неудобно. Полез смотреть дальше. Нашел такую штуку: https://play.google.com/store/apps/details?id=ru.vsa.safephotolite&rdid=ru.vsa.safephotolite
Из плюсов - работает, шифрует. Есть свой просмотрщик. Пароль просит при входе. Экспорт с одной стороны сделан хорошо - то есть "забраешь" фото в приложение, после чего тебе спрашивают - не хотите ли удалить исходник. Делает (вручную) резервные копии. В настройках есть пути до файлов. То есть можно обеспечить внешний бекап.
Что я и сделал: установил FolderSync Lite (https://play.google.com/store/apps/details?id=dk.tacit.android.foldersync.lite&rdid=dk.tacit.android.foldersync.lite), предложив ей отправлять сейф на Яндекс диск по WebDav. Так как файлы хранятся по одному, то, в общем - нормальный способ, не перегруженный трафиком.
В итоге: "всё работает" (что прекрасно), но не без ручных операций, увы. То есть не получилось сделать так, чтобы все фото из одной папки автоматически были бы подхвачены и зашифрованы... Да и синхронизация именно в версии Light FolderSync'a - автоматом "не работает", "только ручками". Но основная задача - скрыть фото от чужих глаз в случае потери телефона - решена.
ПС. на фоне этого всего стал чуть лучше относиться к Apple - они хотя бы изначально строят систему так, чтобы пользователь вообще не забивал себе голову "что будет если я потеряю телефон с флешкой,..." - они просто не дают ставить свои SD карты + шифруют на внутренней памяти всё, что можно.