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

При проведении анализа безопасности с помощью логико-аналитических методов (см. рис.7.3) строится модель программы и формально доказывается эквивалентность модели исследуемой программы и модели РПС. В простейшем случае в качестве модели программы может выступать ее битовый образ, в качестве моделей вирусов множество их сигнатур, а доказательство эквивалентности состоит в поиске сигнатур вирусов в программе. Более сложные методы используют формальные модели, основанные на совокупности признаков, свойственных той или иной группе РПС. Формальная постановка задачи анализа безопасности логико-аналитическими методами может быть сформулирована следующим образом. Выбирается некоторая система моделирования программ, представленная множеством моделей всех программ — Z. В выбранной системе исследуемая программа представляется своей модельюМ, принадлежащей множествуZ. Должно быть задано множество моделей РПСV=vi|i=1. N>, полученное либо путем построения моделей всех известных РПС, либо путем порождения множества моделей всех возможных (в рамках данной модели) РПС. МножествоVявляется подмножеством множестваZ. Кроме того, должно быть задано отношение эквивалентности определяющее наличие РПС в модели программы, обозначим егоЕ(x,y). Это отношение выражает тождественность программыxи РПСy, гдеx- модель программы,y- модель РПС, иyпринадлежит множествуV. Тогда задача анализа безопасности сводится к доказательству того, что модель исследуемой программы Мпринадлежит отношениюE(M,v), гдеvпринадлежит множествуV. Для проведения логико-аналитического анализа безопасности программы необходимо, во-первых, выбрать способ представления и получения моделей программы и РПС. После этого необходимо построить модель исследуемой программы и попытаться доказать ее принадлежность к отношению эквивалентности, задающему множество РПС. На основании полученных результатов можно сделать заключение о степени безопасности программы. Ключевыми понятиями здесь являются «способ представления» и «модель программы». Дело в том, что на компьютерную программу можно смотреть с очень многих точек зрения — это Рис.7.2. Схема анализа безопасности ПО с помощью контрольно-испытательных методов Рис. 7.3. Схема анализа безопасности ПО с помощью логико-аналитических методов и алгоритм, который она реализует, и последовательность команд процессора, и файл, содержащий последовательность байтов и т.д. Все эти понятия образуют иерархию моделей компьютерных программ. Можно выбрать модель любого уровня модели и способ ее представления, необходимо только чтобы модель РПС и программы были заданы одним и тем же способом, с использованием понятий одного уровня. Другой серьезной проблемой является создание формальных моделей программ, или хотя бы определенных классов РПС. Механизм задания отношения между программой и РПС определяется способом представления модели. Наиболее перспективным здесь представляется использование семантических графов и объектно-ориентированных моделей. В целом полный процесс анализа ПО включает в себя три вида анализа:

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

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

  • сигнатуры вирусов;
  • сигнатуры элементов РПС;
  • сигнатуры «подозрительных функций»;
  • сигнатуры штатных процедур использования системных ресурсов и внешних устройств.

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

Читайте также:
Лучшая программа для прошивки

Информационная безопасность с нуля. Основы кибербезопасности

не ХАЦКЕР, а Специалист по Информационной Безопасности! | UnderMind

Ограничение

Для продолжения скачивания необходимо пройти капчу:

Источник: studfile.net

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

Логико-аналитические методы решают задачу в пространстве программ. Это означает, что для доказательства того, что программа безопасна необходимо доказать, что она не принадлежит множеству РПС(V).

В этом случае проблема неразрешимости множества нелегитимных отношений и проблема получения полного рабочего пространства программы сводятся к проблеме неразрешимости множества V. Эта проблема преодолевается

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

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

Более сложные методы используют формальные модели основанные на совокупности признаков, свойственных тому или иному разрешимому подмножеству РПС[19].

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

Выбрана некоторая система моделирования программ, в которой каждая программа может быть представлена своей моделью, обладающей множеством атрибутов А=i | i=1..N>. В выбранной системе исследуемая программа р представляется своей моделью Мp, которая характеризуется множеством атрибутов Аp=pi | i=1..N>. В рамках этой системы моделирования должно быть задано разрешимое подмножество РПС V*ÎV, обладающее определенной на множестве атрибутов А характеристической функцией Xv*(a1, a2..aN). Подмножество РПС V* может быть получено либо путем построения моделей всех известных РПС, либо путем порождения моделей всех РПС, возможных в данной системе моделирования.

Тогда задача анализа безопасности сводится к вычислению значения характеристической функции Xv* на множестве атрибутов программы р — если Xv* (ap1, ap2..apN) истинно, то программа р является РПС, принадлежащим подмножеству РПС V*(pÎV*), если ложно, то программа не является РПС, принадлежащим выделенному разрешимому подмножеству РПС V*(pÎV*).

Для проведения логико-аналитического анализа безопасности программы (см рис 2.9) необходимо, во-первых, выбрать систему моделирования программ. Существует много научных подходов к решению этой проблемы, например [18,20], большинство из которых в той или иной степени пригодны для описания РПС. На компьютерную программу можно смотреть с очень многих точек зрения — это и алгоритм, который она реализует, и последовательность команд процессора, и файл, содержащий последовательность байтов и т.д. Все эти понятия образуют классы моделей компьютерных программ, которые будут подробно рассмотрены в § 2.3.4. Можно выбрать модель любого уровня, необходимо только чтобы она позволяла построить разрешимое подмножество РПС и конструктивно определить его характеристическую функцию.

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

Затем надо позаботиться о средствах получения множества значений атрибутов для исследуемой программы. Это могут быть различные средства применяемые для анализа кода программ, их отладки, а также средства из арсенала хакеров, использующиеся для «взлома» программ[24].

Читайте также:
Как завершить программу qt

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

Рис. 2.9. Структурная схема логико-аналитических метод

исследования безопасности программ.

Источник: infopedia.su

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

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

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

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

Рисунок 2 — Схема анализа безопасности ПО с помощью контрольно-испытательных методов

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

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

Логико-аналитические методы

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

Рисунок 3 — Схема анализа безопасности ПО с помощью логико-аналитических методов

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

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

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

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

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

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

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

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

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

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

Читайте также:
В какой программе делать этикетки

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

Сравнительный анализ программно-технических средств защиты ПО

Парольная защита

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

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

Слабым звеном парольных защит является блок проверки правильности введённого пароля/кода. Для такой проверки можно сравнивать введённый пароль с записанным в коде ПО правильным либо с правильно сгенерированным из введённых дополнительных данных паролем. Путём анализа процедур проверки можно найти реальный пароль, записанный в коде ПО, найти правильно сгенерированный пароль из введённых данных либо создать программу для перебора паролей для определения пароля с нужной ХЭШ — суммой. Кроме того, если СЗПО не использует шифрования, достаточно лишь принудительно изменить логику проверки для получения беспрепятственного доступа к ПО [5].

Способ установления подлинности пользователя в программах с парольной защитой представлен на рисунке 4.

Рисунок 4 — Схема установления подлинности пользователя

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

Положительные стороны парольной защиты [1]:

− надёжная защита от злоумышленника-непрофессионала;

− минимальные неудобства для пользователя;

− возможность передачи пароля/кода по сети;

− отсутствие конфликтов с системным и прикладным ПО и аппаратным обеспечением;

Отрицательные стороны парольной защиты:

− низкая стойкость большинства систем защиты данного типа;

− пользователю необходимо запоминать пароль/код.

Надежный пароль должен удовлетворять целому ряду требований:

а)пароль должен быть секретным:

) недопустимо отображение пароля на экране;

) записанный пароль нельзя хранить в местах, доступных неавторизованным лицам;

)файл паролей должен иметь надежную криптографическую защиту;

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

б) пароль должен быть длинным. Пароль должен состоять не менее чем из 8 символов, иначе он легко может быть взломан программами прямого перебора;

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

д) пароль не должен представлять собой распространенные слова, имена, названия для защиты от атаки со словарем.

Источник: lektsia.com

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru