Среда функционирования
1.4.1 Для функционирования ПК «РСП-Контроль» необходимы следующие компоненты среды функционирования, которые входят в комплект поставки ПК «РСП-Контроль»:
Castor – фреймворк для работы с веб документами: castor-core-1.4.0.jar, castor-xml-1.4.0.jar;
Commons Lang – библиотека, предоставляющая дополнительные возможности для манипуляции стандартными java core классами — строками, числами, датами. Библиотека упрощает работу с рефлексией, помогает упростить реализацию методов equals и hashCode: commons-lang-2.6.jar;
Commons Logging – библиотека, предоставляющая программные интерфейсы для взаимодействия с различными средствами регистрации: commons-logging-1.2.jar;
jcalendar – компонент для выбора даты: jcalendar-1.3.2.jar;
junit – библиотека для тестирования: junit.jar.
2Функциональное назначение
2.1Классы решаемых задач и назначение программы
ПК «РСП-Контроль» создан для автоматизации, ускорения и снижения трудоемкости процесса сертификации программного обеспечения.
ПК имеет 4 режима работы:
режим работы с контрольными суммами;
режим построчного сравнения текстовых файлов;
режим сравнения бинарных модулей форматов PE и ELF;
режим проверки избыточности исходных текстов на уровне файлов.
2.1.1Режим работы с контрольными суммами
Фиксация и сравнение контрольных сумм являются стандартными процедурами для процесса сертификации ПО. ПК «РСП-Контроль» обеспечивает расчет контрольных сумм по трем алгоритмам хэширования: MD5, SHA-1, ГОСТ 34.11-94.
2.1.2Режим построчного сравнения текстовых файлов
Данный режим позволяет находить различия в текстовых файлах на уровне строк.
2.1.3Режим сравнения бинарных модулей форматов PE и ELF
В данном режиме ПК «РСП-Контроль» выявляет различия в бинарных модулях, ускоряя проверку пункта «Контроль соответствия исходных текстов ПО его объектному (загрузочному) коду» руководящего документа «Защита от несанкционированного доступа к информации. Часть 1. Программное обеспечение средств защиты информации. Классификация по уровню контроля отсутствия недекларированных возможностей».
2.1.4Режим проверки избыточности исходных текстов на уровне файлов
В данном режиме ПК позволяет определить наличие/отсутствие избыточности исходных текстов на уровне файлов.
2.2Функциональные ограничения
При выполнении требований пункта 1.2, а так же запуске ПК через входящие в комплект поставки скрипты RSP.bat и RSP.sh, для исполнения ПК «РСП-Контроль» выделяется 512 Мб (-Xmx512m) оперативной памяти. В случае выхода за границы этого ограничения, в консоли выполнения приложения будет выведено сообщение об ошибке «Exception in thread "AWT-EventQueue-0" java.lang.OutOfMemoryError: Java heap space». При необходимости анализа файлов большого размера в скриптах запуска можно скорректировать объем выделяемой памяти (-Xmx###m, где ###- объем памяти в мегабайтах).
3Описание логической структуры
3.1 Общая структура
3.1.1Дистрибутив ПК «РСП-Контроль»
Структура дистрибутивного комплекта ПК «РСП-Контроль» представлена на рис. 1.
Рис. 1. Структура дистрибутива ПК «РСП-Контроль»
где:
RSP.jar – jar-архив программы;
RSP.bat, RSP.sh – файлы запуска ПК «РСП-Контроль»;
mask.xml – список обрабатываемых расширений файлов и диапазон дат последней модификации файлов для режима фиксации и сравнения контрольных сумм в xml формате;
smpl_tmpl.xsl, unq_tmpl.xsl, common_tmpl.xsl, redundancyFiles_tmpl.xsl – шаблоны XSLT, необходимые для представления отчетов работы ПК в удобном для чтения формате;
JRE – папка, содержащая Java Runtime Environment для различных платформ;
Docs – папка, содержащая пользовательскую документацию на ПК «РСП-Контроль»;
img – папка, содержащая используемые в ПК «РСП-Контроль» графические элементы.
3.1.2Логическая структура программы
ПК «РСП-Контроль» выполняет четыре основные функции:
расчет и сравнение контрольных сумм (MD5, SHA-1, ГОСТ 34.11-94) каталогов;
построчное сравнение текстовых файлов;
разбор и сравнение бинарных модулей PE и ELF форматов;
проверка избыточности исходных текстов на уровне файлов.
Соответственно, проект состоит из 4-х логических блоков по числу решаемых задач (рис. 2).
Рис. 2. Структура ПК
Рассмотрим подробнее каждый из элементов этой структуры.
Пакет расчета контрольных сумм (CSCalc) содержит 5 классов (каждый класс в отдельном модуле):
CCSCalc – основной класс расчета. Содержит функции расчета, выгрузки в xml, загрузки из xml;
CMask – класс для работы с фильтром для выборки обрабатываемых файлов;
DirItem – класс для хранения информации об обрабатываемых каталогах;
FuncLib – класс-библиотека общих функций;
ListItem – класс для хранения информации об обрабатываемых файлах.
Пакет расчета контрольных сумм (CSCalc.gost) содержит 3 класса (каждый класс в отдельном модуле):
GostHash – основной публичный интерфейс доступа к расчету хеш-суммы ГОСТ Р 34.11-94;
GostHashIface – интерфейс;
GostHashJava – класс, реализующий расчет хеш-суммы по алгоритму ГОСТ Р 34.11-94.
Пакет построчного сравнения текстовых файлов (fileComp) содержит 2 класса:
FileComp – основной класс сравнения, разбивающий файлы на строки и сравнивающий полученные массивы строк;
FileItem – класс для хранения строк файла.
Пакет посекционного сравнения бинарных файлов (SecComp) содержит 42 класса:
MainSC – основной класс, который определяет тип поданного на вход бинарного файла и выбирает соответствующий способ анализа;
ElfSC – класс для анализа Elf-файлов;
PeSC – класс для анализа Pe-файлов;
SCFuncLib – класс-библиотека общих функций;
остальные классы – парсеры отдельных видов секций и элементов секций.
Пакет проверки избыточности исходных текстов на уровне файлов (calcRedundancy) содержит 4 класса:
Compare – класс для выполнения режима анализа (сравнения) BuildLog-файла, полученного при сборке исследуемого проекта, и файла, содержащего список файлов, в конец каждого из которых записан датчик специального вида. В завершении процедуры анализа формируется файл, содержащий список избыточных файлов:
Datchik – класс, определяющий список объектов-датчиков;
Pragma – класс, определяющий атрибуты объекта-датчика;
Prepare – класс для выполнения режима подготовки. В этом режиме осуществляется вставка датчиков специального вида.
Пакет gui предназначен для построения графического интерфейса и содержит 6 классов:
AddDatchikDialog – класс, предназначенный для добавления датчиков, используемых при работе в режиме проверки избыточности исходных текстов;
AddListDialog – класс, предназначенный для добавления типов файлов, используемых при задании маски;
EditDialog – класс, предназначенный для просмотра строк таблиц в режиме посекционного сравнения файлов;
MainFrame – главный класс, содержащий все элементы графического интерфейса;
PrepareComparePanel – класс, предназначенный для работы в режиме проверки избыточности исходных текстов;
ProcessDialog – графическое окно отображения хода какого-либо процесса.
Пакет domain состоит из класса Domain, отображающего бизнес-логику работы приложения, в данном классе происходит создание классов, используемых при реализации графического интерфейса приложения.
Пакет about содержит класс AboutDialog, представляющий собой графическое окно «О программе».
Пакет util содержит 3 класса:
FormattedDate – класс отображения форматированной даты;
FormattedMonth – класс отображения форматированного месяца;
FormattedTime - класс отображения форматированного времени.
Кроме того, в проекте имеется специальный пакет autogui, который содержит набор классов, предназначенных для построения нестандартных графических компонентов и обработчиков событий:
AutoDialogSaveRemoveFile – диалог выбора и сохранения файла в случае, если такой файл уже существует;
AutoDirTree – класс, предназначенный для формирования «дерева каталогов»;
AutoPanelDump – класс, предназначенный для отображения панелей заголовков и содержимого при разборе файлов форматов ELF и PE;
AutoSingleDialogCalendar - визуальный компонент редактирования даты;
AutoSingleDialogTextField - начальный объект визуальных компонентов редактирования атрибутов объектов;
AutoSingleDialogTime - визуальный компонент редактирования времени;
AutoTreeElfPE - дерево отображения файлов форматов ELF, PE;
ExtentionFilter – класс, предназначенный для формирования фильтра при выборе файлов;
KeyPressedAdapter - начальный класс обработчиков нажатий клавиш клавиатуры;
ListClearSelection – класс, предназначенный для придания указанному дереву способности отменять выбор узла при клике мышкой вне узлов;
NonEditableTableModel - модель таблицы, делающая ее (таблицу) не доступной для редактирования;
TreeClearSelectionListener - перехватчик события отмены выбора узла визуального компонента дерева;
ValueChangedEvent - событие изменения значения;
ValueChangedListener - перехватчик события изменения значения.
|