From 7bb62d0152e7e8a43b587d0e0e97cecdd8113abd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9F=D1=8B=D1=82=D0=BA=D0=BE=D0=B2=20=D0=A0=D0=BE=D0=BC?= =?UTF-8?q?=D0=B0=D0=BD?= Date: Sat, 30 May 2026 18:17:04 +0300 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D1=8B=20=D0=BA=D0=BD=D0=B8=D0=B3=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Report/includes/ch01.typ | 4 +-- Report/includes/ch02.typ | 2 +- Report/includes/ch03.typ | 2 +- Report/includes/ch04.typ | 2 +- Report/includes/intro.typ | 4 +-- Report/references.bib | 68 +++++++++++++++++++++++++++++++++++---- 6 files changed, 69 insertions(+), 13 deletions(-) diff --git a/Report/includes/ch01.typ b/Report/includes/ch01.typ index 71fe50a..8973f67 100644 --- a/Report/includes/ch01.typ +++ b/Report/includes/ch01.typ @@ -104,7 +104,7 @@ Google Files Secure Folder локально прячет и защищает ф == Стек технологий -Для реализации выбраны Kotlin, Android SDK, Jetpack Compose, Coroutines/Flow, Hilt, Room, AES на клиенте; модульная структура: `:app`, `:domain`, `:usecases`, `:ui`, `:domain-vault`, `:infrastructure-android`, `:vault-contracts`, `:task-runtime` @kotlin-docs @compose-docs @room-docs @hilt-docs @android-arch. +Для реализации выбраны Kotlin, Android SDK, Jetpack Compose, Coroutines/Flow, Hilt, Room, AES на клиенте; модульная структура: `:app`, `:domain`, `:usecases`, `:ui`, `:domain-vault`, `:infrastructure-android`, `:vault-contracts`, `:task-runtime` @kotlin-docs @smith-jetpack-compose @room-docs @hilt-docs @android-arch. *Kotlin* обеспечивает выразительную доменную модель и безопасность типов. *Jetpack Compose* декларативно описывает UI и состояние экранов vault. *Coroutines/Flow* используются для асинхронного шифрования, обращения к DAO и отображения прогресса без блокировки главного потока. *Hilt* связывает реализации интерфейсов domain с Android-инфраструктурой. *Room* персистентно хранит метаданные. Криптографические операции выполняются в доменном слое с опорой на стандартные API Java/Android и рекомендации NIST по AES @nist-aes. @@ -114,7 +114,7 @@ Google Files Secure Folder локально прячет и защищает ф === Клиентское шифрование и модель zero-knowledge -Данные шифруются до отправки во внешнее хранилище; провайдер не получает ключ расшифрования. Используется AES @nist-aes; проверка ключа выполняется через `Encryptor.checkKey` без расшифровки всего содержимого. +Данные шифруются до отправки во внешнее хранилище; провайдер не получает ключ расшифрования. Модель угроз мобильной платформы и практики защиты приложений рассмотрены в @zobnin-android-security. Используется AES @nist-aes @losev-crypto; проверка ключа выполняется через `Encryptor.checkKey` без расшифровки всего содержимого. === Авторизация и взаимодействие с внешними провайдерами без собственного сервера diff --git a/Report/includes/ch02.typ b/Report/includes/ch02.typ index 9fb0ed5..dd4eebe 100644 --- a/Report/includes/ch02.typ +++ b/Report/includes/ch02.typ @@ -62,7 +62,7 @@ DFD уровня 0 (рис. @fig-16) отражает потоки между UI #pz-fig("fig_18_deployment.png", [Диаграмма развёртывания], "fig-18") -Архитектурные слои MVVM + Clean Architecture и соответствие модулям Gradle – на рисунке @fig-19. +Архитектурные слои MVVM + Clean Architecture @martin-clean-architecture и соответствие модулям Gradle – на рисунке @fig-19. #pz-fig("fig_19_clean_architecture.png", [Слои Clean Architecture и модули проекта], "fig-19") diff --git a/Report/includes/ch03.typ b/Report/includes/ch03.typ index d0ec0e0..a326f09 100644 --- a/Report/includes/ch03.typ +++ b/Report/includes/ch03.typ @@ -54,7 +54,7 @@ CJM сценария «защитить и открыть storage» предст == Проработка прототипа и особенности дизайна -Интерфейс реализован на Jetpack Compose @compose-docs. Экраны локальных и удалённых vault, диалоги шифрования, OAuth, а также разделы текстовых секретов и 2FA внутри storage показаны на рис. @fig-05–@fig-10 и @fig-33–@fig-34 (подробно – приложение В и руководство пользователя в приложении Б). +Интерфейс реализован на Jetpack Compose @smith-jetpack-compose @compose-docs. Экраны локальных и удалённых vault, диалоги шифрования, OAuth, а также разделы текстовых секретов и 2FA внутри storage показаны на рис. @fig-05–@fig-10 и @fig-33–@fig-34 (подробно – приложение В и руководство пользователя в приложении Б). #pz-fig("fig_05_local_vaults.jpg", [Список storage в локальном vault (экран «локальные vault»)], "fig-05") #pz-fig("fig_06_encrypt_dialog.jpg", [Диалог включения шифрования], "fig-06") diff --git a/Report/includes/ch04.typ b/Report/includes/ch04.typ index 612b9c7..dcfec24 100644 --- a/Report/includes/ch04.typ +++ b/Report/includes/ch04.typ @@ -92,7 +92,7 @@ private fun findSourceStorage(..., winnerEntry: StorageSyncJournalEntry): IStora === Использование средств ИИ при разработке -Разработка Wallenc велась в два этапа. На первом этапе исполнитель самостоятельно спроектировал доменную модель (иерархия vault → storage → файлы, единый `VaultsManager`), навигацию между экранами, визуальный стиль UI на Jetpack Compose, границы Gradle-модулей и каркас use case-слоя. Криптографический контур (`Encryptor`, привязка ключей к storage), журнал синхронизации и сценарии OAuth проектировались и проверялись вручную. При проектировании модуля `:domain` была составлена диаграмма классов (рис. @fig-24), фиксирующая первоначальные интерфейсы и связи сущностей до этапа разработки с ИИ-ассистентом. +Разработка Wallenc велась в два этапа. На первом этапе исполнитель самостоятельно спроектировал доменную модель (иерархия vault → storage → файлы, единый `VaultsManager`), навигацию между экранами, визуальный стиль UI на Jetpack Compose @smith-jetpack-compose, границы Gradle-модулей и принципы сопровождаемого кода @martin-clean-code и каркас use case-слоя. Криптографический контур (`Encryptor`, привязка ключей к storage), журнал синхронизации и сценарии OAuth проектировались и проверялись вручную. При проектировании модуля `:domain` была составлена диаграмма классов (рис. @fig-24), фиксирующая первоначальные интерфейсы и связи сущностей до этапа разработки с ИИ-ассистентом. #pz-fig("fig_24_domain_class_manual.png", [Диаграмма классов модуля domain (самостоятельное проектирование)], "fig-24") diff --git a/Report/includes/intro.typ b/Report/includes/intro.typ index 4762d4d..4f95ae3 100644 --- a/Report/includes/intro.typ +++ b/Report/includes/intro.typ @@ -1,6 +1,6 @@ #heading(numbering: none, outlined: true)[Введение] -Современные пользователи хранят личные и рабочие данные в облачных сервисах и на съёмных носителях, однако инфраструктура провайдера не всегда может считаться доверенной. Утечки, компрометация учётных записей и юрисдикционные риски делают актуальным подход, при котором конфиденциальность обеспечивается на стороне клиента до размещения данных во внешнем хранилище @nist-aes @clean-arch. +Современные пользователи хранят личные и рабочие данные в облачных сервисах и на съёмных носителях, однако инфраструктура провайдера не всегда может считаться доверенной. Утечки, компрометация учётных записей и юрисдикционные риски делают актуальным подход, при котором конфиденциальность обеспечивается на стороне клиента до размещения данных во внешнем хранилище @nist-aes @martin-clean-architecture. *Актуальность* темы обусловлена распространением мобильных приложений для хранения файлов и секретов, а также ограниченностью готовых решений: многие продукты привязаны к собственному backend, закрытой экосистеме или узкой предметной области @google-secure-folder @bitwarden-help @cryptomator-docs. @@ -14,7 +14,7 @@ *Объект исследования* – методы и средства клиентской защиты данных в мобильных приложениях. *Предмет исследования* – проектные и программные решения приложения Wallenc. -*Методы исследования*: анализ нормативной и технической документации, сравнительный анализ программных аналогов, объектно-ориентированное проектирование (UML, BPMN, DFD), прототипирование пользовательского интерфейса, программная реализация и тестирование @gost7322017 @kotlin-docs. +*Методы исследования*: анализ нормативной и технической документации, сравнительный анализ программных аналогов, объектно-ориентированное проектирование (UML, BPMN, DFD), прототипирование пользовательского интерфейса, программная реализация и тестирование @gost7322017 @martin-clean-code @kotlin-docs. *Практическая база.* Работа выполнена в рамках производственной практики в ООО НМФ «Нейротех» (09.02.2026–06.05.2026) по направлению 09.03.04 «Программная инженерия» на кафедре математического обеспечения и применения ЭВМ (МОП ЭВМ). Научный руководитель – Беликов А. Н. (кафедра системного анализа и телекоммуникаций, САИТ); руководитель от организации – Алексеев Д. М. diff --git a/Report/references.bib b/Report/references.bib index 5096d37..e6feff3 100644 --- a/Report/references.bib +++ b/Report/references.bib @@ -1,5 +1,5 @@ @misc{gost7322017, - title = {ГОСТ 7.32—2017. Отчёт о научно-исследовательской работе. Структура и правила оформления}, + title = {ГОСТ 7.32–2017. Отчёт о научно-исследовательской работе. Структура и правила оформления}, year = {2017}, note = {Электронный ресурс: https://tsu.ru/upload/medialibrary/235/gost_7.32_2017.pdf}, } @@ -60,11 +60,67 @@ url = {https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.197.pdf}, } -@misc{clean-arch, - title = {The Clean Architecture}, - author = {Martin, R. C.}, - year = {2012}, - url = {https://blog.cleancoder.com/uncle-bob/2012/08/13/the-clean-architecture.html}, +@book{martin-clean-architecture, + author = {Мартин, Р. С.}, + title = {Чистая архитектура: искусство разработки программного обеспечения}, + publisher = {Питер}, + location = {Санкт-Петербург}, + year = {2018}, + isbn = {978-5-4461-0772-8}, + series = {Библиотека программиста}, + pagetotal = {352}, + langid = {russian}, + note = {Пер. с англ.: Clean Architecture: A Craftsman's Guide to Software Structure and Design}, +} + +@book{martin-clean-code, + author = {Мартин, Р. С.}, + title = {Чистый код: создание, анализ и рефакторинг}, + publisher = {Питер}, + location = {Санкт-Петербург}, + year = {2018}, + isbn = {978-5-4461-0960-9}, + series = {Библиотека программиста}, + pagetotal = {464}, + langid = {russian}, + note = {Пер. с англ.: Clean Code: A Handbook of Agile Software Craftsmanship}, +} + +@book{smith-jetpack-compose, + author = {Смит, Н.}, + title = {Основы {JetPack} {Compose}: разработка приложений для {Android} с помощью {Jetpack} {Compose}, {Android} {Studio} и {Kotlin}}, + publisher = {БХВ}, + location = {Санкт-Петербург}, + year = {2025}, + isbn = {978-601-12-3345-3}, + pagetotal = {688}, + langid = {russian}, + note = {Пер. с англ.: Jetpack Compose 1.6 Essentials}, +} + +@book{losev-crypto, + author = {Лось, А. Б. and Нестеренко, А. Ю. and Рожков, М. И.}, + title = {Криптографические методы защиты информации для изучающих компьютерную безопасность}, + publisher = {Юрайт}, + location = {Москва}, + year = {2026}, + isbn = {978-5-534-12474-3}, + edition = {2}, + pagetotal = {424}, + langid = {russian}, +} + +@book{zobnin-android-security, + author = {Зобнин, Е. Е.}, + title = {{Android} глазами хакера}, + publisher = {БХВ}, + location = {Санкт-Петербург}, + year = {2024}, + isbn = {978-5-9775-1797-3}, + edition = {2}, + pagetotal = {272}, + series = {Глазами хакера}, + langid = {russian}, } @misc{cryptomator-docs,