Анализ защищенности программного обеспечения

Угрозы безопасности программного обеспечения и классификация средств атаки на средства защиты ПО. Методы и средства защиты программ от компьютерных вирусов и средств исследования программ. Анализ стандартов в области информационной безопасности.

Рубрика Программирование, компьютеры и кибернетика
Вид дипломная работа
Язык русский
Дата добавления 29.06.2012
Размер файла 1,4 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

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

Наиболее подходящей для оценки представляется метрика Холстеда и такой ее параметр, как потенциальный объем программы.

2. Степень интегрированности системы защиты с защищаемым ПО.

Для данного показателя вводится следующее определение:

Под интегрированностью системы защиты с защищаемым ПО понимается степень зависимости нормального функционирования защищенного ПО от функционирования его системы защиты.

Степень интегрированности характеризует сложность процесса нейтрализации или полного удаления системы защиты от защищаемого ПО (в этом заключается процесс взлома) и имеет два аспекта:

• физический;

• информационный.

Физическая интегрированность означает, что модули, а возможно и целые участки кода объединены с кодом защищаемой программы - «перемешаны» с ним.

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

Для оценки информационной интегрированности мы предлагаем использовать отношение объема данных , передаваемых системой защиты ПО в защищенное ПО в процессе сеанса работы защищенного ПО, к времени этого сеанса :

Другие показатели качества систем защиты ПО предлагается оценивать методами, аналогичными для программного обеспечения общего назначения.

Рассмотрим показатели качества ПО в применении к системам защиты ПО.

Удобство применения систем защиты программного обеспечения.

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

Показатели эффективности систем защиты программного обеспечения.

Из показателей эффективности для систем защиты ПО большое значение имеют: временная эффективность и ресурсоемкость. Это объясняется тем, что система защиты при своем функционировании «отбирает» машинные ресурсы у защищаемого ПО, влияя, таким образом, на показатели его временной эффективности и ресурсоемкости. Следовательно, при оценке качества системы защиты ПО данные показатели требуют тщательных оценок, например, путем практических испытаний.

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

Из всех показателей универсальности на качество систем защиты ПО наибольшее влияние оказывают: гибкость, мобильность и модифицируемость.

Гибкость систем защиты ПО.

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

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

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

Мобильность систем защиты ПО.

Степень мобильности систем защиты ПО (то есть возможности их переработки для применения на ЭВМ аналогичного класса) во многом зависит от вида оцениваемой системы защиты ПО и способа ее разработки. Например, различные способы защиты алгоритма от отладчиков и дизассемблеров, как правило, вообще непереносимы, и их применение в системе защиты ухудшают ее мобильность. В целом, для оценки мобильности систем защиты ПО применимы вышеописанные методы.

Модифицируемость систем защиты ПО.

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

Рассмотрев особенности систем защиты ПО можно отметить, что их вспомогательный характер, с одной стороны, и характерные для них специфические особенности построения структуры и функционирования, с другой стороны, хотя и допускают применение набора показателей качества ПО и методов их оценки, описанных в главе 1, но при этом требуют некоторых изменений и доработки применительно к указанной специфике. Это потребует дальнейших исследований, выходящих за рамки данной работы.

2.4.2 Методы анализа и оценки безопасности ПО

На базе средств обнаружения элементов разрушающих программных средств (РПС) - от простейших антивирусных программ-сканеров до сложных отладчиков и дизассемблеров - анализаторов и выработался набор методов, которыми осуществляется анализ безопасности ПО.

Разделим методы, используемые для анализа и оценки безопасности ПО, на две категории: контрольно-испытательные и логико-аналитические (см. рисунок). В основу данного разделения положены принципиальные различия в точке зрения на исследуемый объект (программу). Контрольно-испытательные методы анализа рассматривают РПС через призму фиксации факта нарушения безопасного состояния системы, а логико-аналитические - через призму доказательства наличия отношения эквивалентности между моделью исследуемой программы и моделью РПС.

В такой классификации тип используемых для анализа средств не принимается во внимание - в этом ее преимущество по сравнению, например, с разделением на статический и динамический анализ.

Комплексная система исследования безопасности ПО должна включать как контрольно-испытательные, так и логико-аналитические методы анализа, используя преимущества каждого их них. С методической точки зрения логико-аналитические методы выглядят более предпочтительными, т.к. позволяют оценить надежность полученных результатов и проследить последовательность (путем обратных рассуждений) их получения. Однако эти методы пока еще мало развиты и, несомненно, более трудоемки, чем контрольно-испытательные.

Контрольно-испытательные методы анализа безопасности программного обеспечения

Контрольно-испытательные методы - это методы, в которых критерием безопасности программы служит факт регистрации в ходе тестирования программы нарушения требований по безопасности, предъявляемых в системе предполагаемого применения исследуемой программы [10]. Тестирование может проводиться с помощью тестовых запусков, исполнения в виртуальной программной среде, с помощью символического выполнения программы, ее интерпретации и другими методами.

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

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

Это множество состоит из двух подмножеств:

• подмножества ограничений на использование ресурсов аппаратуры и операционной системы, например оперативной памяти, процессорного времени, ресурсов ОС, возможностей интерфейса и других ресурсов;

• подмножества ограничений, регламентирующих доступ к объектам, содержащим данные (информацию), то есть областям памяти, файлам и т.д.

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

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

Тогда задача анализа безопасности формализуется следующим образом.

Программа не содержит РПС, если для любого ее испытания множество предикатов истинно.

Очевидно, что результат выполнения программы зависит от входных данных, окружения и т.д., поэтому при ограничении ресурсов, необходимых для проведения испытаний, контрольно-испытательные методы не ограничиваются тестовыми запусками и применяют механизмы экстраполяции результатов испытаний, включают в себя методы символического тестирования и другие методы, заимствованные из достаточно проработанной теории верификации (тестирования правильности) программы.

Рассмотрим схему анализа безопасности программы контрольно-испытательным методом.

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

Наибольшую трудность здесь представляет определение набора критичных с точки зрения безопасности параметров программы. Они очень сильно зависят от специфики операционной системы и определяются путем экспертных оценок. Кроме того в условиях ограниченных объемов испытаний, заключение о выполнении или невыполнении требований безопасности как правило будет носить вероятностный характер.

Логико-аналитические методы контроля безопасности программ

При проведении анализа безопасности с помощью логико-аналитических методов (см. рисунок) строится модель программы и формально доказывается эквивалентность модели исследуемой программы и модели РПС.

В простейшем случае в качестве модели программы может выступать ее битовый образ, в качестве моделей вирусов множество их сигнатур, а доказательство эквивалентности состоит в поиске сигнатур вирусов в программе. Более сложные методы используют формальные модели, основанные на совокупности признаков, свойственных той или иной группе РПС.

Формальная постановка задачи анализа безопасности логико-аналитическими методами может быть сформулирована следующим образом.

Выбирается некоторая система моделирования программ, представленная множеством моделей всех программ - Z. В выбранной системе исследуемая программа представляется своей моделью М, принадлежащей множеству Z. Должно быть задано множество моделей РПС V={vi|i=1,...,N}, полученное либо путем построения моделей всех известных РПС, либо путем порождения множества моделей всех возможных (в рамках данной модели) РПС. Множество V является подмножеством множества Z. Кроме того, должно быть задано отношение эквивалентности определяющее наличие РПС в модели программы, обозначим его Е(x,y). Это отношение выражает тождественность программы x и РПС y, где x - модель программы, y - модель РПС, и y принадлежит множеству V.

Тогда задача анализа безопасности сводится к доказательству того, что модель исследуемой программы М принадлежит отношению E(M,v), где v принадлежит множеству V.

Для проведения логико-аналитического анализа безопасности программы необходимо, во-первых, выбрать способ представления и получения моделей программы и РПС. После этого необходимо построить модель исследуемой программы и попытаться доказать ее принадлежность к отношению эквивалентности, задающему множество РПС.

На основании полученных результатов можно сделать заключение о степени безопасности программы. Ключевыми понятиями здесь являются "способ представления" и "модель программы". Дело в том, что на компьютерную программу можно смотреть с очень многих точек зрения - это и алгоритм, который она реализует, и последовательность команд процессора, и файл, содержащий последовательность байтов и т.д. Все эти понятия образуют иерархию моделей компьютерных программ. Можно выбрать модель любого уровня модели и способ ее представления, необходимо только чтобы модель РПС и программы были заданы одним и тем же способом, с использованием понятий одного уровня. Другой серьезной проблемой является создание формальных моделей программ, или хотя бы определенных классов РПС. Механизм задания отношения между программой и РПС определяется способом представления модели. Наиболее перспективным здесь представляется использование семантических графов и объектно-ориентированных моделей.

В целом полный процесс анализа ПО включает в себя три вида анализа:

• лексический верификационный анализ;

• синтаксический верификационный анализ;

• семантический анализ программ.

Каждый из видов анализа представляет собой законченное исследование программ согласно своей специализации.

Результаты исследования могут иметь как самостоятельное значение, так и коррелироваться с результатами полного процесса анализа.

Лексический верификационный анализ предполагает поиск распознавания и классификацию различных лексем объекта исследования (программа), представленного в исполняемых кодах. При этом лексемами являются сигнатуры. В данном случае осуществляется поиск сигнатур следующих классов:

• сигнатуры вирусов;

• сигнатуры элементов РПС;

• сигнатуры (лексемы) "подозрительных функций";

• сигнатуры штатных процедур использования системных ресурсов и внешних устройств.

Поиск лексем (сигнатур) реализуется с помощью специальных про-грамм-сканеров.

Синтаксический верификационный анализ предполагает поиск, распознавание и классификацию синтаксических структур РПС, а также построение структурно-алгоритмической модели самой программы.

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

Семантический анализ предполагает исследование программы изучения смысла составляющих ее функций (процедур) в аспекте операционной среды компьютерной системы. В отличие от предыдущих видов анализа, основанных на статическом исследовании, семантический анализ нацелен на изучение динамики программы - ее взаимодействия с окружающей средой. Процесс исследования осуществляется в виртуальной операционной среде с полным контролем действий программы и отслеживанием алгоритма ее работы по структурно-алгоритмической модели.

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

Оценка технологической безопасности системы защиты ПО.

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

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

Алгоритм оценки величины R, предусматривающий использование результатов испытаний, состоит из следующих шагов:

1. Определение множества E входных массивов.

2. Выделение в Е подмножеств , связанных с отдельными ветвями программы.

3. Определение для каждого в предполагаемых условиях функционирования значений вероятности .

4. Определение подмножества для каждого входного набора данных, используемого в контрольных примерах.

5. Выявление проверенных пар и непроверенных в ходе испытаний сегментов и пар сегментов.

6. Определение для каждого j величины где значение коэффициента определяется в соответствии со следующими правилами (см. Табл.).

7. Оценка R вычисляется по формуле:

где k: - общее число ветвей программы.

Таблица значений коэффициента

значение коэффициента

Мощность подмножества (количество сегментов)

0,99

более одного конкретного примера

0,95

один конкретный пример

0,90

ни одного контрольного примера, но в процессе проверки программы были найдены все сегменты и все сегментные пары ветви

0,80

в ходе испытаний были опробованы все сегменты, но не все сегментные пары

m сегментов (1< m <4) ветви не были опробованы в ходе испытаний

0

более чем 4 сегмента не были опробованы в процессе испытаний

Приведенные выше параметры ; были определены на основе анализа теоретических результатов исследования и экспериментальных результатов тестирования различных программ. Для того, чтобы получить более точные оценки величины R необходимо провести измерения с использованием подходящего метода формирования выборки.

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

В заключение отметим, что на этапе эксплуатации программных комплексов особое значение приобретают вопросы эксплуатационной безопасности, т.е. свойства программного обеспечения и информации не быть несанкционирование искаженными. В этой связи должна производиться оценка надежности систем защиты программных комплексов сточки зрения эксплуатационной безопасности с помощью различных методик, включая предложенные в настоящей работе. На основании анализа уязвимых мест и после составления полного перечня угроз для данного конкретного объекта информационной защиты необходимо осуществить переход к неформализованному или формализованному описанию модели угроз эксплуатационной безопасности системы защиты ПО. Такая модель, в свою очередь, должна являться составной частью обобщенной модели обеспечения безопасности информации и ПО объекта защиты. На практике часто используют неформализованное описание модели угроз, т.к. структура, состав и функциональность современных компьютерных систем управления носят многоуровневый, сложный и распределенный характер, а действия потенциального нарушителя информационных и функциональных ресурсов трудно поддаются формализации.

Задача разработки обобщенной модели обеспечения безопасности информации, систем защиты ПО и ПО объекта защиты может явиться предметом будущих научных исследований

Заключение

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

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

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

Необходимой составляющей проблемы обеспечения информационной безопасности программного обеспечения является общегосударственная система стандартов и других нормативных и методических документов по безопасности информации (ознакомиться с большей их частью можно в главе 4), а также международные стандарты и рекомендации по управлению качеством программного обеспечения, которые позволяет предъявить к создаваемым и эксплуатируемым программных комплексам требуемый уровень реализации защитных функций.

Изложенный материал, поможет при изучении технологии проектирования систем обеспечения безопасности программного обеспечения избежать многих ошибок, которые могут существенно повлиять на качество проекта и эффективность конечной системы в целом при ее реализации на объектах информатизации различного назначения.

Литература:

1. Дмитрий Скляров "Искусство защиты и взлома информации" © "БХВ-ПЕТЕРБУРГ", 2004

2. http://www.cdrinfo.com

3. Расторгуев С.П. Программные методы защиты информации в компьютерах и сетях.

4. Чернов А. В. Анализ запутывающих преобразований программ / Библиотека аналитической информации [Электронный ресурс] http://www.citforum.ru/security/articles/analysis/

5. Чернов А. В. Исследование и разработка методологии маскировки программ: дис. ... канд. физ.-мат. наук /Моск. гос. ун-т им. М. В. Ломоносова. - М., 2003. - 133 с

6. А. В. Анисимов. Подходы к защите программного обеспечения от атак злонамеренного хоста. УДК 681.3:004.056

7. Мирошниченко Е. А. Технологии программирования: учебное пособие / Е. А. Мирошниченко. - 2-е изд., испр. и доп. - Томск: Изд-во Томского политехнического университета, 2008. - 128 с.

8. Ефимов А.И., Пальчун Б.П. О технологической безопасности компьютерной инфосферы// Вопросы защиты информации. - 1995.- №3(30).

9. Белкин П.Ю. Новое поколение вирусов принципы работы и методы защиты// Защита информации. - 1997.- №2.-С.35-40

10. Зегжда Д.П., Шмаков Э.М. Проблема анализа безопасности программного обеспечения// Безопасность информационных технологий. - 1995.- №2.- С.28-33.

11. Тейер Т., Липов М., Нельсон Э. Надежность программного обеспечения. - М.: Мир, 1981.

12. Расторгуев СП., Дмитриевский Н.Н. Искусство защиты и «раздевания» программ. - М.: «Софтмаркет», 1991.

13. Роббинс Д. Отладка приложений Microsoft .NET и Microsoft Windows. - М.: «Русская редакция», 2004. - 736 с.

14. Касперски К, Техника и философия хакерских атак. Изд.2. - М.: Солон-Р, 2005.

15. ГОСТ 28195-89: Оценка качества программных средств. Общие положения. - М.: Издательство стандартов, 1989.

16. Изосимов А.В., Рыжко А.Л. Метрическая оценка качества программ. - М.: Изд. МАИ, 1989.

17. Цивин СВ. Методы защиты программных средств вне доверенной вы-числительной среды: Автореф. дисс. к.т.н. - Пенза, 2000. - 21 с.

18. Мадан В.И. Исследование и анализ количественных характеристик качества программ: Автореф. дисс, к,ф-м.н., Украинский институт кибернетики, 1992.

19. McCabe T. A complexity measure //IEEE Transactions on Software Engineering, 1976, V.SE 2, № 4, P.308-320.

20. Шимаров В.А. Методы инструментального контроля качества программ на основе структуры передач управления: Автореф. дисс. к.ф-м.н. - АН БССР, Ин-т математики, Минск, 1989.

21. Майерс Г. Надежность программного обеспечения. Пер. с англ. под ред. В.Ш. Кауфмана. - М.: Мир, 1980

22. Дал У., Дейкстра Э., Хоор К. Структурное программирование. - М

23. Липаев В.В. Надежность ПО АСУ. - М.: Энергоиздат, 1981.

24. Воробьев С.Г., Копыльцов А.В, Пальчун Б.Н., Юсупов P.M. Методы и модели оценки качества ПО. Ин-т информатики и автоматизации. - СПб.:1992.

25. Липаев В.В. Отладка сложных программ. Методы, Средства. Технологии, - М,: Энергоатомиздат, 1993,

26. Заде Л. Понятие лингвистической переменной и его применение к понятию приближенных решений. - М.: Мир, 1976.

Размещено на Allbest.ru


Подобные документы

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.