Развернутая постановка задач

Распределение задач

Агабабян – идентификация, редактирование профилей пользователей администратором
Бабаков – редактор секретных файлов
Баранов – центральное окно, контроль целостности
Березин – проверка действия на санкционированность
Гайнулин – центральное окно, контроль целостности
Мокроусов – интерфейс криптографической подсистемы, центральное окно
Тихонов – общая архитектура, центральное окно, соединительные работы
Ядгаров – контроль целостности, просмотр лога + вся работа в самом конце

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

Все файла описаны в незашифрованном виде. Описание идет по строкам файла с указанием типов величин.

1 – Файл с защищаемыми ресурсами – res.res
Disc_n (int) – количество защищаемых дисков
C:
D:
……..
Folder_n (int) – количество защищаемых каталогов
…………перечисление по одному в строке без слеша в конце
File_n (int) – количество защищаемых секретных файлов
…………….перечисление по одному в строке с указанием расширения + гриф секретности(int)
Prog_n (int) – количество защищаемых программ
…………….перечисление по одной в строке с указанием расширения

2 – Файл с паролем админа – pas.ad
Admin_pas (String)

3 – Файл с паспортом пользователя – имя_пользователя.us
id (int) - идентификатор
pas (String) - пароль
group_id (int) – номер группы
secret_level (int) – степень доступа (гриф секретности)
new_file_access (int) – метка доступа пользователей других групп
к новым созданным файлам – 0-нет, 1-чтение, 2-чтение и запись
new_folder_access (int) – к каталогом – 0-доступа нет, 1-есть
disc_n (int) – количество разрешенных дисков
……….
folder_n (int) – количество разрешенных каталогов
……….
file_n (int) – количество разрешенных файлов
……….
prog_n (int) – количество разрешенных программ
……….

 

Развернутая постановка задач

Общее – все ваши классы должны содержать сигнал log(QString), который отсылается всякий раз, когда на ваш взгляд надо что-то запротоколировать. С его помощью затем мы построим протоколирование. Для использования функций криптографии подключить заголовочный модуль crypt.h и использовать соответствующие функции – QString hashPas( QString pas ) – получение хеш функции от пароля, QString crypt( QString str ) – шифрование строки, QString decrypt( QString str ) – дешифрование строки.

Агабабян – идентификация, редактирование профилей пользователей администратором

Класс User, позволяющий получить информацию о пользователе из файла в внутреннее представление. Содержит открытые поля, соответствующие полям в паспорте пользователя и метод loadFromFile( QString path ), позволяющий загрузить поля объекта класса из файла с паспортом пользователя, путь - локальный.

1- Окно запроса логина и пароля – класс Ident – проверка пары логин-пароль, в случае успеха - генерация сигнала login(QString), передающего имя вошедшего пользователя.

2- Окно редактирования пользователей – класс EditUsers – на основании имеющихся паспортов пользователей их отображение в виде списка. Возможность добавить/изменить/удалить пользователя. При удалении его паспорт также удаляется.

3- Окно редактирования паспорта пользователя – класс EditUser – на основании выбранного пользователя загрузить его паспорт и предоставить возможность для его интерактивного редактирования. Предусмотреть кнопку сохранить изменения и закрытия окна без изменений.

Бабаков – редактор секретных файлов

Единственное окно – TextEdit – открытие, создание, редактирование, сохранение секретных файлов.
Должен содержать public методы openFile(QString полное_имя_файла, int права_доступа), newFile(QString имя_каталога), setUserName( QString name ) и newSession().
Также при создании и сохранении новых файлов должен вносить этот файл в файл с защищаемыми ресурсами и в файлы всех пользователей, имеющих ту же группу, что и работающий на данный момент пользователь, при этом гарантируется, что имя текущего пользователя будет передано заранее.
При открытии файла необходимо расшифровывать его содержимое, а при сохранении шифровать текст и затем производить запись на диск.
Хорошо было бы решить проблему, чтобы пользователь мог сохранить файл во все разрешенные ему места, но при этом не давать ему гулять по защищенным каталогам, к которым у него нет доступа, если нет – придумать альтернативное разрешение ситуации.
Должен учитывать максимальный гриф секретности, используемый в данной сессии и присваивать его вновь сохраненным файлам. Гриф секретности обнуляется в методе newSession().

Березин – определение типа объекта файловой системы, проверка действия на санкционированность

1 - public метод главного окна int typeFS( QString path ) – возвращает 1 если по данному пути находится папка, 2 если секретный файл, 3 если программа, 0 если диск, -1 если что-либо другое.

2 - public метод главного окна – bool isLegal( QString path, ActionFS action ), которые определяет, возможно ли выполнять данное действие с файлом/каталогом, находящимся по данному пути.
action принадлежит введенному перечислению ActionFS = { delFile, delFolder, openFolder, readFile, writeFile, runProg }

Мокроусов – интерфейс криптографической подсистемы
Оформление файлов crypt.h и crypt.cpp содержащих реализацию использования функций, предоставленных группой разработчиков криптомодуля.

Основное окно – Баранов, Гайнулин, Мокроусов, Тихонов - задачи
Обработка пользовательского интерфейса главного окна – в основном надо обработать события генериуемые файловым менеджером + нажатия на кнопки пункты меню.
Логин-логаут пользователя, загрузка объекта User user по его имени.
Запуск подсистем.
Всякое разное, что я сейчас не могу определить.

Остальные задачи – после выполнения текущих поставленных.