УДК 004.056

Использование встраиваемых виртуальных файловых систем при разработке защищенных приложений

Шашин Михаил Антонович – студент Санкт-Петербургского государственного университета телекоммуникаций имени профессора М. А. Бонч‑Бруевича.

Аннотация: Данная статья посвящена технологии встраиваемых виртуальных файловых систем и ее использованию в безопасной разработке приложений. В статье рассматриваются особенности этой технологии, а также примеры ее применения в различных приложениях. Данная статья будет полезна разработчикам, которые заинтересованным разработке безопасных приложений.

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

Введение

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

Встраиваемые файловые системы – это файловые системы, которые используются во встраиваемых системах, таких как мобильные устройства, автомобильные системы, медицинские приборы и т.д. Они отличаются от файловых систем, используемых на персональных компьютерах, тем, что они обычно имеют ограниченные ресурсы, такие как память и процессор, и могут быть оптимизированы для работы с ними.

Встраиваемые файловые системы могут быть различных типов, включая JFFS2, YAFFS, UBIFS и другие. Они могут использоваться для хранения данных, таких как настройки, журналы, медиафайлы и т.д.

Файловые системы могут быть различных типов, включая NTFS, FAT32, exFAT и другие. Конкретная файловая система определяет размер имен файлов, максимальный возможный размер файла и раздела, набор атрибутов файла.

Некоторые файловые системы предоставляют сервисные возможности, например, разграничение доступа или шифрование файлов. Эти данные она получает от драйвера файловой системы. Именно файловая система устанавливает, где и как будет записан файл на физическом носителе (например, жёстком диске). Для организации информации, кроме имени файла, используются также каталоги (или папки), как некая абстракция, позволяющая группировать файлы по определённому критерию.

В данной статье мы рассмотрим встраиваемую виртуальную файловую систему ZboxFS.

ZboxFS – это файловая система, позволяющая приложениям хранить данные безопасно, надежно и конфиденциально. Она поддерживает различные типы хранилищ, включая память, файловую систему операционной системы, RDBMS и хранилище объектов ключ-значение. Данные файлов упаковываются и шифруются перед записью в хранилище, и хранилище не имеет никаких знаний о данных файла. Она также имеет упрощенную файловую систему, которая специально разработана для безопасного хранения данных. Файловая система использует "Fnode" для описания объекта файла и каталога, который содержит метаданные файла и ссылки на различные версии содержимого в хранилище. Она также поддерживает управление транзакциями, которое тесно работает с журналированием операций записи (WAL). ZboxFS не поддерживает механизмы, которые могут обеспечить общий доступ к нескольким процессам, такие как mount/FUSE. Она предоставляет доступ только одному процессу за раз. Данная файловая система используется для хранения файлов приложений, которые требуют высокой конфиденциальности и безопасности.

ZboxFS работает в самом приложении и использует различные базовые хранилища, предоставляя зашифрованную виртуальную файловую систему для него.

Многие файловые системы на уровне ОС поддерживают шифрование, например EncFS, APFS и ZFS. Некоторые средства шифрования дисков также предоставляют виртуальную файловую систему, например TrueCrypt, LUKS и VeraCrypt.

1

Рисунок 1. Отличия ZboxFS от других файловых систем и инструментов шифрования.

Архитектура файловой системы и принцип работы

2

Рисунок 2. Архитектура файловой системы.

Приложение запускает виртуальную файловую систему ZboxFS в том же пространстве памяти, что и ваше приложение. Она инкапсулирует данные в защищенный репозиторий Repo и предоставляет приложению API файловой системы.

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

Абстрагируясь от доступа к IO, ZboxFS поддерживает различные базовые хранилища, включая память, файл ОС, РСУБД и хранилище объектов с ключевыми значениями.

Для повышения производительности ввода-вывода используется локальный кэш, который также ничего не знает о данных приложения. Он также может использовать различные хранилища, такие как память, IndexedDB или локальные файлы [2, 3].

Пример кода, реализующего базовый функционал ZboxFS:

extern crate zbox;

use zbox::{init_env, RepoOpener};

fn main() {

// инициализация среды zbox

init_env();

// создание и открытие репозитория

let mut repo = RepoOpener::new()

.create(true)

.open("[your_repo_uri]", "secret password")

.unwrap();

// получения метаданных репозитория

let info = repo.info().unwrap();

println!("{:?}", info);

// создание тестового файла и директории

repo.create_file("/file").unwrap();

repo.create_dir("/dir").unwrap();

// проверка существования пути

let result = repo.path_exists("/dir").unwrap();

println!("{}", result);

// получение метаданных пути

let metadata = repo.metadata("/dir").unwrap();

println!("{:?}", metadata);

// копирование файла

repo.copy("/file", "/file_copy").unwrap();

// переименование файла

repo.rename("/file", "/file_new").unwrap();

// удаление тестового файла и директории

repo.remove_file("/file_new").unwrap();

repo.remove_file("/file_copy").unwrap();

repo.remove_dir("/dir").unwrap();

}

Преимущества ZboxFS

  • Все данные шифруются локально, включая метаданные и структуру каталогов, поэтому утечка информации в базовое хранилище невозможна.
  • Используются самые передовые алгоритмы шифрования: AES-256-GCM (аппаратный), XChaCha20-Poly1305, хеширование паролей Argon2 и т.д., на базе libsodium.
  • Поддержка различных хранилищ, включая память, файловую систему ОС, РСУБД, хранилище объектов-ключей и др.
  • Файлы и каталоги упаковываются в блоки одинакового размера для исключения утечки метаданных.
  • Дедупликация фрагментов данных на основе содержимого и дедупликация на основе файлов.
  • Сжатие данных с использованием LZ4 в быстром режиме, опционально версионирование содержимого файлов.
  • Транзакционные операции ACID.
  • Простой в использовании POSIX-подобный API файловой системы
  • Кроссплатформенность, поддержка 64-разрядных ОС Linux, MacOS и Windows
  • Многочисленные привязки к языкам программирования, C/C++, Rust, Node.js и Java, в ближайшее время появятся новые версии.

Список литературы

  1. Казанцев А. А. и др. Создание и управление Security Operations Center для эффективного применения в реальных условиях // Актуальные проблемы инфотелекоммуникаций в науке и образовании (АПИНО 2019). – 2019. – С. 590-595.
  2. Сахаров Д. В. и др. Использование математических методов прогнозирования для оценки нагрузки на вычислительную мощность IOT-сети // Научно-аналитический журнал «Вестник Санкт-Петербургского университета Государственной противопожарной службы МЧС России». – 2020. – №. 2. – С. 86-94.
  3. Гельфанд А. М., Гвоздев Ю. В., Штеренберг С. И. Исследования недостатков языков высокоуровнего программирования для осуществления скрытого вложения в исполнимые файлы // Актуальные проблемы инфотелекоммуникаций в науке и образовании. – 2015. – С. 295-297.
  4. Шемякин С. Н. и др. Теоретическая оценка использования математических методов прогнозирования загрузки виртуальной инфраструктуры // Наукоемкие технологии в космических исследованиях Земли. – 2021. – Т. 13. – №. 4. – С. 66-75.
  5. Гельфанд А. М. и др. Интернет вещей (IoT): угрозы безопасности и конфиденциальности // Актуальные проблемы инфотелекоммуникаций в науке и образовании (АПИНО 2021). – 2021. – С. 215-220.

Интересная статья? Поделись ей с другими: