Приложение для тех, у кого есть секреты

Выношу на народный суд свой не коммерческий pet-проект: Моя теневая галерея.
Хочу собрать фидбек, что требуется исправить, что добавить.

Целью этого pet-проекта было создать приложение - хранилище изображений с максимальным приоритетом на конфиденциальность данных. При этом позволить пользователю выбрать тонкий баланс между удобством и защитой. Если у вас паранойя, что за вами слежка, а ваше устройство хранит по меньшей мере интимные фотографии Байдена (старшего!) – вкручиваем защиту на максимум. Если вам нужно просто спрятать важные документы от случайного человека, которому попал в руки ваш телефон – делаем меньше защиты.

Приложение для тех, у кого есть секреты Android, Приложение на Android, Галерея, Фотография, Шифрование, Длиннопост

Я сперва опишу общие особенности, а ниже подробно по пунктам как всё устроено.

1. Изображения недоступны для галереи и других приложений, хранятся во внутренней директории приложения с измененными именами и расширениями.

2. Вход в приложение защищен паролем и маскировочным функционалом под музыкальное приложение, да-да, приложение в приложении. Дополнительная мера безопасности для защиты от несанкционированного доступа – после 30 попыток неверного ввода приложение очищает хранилище и все данные.

3. Приложение снимает и хранит фотографии в зашифрованном виде по средствам Advanced Encryption Standard.

Концепция безопасности: все данные хранятся только на устройстве пользователя, серверная архитектура хранения пользовательских изображений, превью, ключей, паролей не применяется. Тем не менее, сам пользователь может делиться изображениями как в зашифрованном, так и дешифрованном виде (на свой страх и риск). Получать изображения от других пользователей и дешифровать их, используя аналогичный ключ шифрования.

Особенности хранения данных.

1. Превью хранятся во внутреннем каталоге приложения с расширением .p и не шифруются. Масштаб превью в пикселях от 1х1 px (ничего не увидеть) до 100х100 px (в общих чертах различимо содержание изображения) можно выбрать в Настройках.

2. Оригиналы изображений хранятся во внутреннем каталоге приложения. В случае, когда используется шифрование, файл сохраняется с расширением .kk. Если же пользователь выбрал опцию не использовать шифрование, файл сохраняется с расширением .o. Когда пользователь делится расшифрованным изображением, создается временный файл с расширением .peekaboo. В таком виде файл можно отправить любым доступным устройству способом. Как только пользователь закрывает окно просмотра этого изображения - расшифрованный экземпляр удаляется с устройства. То есть, зашифрованные изображения хранятся только в зашифрованном виде. Изменить настройки использования шифрования пользователь может через меню Настройки.

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

Особенности работы системы шифрования.

У приложения имеется три режима для шифрования:

1. БЕЗ ШИФРОВАНИЯ. Сохранение файлов без ввода ключа шифрования – файлы сохраняются на устройстве в недоступном другим приложениям и галерее формате, однако злоумышленник сможет извлечь и считать их, если завладеет устройством. Получив отправленный с устройства файл, он сможет считать содержимое.

2. ПОСТОЯННЫЙ КЛЮЧ ШИФРОВАНИЯ (баланс между удобством и защитой). Пользователь придумывает, либо генерирует ключ шифрования, который сохраняется на устройстве. Ключ используется для шифрования файла в соответствии с Advanced Encryption Standard. Файл хранится на устройстве в зашифрованном виде и, даже получив доступ к памяти устройства (или получив отправленный с устройства зашифрованный файл), злоумышленник не сможет считать содержимое без ключа шифрования. Ключ хранится в приложении в защищенном хэш-функцией виде. Пользователь может создать и хранить в приложении до трех ключей.

3. ПЕРЕМЕННЫЙ КЛЮЧ ШИФРОВАНИЯ. Если пользователь введёт ключ и выставит галочку "Не сохранять ключ шифрования", ключ не будет храниться в приложении, а будет запрашиваться каждый раз при входе. Ключ существует в приложении пока оно открыто. Самый высокий уровень безопасности, однако, если вы забыли старый ключ, сохраненные ранее этим ключом файлы не будут доступны для просмотра. В меню Настроек вы всегда можете изменить опции безопасности.

AES (ADVANCED ENCRYPTION STANDARD)

Функция приложения реализует алгоритм шифрования для изображений, используя Advanced Encryption Standard (AES). Этот алгоритм применяет симметричный ключ и стандарт AES для обеспечения безопасности изображения в процессе передачи или хранения.

Общий процесс:

• Создание и извлечение мастер-ключа из приложения для использования в качестве основы для формирования ключа шифрования.

• Применение хеш-функции SHA к мастер-ключу для получения фиксированной длины ключа.

• Инициализация объекта шифра с использованием алгоритма AES с использованием полученного ключа.

• Шифрование данных из исходного потока при помощи AES.

• Запись зашифрованных данных в выходной файл.

• Закрытие потоков.

SHA (Secure Hash Algorithm)

Хеш-функция обладает следующими ключевыми характеристиками:

• Длина хеша. SHA производит хеш-значение фиксированной длины (длина хеш-значения не раскрывается из соображений безопасности).

• Устойчивость к коллизиям. SHA обеспечивает высокий уровень устойчивости к коллизиям, предотвращая появление одинаковых хеш-значений для различных входных сообщений. Теоретически возможны коллизии для SHA, но их появление требует огромного объема вычислительных ресурсов.

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

в приложении есть паскалка с котиками)

Android

857 постов7.6K подписчиков

Правила сообщества

Сообщество посвящено обсуждению и обмену опытом использования устройств, работающих под управлением ОС Android/Linux, а также программного обеспечения для них. Обсуждение других операционных систем (в том числе GNU/Linux) - только в рамках их взаимодействия с Android.


В сообществе запрещены:

* заведомо деструктивные рекомендации

* бессодержательная переписка, особенно с переходом на личности собеседников

* обсуждение нужности рутового доступа (он нужен, и если у вас его нет - мы вам искренне посочувствуем, но искать другие способы решения вашей проблемы не будем)

* обсуждение нужности ПО от Google (необходимости в нем нет, и если вам этот функционал не нужен - смело запускайте pm disable-user или даже pm uninstall, только не забудьте предварительно сделать полную резервную копию)


Если вы просите о помощи, обязательно укажите максимально полную информацию об используемом вами устройстве, чего вы хотите добиться и какие шаги для этого предпринимали - это существенно ускорит получение ответа, так как из обсуждения будут исключены диалоги вида "попробуй вот так - пробовал, не помогает". Соответственно, и при ответе следует давать рекомендации, подходящие для любого устройства. Если вы не уверены в универсальности решения, напишите об этом явно: "у меня %s и мне помогло %s".


Данная редакция правил действует с момента ее публикации: 2022-01-27 22:00:00 +03:00