ТЕОРЕТИЧЕСКОЕ ВВЕДЕНИЕ
Целью лабораторной работы является разработать программу, управляющую уровнями секретности папок в файловой системе, и контролирующую информационные потоки между ними. Основные функции программы делятся на две части — работа с уровнями секретности и копирование файлов. Вышепоставленные цели должны быть выполнены при помощи алгоритма реализованного на любом доступном языке программирования.
Формулировка определений и их свойств
В данной лабораторной работе рассматривается модель прав доступа Белла-Лападулы.
МодельБелла-Лападулы— этомодель контроля иуправлениядоступом, основанная на мандатной модели управления доступом. В модели анализируются условия, при которых невозможно создание информационных потоков от субъектов с более высоким уровнем доступа к субъектам с более низким уровнем доступа.
Рисунок 1. Модель Белла-Лападулы
4
Описание программы
В качестве языка программирования был выбран язык «Java» поскольку имеются навыки создания приложений с пользовательским интерфейсом именно на этом языке программирования.
Класс Main.java
Данный класс отвечает за старт программы.
Класс Interface.java
Данный класс отвечает за отрисовку пользовательского интерфейса, расположение кнопок, обработчик нажатий кнопок.
Класс Backend.java
Данный класс отвечает за выполнение действий по нажатию кнопок – обработчик, а также содержит в себе дополнительные методы, необходимые для работы программы.
Поля:
•ArrayList<Secrecy> secrecies – объект класса Secrecy.java.
Уровни доступа.
•ArrayList<Folder> folders – объект класса Folder.java.
Содержит информацию о папках. Методы:
•createSecrecyHandler – отвечает за обработку введенных в
окно, созданного методом createSecrecy, данных. Добавляет их в поле secrecies. Записывает в файл обновленные значения.
•changeSecrecyHandler – отвечает за обработку введенных в
окно, созданного методом changeSecrecy, данных. Правильным образом меняет информацию в поле secrecies. Записывает в файл обновленные значения
•removeSecrecyHandler – отвечает за обработку введенных в
окно, созданного методом removeSecrecy, данных. Правильным образом удаляет уровень секретности; стоит отметить, что при удалении уровня
5
секретности, удаляются все папки с этим уровнем. Правильным образом добавляет информацию в поля secrecy, folders. Записывает в файл обновленные значения.
•createFolderHandler – отвечает за обработку введенных в
окно, созданного методом createFolder, данных. Добавляет их в поле folders. По умолчанию папке дается минимальный уровень секретности. Если уровней секретности нет – программа не даст создать папку. Записывает
вфайл обновленные значения.
•changeFolderHandler – отвечает за обработку введенных в
окно, созданного методом changeFolder, данных. Правильным образом меняет информацию в поле folders. Записывает в файл обновленные значения
•removeFolderHandler – отвечает за обработку введенных в
окно, созданного методом removeFolder, данных. Правильным образом удаляет папку. Записывает в файл обновленные значения.
•changeFolderLevelHandler – отвечает за правильное изменение уровня секретности из существующего набора для выбранной папки. Записывает обновленную информацию в файл
•createSecrecy – создает второе окно ввода нового уровня секретности.
•removeSecrecy – создает второе окно ввода уровня секретности, который подлежит удалению.
•changeSecrecy – создает второе окно ввода для изменения свойств уровня секретности, которые вводятся пользователем.
•createFolder – создает второе окно для ввода данных для создания новой папки
•changeFolder – создает второе окно ввода данных для изменения имени папки
6
•removeFolder – создает второе окно для ввода пути к папке, которая подлежит удалению
•changeFolderLevel – создает второе окно для ввода имени папки и
еенового уровня секретности.
•showInfo – создает второе окно, которое содержит в себе матрицу уровень-папка (абсолютный путь до нее)
•copyContents – метод, отвечающий за копирование папок и подпапок, а также их файлов в соответствии с моделью Белла-Лападулы. Стоит отметить, что сначала выбирается уровень, из которого идет копирование, а потом уже выбирается папка с данным уровнем, а затем выбирается папка, в которую уже возможно совершить копирование. Копирование в папку такого же уровня, но являющейся подпапкой папки с более высоким уровнем секретности – невозможно. Остальные ограничения обусловлены классической реализацией модели Белла-Лападула.
•deleteDirectory – вспомогательный метод, отвечающий за рекурсивное удаление папок.
•initialParse – вспомогательный метод, отвечающий за считывание матрицы уровней и папок. Запускается при первом запуске программы.
7
Класс FileWorker.java
Данный класс отвечает за вспомогательные чтение и запись из файлов согласно структуре файлов программы. Считывание и запись файлов матриц доступа.
Методы:
•writeSecrecy – метод отвечающий за запись обновленной информации о уровнях секретности в существующий файл, содержащий информацию о уровнях секретности.
•parseSecrecies – вспомогательный метод, отвечающий за считывание информации о уровнях секретности из файла. Необходим при первом запуске.
•writeFolder – метод отвечающий за запись обновленной информации о папках в существующий файл, содержащий информацию о папках.
•parseFolders – вспомогательный метод, отвечающий за считывание информации о папках из файла. Необходим при первом запуске.
8
Класс Secrecy.java
Данный класс отвечает за уровни секретности Поля:
•String name – название уровня секретности
•int level – уровень секретности
Методы:
•getName – возвращает имя
•getLevel – возвращает уровень
•setName – устанавливает имя
•setLevel – устанавливает уровень
Класс Folder.java
Данный класс отвечает за информацию о папках. Поля:
•String name – имя папки
•int secrecyLevel – уровень секретности папки
•String path – абсолютный путь до папки Методы:
•getName – возвращает имя папки
•getSecrecyLevel – возвращает уровень секретности папки
•getPath – возвращает абсолютный путь до папки
•setName – устанавливает имя папке
•setSecrecyLevel – устанавливает уровень секретности папке
9
