Рефераты. Автоматизированная система контроля знаний специалистов по дефектоскопии

Рис. 3.15 Окно результатов теста.

После закрытия окна результатов будет выведен вопрос о повторном тестировании, окно которого изображено на рис. 3.16. В случае утвердительного ответа тестирование будет проведено ещё раз.

Рис. 3.16 Окно вопроса о повторном тестировании.

3.5 Отладка. Контроль использования динамической памяти

Утилита «Мониторинг памяти» написана для осуществления контроля использования динамической памяти в программе. Для получения информации о состоянии памяти используется системная функция GetMemoryStatus. Она возвращает информацию о текущем состоянии разных логических видов памяти. Считывание этой информации происходит через определённые промежутки времени. Вид программы приведён на рис. 3.17.

Рис. 3.17 Утилита мониторинга динамической памяти

Данная утилита позволяет отслеживать резервирование и освобождение динамической памяти указателями, динамическими списками и объектами программы. Особенно это необходимо при использовании динамического создания объектов. Фиксируемые последние изменения измеряемых величин, позволяют точно определить размер резервируемой и освобождаемой памяти.

Окно настройки параметров вызывается при нажатии на кнопку «Параметры». Оно позволяет оптимизировать работу утилиты при отладке программы. Вид окна представлен на рис. 3.18.

Рис. 3.18 Настройка параметров

В этом окне можно задать интервал, времени, через которое будет производиться опрос состояния памяти, а также установить флажок, регулирующий расположение окна мониторинга.

3.6 Защита информации

3.6.1 Защита от несанкционированного использования

Защита от несанкционированного использования имеет цель сделать невозможной несанкционированную работу с административной программой. Это связано с тем, что, во-первых, именно эта программа оперирует с данными, которые могут представлять интерес для злоумышленника, а во-вторых, эта программа является ядром системы тестирования и имеет коммерческую ценность. Все клиентские программы без неё теряют свой смысл. В связи с этим встаёт задача её защиты от компьютерного пиратства.

В программе применена двухуровневая система защиты.

Первый уровень - это проверка правильности введённого пароля. После ввода пользователем пароля, он сравнивается с правильным. Работа с программой возможна лишь в том случае, если введённый пароль соответствует правильному. Для хранения правильного пароля реализован алгоритм стегографии. Цель этого алгоритма - скрыть пароль в файле точечного рисунка формата bmp. При этом размер файла не меняется и рисунок не разрушается. Я решил это следующим способом. Каждая точка описывается 3 компонентами R, G и B (для 24-битных рисунков, а другие конвертируются в этот режим). Если яркость какой-либо из этих компонент изменится на 1/255, этого никто не заметит. Что и требуется. Скрываемая информация по битам записывается в младшие биты RGB-компонент. При считывании, наоборот, из младшего бита RGB-компонент собираем данные. Рисунок, в котором хранится пароль, отображается в диалоговом окне «О программе…». Перед записью в рисунок пароль необходимо закодировать при помощи ключевого слова. Принцип кодирования следующий:

вычисляется контрольная сумма ключевого слова;

вычисляется контрольное произведение ключевого слова;

кодируемый пароль представляется как массив байтов;

вычитается из каждого байта данных байт контрольной суммы ключевого слова

с результатом предыдущего вычисления выполняется операция «исключающее или» с байтом контрольного произведения пароля;

к результату предыдущего вычисления прибавляется код соответствующего символа ключевого слова. Как только ключевое слово заканчивается, проход по нему начинается с его начала.

Простого наложения маски, как описано в шаге 6, недостаточно - так как в этом случае ключевое слово можно вычислять по частям с помощью лингвистического анализатора, а благодаря предыдущим пунктам этот процесс будет крайне затруднен. Возможно применение дополнительно к этому метод "Иголки вперед" - сложение кода текущего со следующим, затем следующего (до его изменения) со следующими после него и так далее, но, я считаю, что это в данном случае будет излишним, вследствие того, что несмотря на описанные выше меры, этот пароль не способен оказать серьёзную защиту. Дело в том, что код исполняемого модуля программы можно дизассемблировать. После этого, пароль снимается путём изменения всего лишь двух символов. Условный переход на языке ассемблера (jne), который стоит в программе на месте сравнения введённого пользователем пароля с правильным, заменяется на безусловный - jmp. В результате чего, войти в программу можно, набрав любые символы. На рис. 3.19 приведён отрывок алгоритма, где производится ввод и проверка пароля. Также, там показан безусловный переход, который делается взломщиком программы. Из рисунка видно, что в данном случае эффективность защиты не зависит от надёжности процедуры проверки правильности введённого пароля.

В качестве дополнительной защиты можно было бы упаковать исполняемый файл упаковщиком типа ExePack, но это не намного увеличит её эффективность, так как ко многим распространённым упаковщикам уже разработан метод их «вскрытия».

Учитывая приведённые выше факты, целесообразно подключить второй уровень защиты - защиту на логическом уровне. Суть её заключается в следующем. В процессе проверки правильности пароля вычисляются определённые числовые значения. Они используются в качестве констант при построении профиля личности. При добавлении безусловного перехода в дизассемблированный код программы числовые значения не будут вычислены, а это повлечёт за собой грубые ошибки в построении профиля, то есть программа будет работать неправильно. Как правило, компьютерный пират не компетентен в предметной области, поэтому, вероятно, не заметит ошибочной работы программы. Благодаря этому, защищаются ключевые алгоритмы административной программы, без которых будет непригоден к использованию весь пакет программ системы психологического обследования.

Таким образом, стоит отметить очевидное преимущество такой системы защиты. Она является пассивной, то есть в данном случае не обнаруживает себя в явном виде, что создаёт у взломщика иллюзию примитивности защиты программы и затрудняет её нейтрализацию.

Рис. 3.19 Алгоритм защиты от несанкционированного доступа

3.6.2 Защита данных

Выше, при описании подсистем, упоминалось, что файл с данными зашифрован. В этом разделе отдельно будет рассмотрен вопрос защиты данных теста.

Текст кодируется ключевым словом. Для этого к коду каждого символа прибавляется код символа ключевого слова, взятого по порядку. Когда очередь доходит до последнего символа, проход по ключевому слову начинается сначала. В итоге, происходит сопоставление каждой букве исходного текста буквы-заменителя закодированного текста. На рис. 3.20 обозначен метод кодирования текста.

Рис. 3.20. Метод кодирования текста

Вообще, для обеспечения более эффективной защиты требуется разработка целой подсистемы защиты. Но это сильно увеличило бы сложность программного изделия и повысило бы его рыночную стоимость. Поэтому, я считаю, что дополнительно целесообразно использование внешней защитной системы. Для защиты программы и данных от несанкционированного доступа можно использовать программное средство, реализующее защиту информации криптоалгоритмом DES, Blowfish или советским ГОСТ 28147-89. Одна из таких программ - Best Crypt 6.04. При помощи неё в операционной системе создаётся контейнер - зарезервированное место заданным объёмом. Этот контейнер система видит как обычный съёмный диск. На него можно записать административную программу, список обследованных и регистрационные листы. Получить доступ к контейнеру можно только после введения пароля. Сам контейнер представляет собой файл, который находится в корневом каталоге и зашифрован устойчивым криптографическим алгоритмом.

Таким образом, реализованные в программе способы защиты имеют достаточную надёжность для защиты от начинающего злоумышленника. Однако, если требуется повысить надёжность защиты можно прибегнуть к дополнительным внешним средствам защиты.

3.6.3 Защита от программ-шпионов

Операционная система Windows разрешает работу в фоновом режиме процессов, которые не имеют своего окна и не видны в панели задач и в списке работающих программ. Обычно это различные сервисные процессы. Программы типа «троянский конь» маскируются под сервисные процессы и могут осуществлять различные действия. При помощи них злоумышленник может шпионить за заражённым компьютером. В частности, возможно копирование, уничтожение и пересылка интересующей злоумышленника информации на компьютере пользователя. «Троянец» может «перехватывать» нажатия клавиш пользователем, сохранять на диске информацию о нажатых клавишах и отсылать её злоумышленнику. Благодаря этому злоумышленник может узнать набираемые пароли и другую информацию. Возможно также администрирование компьютера пользователя с удаленного компьютера злоумышленника при помощи сети Internet. «Троянцы» имеют способность встраиваться в исполняемые модули других программ, рассылать свои копии по электронной почте. При уничтожении запускного файла «троянца» он может самовосстанавливаться с резервных копий. Для запуска «троянец» обычно прописывает путь к своему запускному файлу в реестре Windows, в ctrwb. Run или RunService. Поэтому целесообразно при подозрении на наличие «троянца» в системе проверить указанные секции системного реестра. Утилита MemMon позволяет осуществлять слежение за процессами, работающими в системе. Вид приложения изображён на рис. 3.21.

Рис. 3.21. Вид окна утилиты MemMon

MemMon показывает все процессы, даже те, которые не видны в окне, появляющемся при нажатии комбинации клавиш Ctrl-Alt-Del. Это свойство необходимо для борьбы с программами-шпионами типа «троянский конь». Анализируя список работающих процессов, можно обнаружить наличие подозрительной программы и локализовать её местонахождение. Если выяснится, что это вредоносная программа, то можно принудительно завершить её работу и принять меры для её полного уничтожения. Для завершения выбранного процесса нужно нажать на кнопку «Убить процесс». Возможность немедленного завершения процесса необходима также при первоначальной отладке. В случае «зависания» одного процесса его гораздо проще завершить, используя данную программу.

4. Экономическое обоснование

Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14



2012 © Все права защищены
При использовании материалов активная ссылка на источник обязательна.