Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология Образование Политология Производство Психология Стандартизация Технологии |
Методы анализа безопасности программного обеспечения
Контрольно-испытательные методы программный обеспечение защита лицензирование Контрольно-испытательные методы - это методы, в которых критерием безопасности программы служит факт регистрации в ходе тестирования программы нарушения требований по безопасности, предъявляемых в системе предполагаемого применения исследуемой программы. Тестирование может проводиться с помощью тестовых запусков, исполнения в виртуальной программной среде, с помощью символического выполнения программы, ее интерпретации и другими методами [4]. Контрольно-испытательные методы делятся на те, в которых контролируется процесс выполнения программы и те, в которых отслеживаются изменения в операционной среде, к которым приводит запуск программы. Эти методы наиболее распространены, так как они не требуют формального анализа, позволяют использовать имеющиеся технические и программные средства и быстро ведут к созданию готовых методик. Рассмотрим схему анализа безопасности программы контрольно-испытательным методом, представленную на рисунке 2. Рисунок 2 - Схема анализа безопасности ПО с помощью контрольно-испытательных методов Контрольно-испытательные методы анализа безопасности начинаются с определения набора контролируемых параметров среды или программы. Необходимо отметить, что этот набор параметров будет зависеть от используемого аппаратного и программного обеспечения (от операционной системы) и исследуемой программы. Затем необходимо составить программу испытаний, осуществить их и проверить требования к безопасности, предъявляемые к данной программе в предполагаемой среде эксплуатации, на запротоколированных действиях программы и изменениях в операционной среде, а также используя методы экстраполяции результатов и стохастические методы. Очевидно, что наибольшую трудность здесь представляет определение набора критичных параметров программы и операционной среды. Они очень сильно зависят от специфики операционной системы и определяются путем экспертных оценок. Кроме того в условиях ограниченных объемов испытаний, заключение о выполнении или невыполнении требований безопасности как правило будет носить вероятностный характер. Логико-аналитические методы При проведении анализа безопасности с помощью логико-аналитических методов строится модель программы и формально доказывается эквивалентность модели исследуемой программы и модели РПС. В простейшем случае в качестве модели программы может выступать ее битовый образ, в качестве моделей вирусов множество их сигнатур, а доказательство эквивалентности состоит в поиске сигнатур вирусов в программе. Более сложные методы используют формальные модели, основанные на совокупности признаков, свойственных той или иной группе РПС [4]. Рассмотрим схему анализа безопасности программы логико-аналитическим методом, представленную на рисунке 3. Рисунок 3 - Схема анализа безопасности ПО с помощью логико-аналитических методов Для проведения логико-аналитического анализа безопасности программы необходимо, во-первых, выбрать способ представления и получения моделей программы и РПС. После этого необходимо построить модель исследуемой программы и попытаться доказать ее принадлежность к отношению эквивалентности, задающему множество РПС. На основании полученных результатов можно сделать заключение о степени безопасности программы. Ключевыми понятиями здесь являются «способ представления» и «модель программы». Дело в том, что на компьютерную программу можно смотреть с очень многих точек зрения - это и алгоритм, который она реализует, и последовательность команд процессора, и файл, содержащий последовательность байтов и т.д. Все эти понятия образуют иерархию моделей компьютерных программ. Можно выбрать модель любого уровня и способ ее представления, необходимо только чтобы модель РПС и программы были заданы одним и тем же способом, с использованием понятий одного уровня. Другой серьезной проблемой является создание формальных моделей программ, или хотя бы определенных классов РПС. В целом полный процесс анализа ПО включает в себя три вида анализа [3]: а) лексический верификационный анализ - предполагает поиск, распознавание и классификацию различных лексем объекта исследования (программы), представленного в исполняемых кодах. При этом лексемами являются сигнатуры. В данном случае осуществляется поиск сигнатур следующих классов: ) сигнатуры вирусов; ) сигнатуры элементов РПС; ) сигнатуры (лексемы) «подозрительных функций»; б) синтаксический верификационный анализ - предполагает поиск, распознавание и классификацию синтаксических структур РПС, а также построение структурно - алгоритмической модели самой программы; в) семантический анализ - предполагает исследование программы, изучение смысла составляющих ее функций (процедур) в аспекте операционной среды компьютерной системы. В отличие от предыдущих видов анализа, основанных на статическом исследовании, семантический анализ нацелен на изучение динамики программы - ее взаимодействия с окружающей средой. Процесс исследования осуществляется в виртуальной операционной среде с полным контролем действий программы и отслеживанием алгоритма ее работы по структурно-алгоритмической модели. Семантический анализ является наиболее эффективным видом анализа, но и самым трудоемким. По этой причине методика сочетает в себе три перечисленных выше анализа. Выработанные критерии позволяют разумно сочетать различные виды анализа, существенно сокращая время исследования, не снижая его качества. Сравнительный анализ программно-технических средств защиты ПО Парольная защита Этот класс СЗПО, на сегодняшний день, является самым распространённым. Основной принцип работы данных систем заключается в идентификации и аутентификации пользователя ПО путём запроса дополнительных данных, это могут быть название фирмы и/или имя и фамилия пользователя и его пароль либо только пароль/регистрационный код. Эта информация может запрашиваться в различных ситуациях, например, при старте программы, по истечении срока бесплатного использования ПО, при вызове процедуры регистрации либо в процессе установки на ПК пользователя. Процедуры парольной защиты просты в реализации и, поэтому, очень часто применяются производителями ПО. Большинство парольных СЗПО использует логические механизмы, сводящиеся к проверке правильности пароля/кода и запуске или не запуске ПО, в зависимости от результатов проверки. Существуют так же системы, шифрующие защищаемое ПО и использующие пароль или производную от него величину как ключ дешифрации, большинство таких систем использует слабые или простейшие алгоритмы шифрования, нестойкие к направленным атакам. Лишь в последнее время разработаны парольные СЗПО, реализующие стойкие криптоалгоритмы типа DES и RSA, они реализованы в виде защитного модуля и вспомогательных библиотек и устанавливаются на уже скомпилированные модули ПО [2]. Слабым звеном парольных защит является блок проверки правильности введённого пароля/кода. Для такой проверки можно сравнивать введённый пароль с записанным в коде ПО правильным либо с правильно сгенерированным из введённых дополнительных данных паролем. Путём анализа процедур проверки можно найти реальный пароль, записанный в коде ПО, найти правильно сгенерированный пароль из введённых данных либо создать программу для перебора паролей для определения пароля с нужной ХЭШ - суммой. Кроме того, если СЗПО не использует шифрования, достаточно лишь принудительно изменить логику проверки для получения беспрепятственного доступа к ПО [5]. Способ установления подлинности пользователя в программах с парольной защитой представлен на рисунке 4. Рисунок 4 - Схема установления подлинности пользователя Для всех парольных систем существует угроза перехвата пароля при его вводе авторизованным пользователем. Кроме того, в большинстве СЗПО данного типа процедура проверки используется лишь единожды, обычно при регистрации или установке ПО, затем система защиты просто отключается, что создаёт реальную угрозу ПО. Положительные стороны парольной защиты [1]: − надёжная защита от злоумышленника-непрофессионала; − минимальные неудобства для пользователя; − возможность передачи пароля/кода по сети; − отсутствие конфликтов с системным и прикладным ПО и аппаратным обеспечением; Отрицательные стороны парольной защиты: − низкая стойкость большинства систем защиты данного типа; − пользователю необходимо запоминать пароль/код. Надежный пароль должен удовлетворять целому ряду требований: а)пароль должен быть секретным: ) недопустимо отображение пароля на экране; ) записанный пароль нельзя хранить в местах, доступных неавторизованным лицам; )файл паролей должен иметь надежную криптографическую защиту; ) возможности операционной системы и других программ по сохранению пароля должны игнорироваться, на предложение программ запомнить пароль нужно всегда отвечать отказом. б) пароль должен быть длинным. Пароль должен состоять не менее чем из 8 символов, иначе он легко может быть взломан программами прямого перебора; в) пароль должен быть трудно угадываемым. Недопустимо совпадение пароля с логином, использование в качестве пароля имени, фамилии, даты рождения, номеров телефонов пользователя или его родственников, кличек любимых домашних животных, названий спортивных клубов и т.п. д) пароль не должен представлять собой распространенные слова, имена, названия для защиты от атаки со словарем. |
Последнее изменение этой страницы: 2020-02-16; Просмотров: 277; Нарушение авторского права страницы