Пример Separate Storage
Пример 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
.
Файлы примера
Код примера и скрипты для сборки находятся по следующему пути:
Сборка и запуск примера
Чтобы запустить пример на QEMU, перейдите в директорию с примером, соберите пример и выполните следующие команды:
Также см. "Сборка и запуск примеров".
Подготовка SD-карты для запуска на Raspberry Pi 4 B
Для запуска примера Separate Storage
на Raspberry Pi 4 B необходимы следующие дополнительные действия:
- создать директорию
/lib
на загрузочном разделе SD-карты, если этой директории не существует; - скопировать в директорию
/lib
на SD-карте содержимое директорииbuild/hdd/part1/lib
, которая генерируется во время сборки примера; - SD-карта, помимо загрузочного раздела с образом решения, должна также содержать 2 дополнительных раздела с файловой системой
ext2
илиext3
; - первый дополнительный раздел должен содержать файл
userlist.txt
из директории./resources/files/
; - второй дополнительный раздел должен содержать файл
certificate.cer
из директории./resources/files/
.
Для запуска примера Separate Storage
на Raspberry Pi 4 B можно использовать SD-карту, подготовленную для запуска примера vfs_extfs
на Raspberry Pi 4 B, скопировав файлы userlist.txt
и certificate.cer
на соответствующие разделы.