Пример Separate Storage демонстрирует использование паттерна Distrustful Decomposition для решения задачи раздельного хранения данных для доверенных и недоверенных приложений.
Архитектура примера
Пример Separate Storage содержит две пользовательские программы: UserManager и CertificateManager.
Эти программы работают с данными, которые размещаются в соответствующих файлах:
UserManager работает с данными из файла userlist.txt;CertificateManager работает с данными из файла certificate.cer.Каждая из этих программ использует собственный экземпляр программы VFS для доступа к отдельной файловой системе. При этом каждая программа VFS включает в себя драйвер блочного устройства, связанный с отдельным логическим разделом диска. Программа UserManager не имеет доступа к файловой системе программы CertificateManager и наоборот.

Такая архитектура гарантирует, что в случае атаки или ошибки в любой из программ UserManager и CertificateManager, эта программа не сможет получить доступ к файлу, который не предназначен для выполнения ее работы.
Политика безопасности в примере Separate Storage имеет следующие особенности:
UserManager имеет доступ к файловой системе только через программу VfsUser.CertificateManager имеет доступ к файловой системе через только через программу VfsCertificate.Файлы примера
Код примера и скрипты для сборки находятся по следующему пути:
/opt/KasperskyOS-Community-Edition-<platform>-<version>/examples/separate_storage
Сборка и запуск примера
Чтобы запустить пример на QEMU, перейдите в директорию с примером, соберите пример и выполните следующую команду:
$ qemu-system-aarch64 -m 2048 -machine vexpress-a15,secure=on -cpu cortex-a57 -nographic -monitor none -smp 4 -nic user -serial stdio -sd build/einit/sdcard0.img -kernel build/einit/kos-qemu-image
Также см. "Сборка и запуск примеров".
Подготовка SD-карты для запуска на аппаратных платформах
Для запуска примера Separate Storage на аппаратных платформах необходимы следующие дополнительные действия:
/lib на загрузочном разделе SD-карты, если этой директории не существует. Скопировать в директорию /lib на SD-карте содержимое директории build/hdd/part1/lib, которая генерируется во время сборки примера. (Если образ загрузочной SD-карты создается с использованием функции build_sd_image(), то эти действия выполнять не требуется.)ext2 или ext3.userlist.txt из директории ./resources/files/.certificate.cer из директории ./resources/files/.Для запуска примера Separate Storage на аппаратных платформах можно использовать SD-карту, подготовленную для запуска примера vfs_extfs, скопировав файлы userlist.txt и certificate.cer на соответствующие разделы.