🔒 Технический документ по локальному хранению и шифрованию Monica Android
Архитектура Zero-Knowledge
Monica Android использует многоуровневую архитектуру каскадного шифрования на уровне всего диска и отдельных полей базы данных для обеспечения абсолютной безопасности конфиденциальных активов пользователей (таких как пароли, номера кредитных карт, ключи 2FA, защищенные заметки и т. д.) во время локального хранения и процедур резервного копирования WebDAV. Ядро системы строго соответствует концепции Архитектуры Zero-Knowledge (Нулевого разглашения): даже если устройство будет утеряно или файлы базы данных будут извлечены, злоумышленник не сможет восстановить какие-либо открытые данные без Мастер-пароля пользователя.
1. Локальное хранение данных
Monica отказывается от хранения данных в открытом виде в SQLite или от использования ненадежных конфигураций ключ-значение, полностью перенимая рекомендованные Google архитектурные практики Modern Android Development (MAD) для управления структурированными данными:
- Основной уровень сохраняемости: Реализован с помощью библиотеки
Room Persistence Library(продвинутый уровень абстракции над SQLite) для поддержания высокосвязных объектов доступа к данным (DAO). - Физическая инфраструктура файлов: Данные записываются непосредственно в изолированный песочницей файл
password_database.dbи связанные с ним WAL-файлы (Write-Ahead Logging). - Граница физической изоляции Изоляция: База данных хранится исключительно по внутреннему системному пути приложения (
/data/data/com.joyinjoester.monica/databases/), защищенному UID-изоляцией на уровне ядра Linux в ОС Android. Доступ к этой директории сторонним приложениям без Root-привилегий строго заблокирован.
2. Механизм деривации ключей верхнего уровня (KDF)
Для предотвращения компрометации локальных данных в результате атак методом перебора (брутфорса) или по радужным таблицам при утечке файлов базы данных, Monica использует строгий стандарт криптографической деривации ключей:
[ Мастер-пароль пользователя ] ➔ Ввод в рантайме
⬇
[ Функция деривации PBKDF2 ] 🔀 Инъекция высокоэнтропийной соли (Salt)
⬇
[ 100 000 итераций хэширования HMAC-SHA256 ] ➔ Выравнивание вычислительной сложности
⬇
[ Сгенерированный промежуточный ключ растяжения ] ➔ 256-битный симметричный ключ- Динамическая соль: При первой инициализации хранилища генератор случайных чисел криптографического уровня (
SecureRandom) создает уникальную 128-битную соль. Эта соль сохраняется в открытом виде в системных настройках, гарантируя, что одинаковые Мастер-пароли на разных устройствах породят совершенно разные итоговые ключи. - Растяжение ключа: Алгоритм
PBKDF2выполняет 100 000 итераций хэширования с использованиемHMAC-SHA256, искусственно увеличивая вычислительные затраты на генерацию одного ключа. Это делает попытки подбора пароля на специализированном оборудовании (GPU/ASIC) экономически неэффективными.
3. Аппаратная защита ключей и рантайма
Деривированный 256-битный ключ не используется напрямую для шифрования базы данных. Вместо этого Monica внедряет схему двухслойного конвертного шифрования (Envelope Encryption), опирающуюся на аппаратную архитектуру безопасности Android:
[ Системный Android KeyStore ] ➔ Изоляция внутри среды TEE / SE
⬇ Нативная генерация
[ Аппаратный ключ шифрования ключей (KEK) ]
⬇ Защита на уровне рантайма
[ Зашифрованный локальный ключ данных (DEK) ] ➔ Шифрует реальные поля базы данныхХранилище Android KeyStore
Monica генерирует уникальный ключ шифрования ключей (KEK) непосредственно внутри Android KeyStore. Этот ключ аппаратно изолирован в доверенной среде выполнения (TEE — Trusted Execution Environment) или на выделенном чипе безопасности (SE — Secure Element, таком как чипы Titan на устройствах Pixel).
- Операционная система Android и прикладной код Monica могут отправлять данные в KeyStore для выполнения криптографических операций, но сам KEK никогда не может быть извлечен в память рантайма в открытом виде.
- Доступ к операциям KeyStore дополнительно защищен системными компонентами
EncryptedSharedPreferencesи аутентификациейBiometricPrompt(сканером отпечатков пальцев).
Конвертное шифрования полей (Field-Level Encryption)
Реальный ключ шифрования данных (DEK), используемый для обработки информации в базе данных, упакован с помощью KEK. При чтении или записи данных приложение отправляет зашифрованный DEK в KeyStore, получает расшифрованную копию в защищенную область памяти рантайма для проведения быстрых потоковых операций AES-256-GCM, а затем немедленно очищает массивы байтов памяти для предотвращения атак со сбросом дампов памяти.
4. Спецификация облачного зашифрованного транспортного конвейера
При запуске пользователем резервного копирования в облако WebDAV, система активирует изолированный конвейер шифрования пакетов под названием MONICA_ENC_V1 для предотвращения компрометации данных провайдерами облачных услуг.
[ Конвейер упаковки резервных копий ]
[ Основные JSON-пакеты песочницы ]
⬇
[ Упаковка в стандартный бинарный поток ZIP ]
⬇
[ Запрос пароля бэкапа ] ➔ [ Деривация ключа через PBKDF2 (100k итераций) ]
⬇
[ Инъекция усиленного шифрования AES-256-GCM ]
⬇
[ Добавление магического заголовка MONICA_ENC_V1 ] ➔ Создание файла .enc.zip ➔ Загрузка по WebDAV- Защита от воспроизведения и декорреляция: Каждый экземпляр резервной копии независимо генерирует высокоэнтропийные соли и уникальные векторы инициализации (IV). Даже если содержимое бэкапов идентично, бинарные структуры результирующих архивов
.enc.zipв облаке будут полностью отличаться, что исключает возможность профилирования пользовательских данных провайдерами облака по размеру цифрового отпечатка файла.
5. Сводная матрица криптографической безопасности
| Уровень безопасности | Техническая реализация | Целевые векторы угроз |
|---|---|---|
| Локальное хранение данных | AES-256-GCM (256-бит) | Атаки с извлечением базы данных, физическое изменение бит на диске, сайдчейн-инъекции |
| Защита Мастер-пароля | PBKDF2 + HMAC-SHA256 (100 000 итераций) | Оффлайн-перебор (брутфорс), совпадение по радужным таблицам, распыление словарей |
| Защита ключей в рантайме | Android KeyStore (Границы TEE/SE) | Дампы памяти, обход границ файлов с Root-привилегиями, физическое снятие слоев чипа |
| Облачный транспорт данных | Бинарное потоковое шифрование MONICA_ENC_V1 | Скомпрометированные серверы WebDAV, атаки «человек посередине» (MITM), утечки данных из облачных хранилищ |
