УДК 004.056
Использование встраиваемых виртуальных файловых систем при разработке защищенных приложений
Шашин Михаил Антонович – студент Санкт-Петербургского государственного университета телекоммуникаций имени профессора М. А. Бонч‑Бруевича.
Аннотация: Данная статья посвящена технологии встраиваемых виртуальных файловых систем и ее использованию в безопасной разработке приложений. В статье рассматриваются особенности этой технологии, а также примеры ее применения в различных приложениях. Данная статья будет полезна разработчикам, которые заинтересованным разработке безопасных приложений.
Ключевые слова: встраиваемые виртуальные файловые системы, безопасность, изоляция процессов, безопасные методы программирования, шифрование.
Введение
В настоящее время безопасность является одним из наиболее важных аспектов разработки программного обеспечения. В связи с этим, разработчики исследуют новые методы и технологии, которые могут помочь им создавать безопасные приложения. Одной из таких технологий является использование встраиваемых виртуальных файловых систем. Эта технология позволяет приложениям хранить файлы безопасно, надежно и конфиденциально. В этой статье мы рассмотрим, что такое встраиваемые виртуальные файловые системы и как они могут помочь в создании безопасных приложений. Важным аспектом безопасности является изоляция процессов, которая может быть достигнута с помощью виртуальных файловых систем. Изоляция процессов позволяет предотвратить несанкционированный доступ к данным и повысить безопасность приложения в целом.
Встраиваемые файловые системы – это файловые системы, которые используются во встраиваемых системах, таких как мобильные устройства, автомобильные системы, медицинские приборы и т.д. Они отличаются от файловых систем, используемых на персональных компьютерах, тем, что они обычно имеют ограниченные ресурсы, такие как память и процессор, и могут быть оптимизированы для работы с ними.
Встраиваемые файловые системы могут быть различных типов, включая JFFS2, YAFFS, UBIFS и другие. Они могут использоваться для хранения данных, таких как настройки, журналы, медиафайлы и т.д.
Файловые системы могут быть различных типов, включая NTFS, FAT32, exFAT и другие. Конкретная файловая система определяет размер имен файлов, максимальный возможный размер файла и раздела, набор атрибутов файла.
Некоторые файловые системы предоставляют сервисные возможности, например, разграничение доступа или шифрование файлов. Эти данные она получает от драйвера файловой системы. Именно файловая система устанавливает, где и как будет записан файл на физическом носителе (например, жёстком диске). Для организации информации, кроме имени файла, используются также каталоги (или папки), как некая абстракция, позволяющая группировать файлы по определённому критерию.
В данной статье мы рассмотрим встраиваемую виртуальную файловую систему ZboxFS.
ZboxFS – это файловая система, позволяющая приложениям хранить данные безопасно, надежно и конфиденциально. Она поддерживает различные типы хранилищ, включая память, файловую систему операционной системы, RDBMS и хранилище объектов ключ-значение. Данные файлов упаковываются и шифруются перед записью в хранилище, и хранилище не имеет никаких знаний о данных файла. Она также имеет упрощенную файловую систему, которая специально разработана для безопасного хранения данных. Файловая система использует "Fnode" для описания объекта файла и каталога, который содержит метаданные файла и ссылки на различные версии содержимого в хранилище. Она также поддерживает управление транзакциями, которое тесно работает с журналированием операций записи (WAL). ZboxFS не поддерживает механизмы, которые могут обеспечить общий доступ к нескольким процессам, такие как mount/FUSE. Она предоставляет доступ только одному процессу за раз. Данная файловая система используется для хранения файлов приложений, которые требуют высокой конфиденциальности и безопасности.
ZboxFS работает в самом приложении и использует различные базовые хранилища, предоставляя зашифрованную виртуальную файловую систему для него.
Многие файловые системы на уровне ОС поддерживают шифрование, например EncFS, APFS и ZFS. Некоторые средства шифрования дисков также предоставляют виртуальную файловую систему, например TrueCrypt, LUKS и VeraCrypt.
Рисунок 1. Отличия ZboxFS от других файловых систем и инструментов шифрования.
Архитектура файловой системы и принцип работы
Рисунок 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, в ближайшее время появятся новые версии.
Список литературы
- Казанцев А. А. и др. Создание и управление Security Operations Center для эффективного применения в реальных условиях // Актуальные проблемы инфотелекоммуникаций в науке и образовании (АПИНО 2019). – 2019. – С. 590-595.
- Сахаров Д. В. и др. Использование математических методов прогнозирования для оценки нагрузки на вычислительную мощность IOT-сети // Научно-аналитический журнал «Вестник Санкт-Петербургского университета Государственной противопожарной службы МЧС России». – 2020. – №. 2. – С. 86-94.
- Гельфанд А. М., Гвоздев Ю. В., Штеренберг С. И. Исследования недостатков языков высокоуровнего программирования для осуществления скрытого вложения в исполнимые файлы // Актуальные проблемы инфотелекоммуникаций в науке и образовании. – 2015. – С. 295-297.
- Шемякин С. Н. и др. Теоретическая оценка использования математических методов прогнозирования загрузки виртуальной инфраструктуры // Наукоемкие технологии в космических исследованиях Земли. – 2021. – Т. 13. – №. 4. – С. 66-75.
- Гельфанд А. М. и др. Интернет вещей (IoT): угрозы безопасности и конфиденциальности // Актуальные проблемы инфотелекоммуникаций в науке и образовании (АПИНО 2021). – 2021. – С. 215-220.