Skip to content

🔒 Технический документ по локальному хранению и шифрованию 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 использует строгий стандарт криптографической деривации ключей:

text
[ Мастер-пароль пользователя ] ➔ Ввод в рантайме

[ Функция деривации PBKDF2 ] 🔀 Инъекция высокоэнтропийной соли (Salt)

[ 100 000 итераций хэширования HMAC-SHA256 ] ➔ Выравнивание вычислительной сложности

[ Сгенерированный промежуточный ключ растяжения ] ➔ 256-битный симметричный ключ
  1. Динамическая соль: При первой инициализации хранилища генератор случайных чисел криптографического уровня (SecureRandom) создает уникальную 128-битную соль. Эта соль сохраняется в открытом виде в системных настройках, гарантируя, что одинаковые Мастер-пароли на разных устройствах породят совершенно разные итоговые ключи.
  2. Растяжение ключа: Алгоритм PBKDF2 выполняет 100 000 итераций хэширования с использованием HMAC-SHA256, искусственно увеличивая вычислительные затраты на генерацию одного ключа. Это делает попытки подбора пароля на специализированном оборудовании (GPU/ASIC) экономически неэффективными.

3. Аппаратная защита ключей и рантайма

Деривированный 256-битный ключ не используется напрямую для шифрования базы данных. Вместо этого Monica внедряет схему двухслойного конвертного шифрования (Envelope Encryption), опирающуюся на аппаратную архитектуру безопасности Android:

text
[ Системный 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 для предотвращения компрометации данных провайдерами облачных услуг.

text
[ Конвейер упаковки резервных копий ]
[ Основные 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), утечки данных из облачных хранилищ
最近更新