Как говорилось в первой главе под безопасностью ПО будем понимать отсутствие
в нем элементов РПС. Следовательно, согласно определению РПС, данному в § 2.3.1,
для доказательства безопасности программы требуется доказать, что программа не
устанавливает нелегитимных отношений с объектами ВС. С учетом введенных понятий
приведем формальную постановку задачи анализа безопасности программ.
Для того чтобы доказать, что исследуемая программа р безопасна, необходимо и
достаточно доказать, что pV, что с учетом предложенного определения РПС означает,
что множество отношений α
p
*
, которому принадлежат все отношения с объектами ВС,
устанавливаемые программой р в процессе выполнения, не содержит нелегитимных
отношений (α
p
*
∩ β
р
=∅).
Решение этой задачи затрудняется двумя проблемами. Во-первых, в общем случае
невозможно построить разрешающую процедуру, определяющую легитимность
отношения доступа. Во-вторых, невозможно получить все элементы для определения их
легитимности.
Способ разрешения этих проблем зависит от того, в каком пространстве —
пространстве отношений или пространстве программ будет рассматриваться задача
анализа безопасности. В следующем разделе будет подробно рассмотрена постановка
задачи анализа безопасности и методы ее решения для каждого из этих подходов.
2.3.3. Методы анализа безопасности ПО.
В области анализа безопасности программ практика значительно опережает
теорию. Широко известны различные средства программного обеспечения обнаружения
элементов РПС — от простейших антивирусных программсканеров до сложных
отладчиков и дизассемблеров-анализаторов, в то время как теоретические исследования
в области методов анализа безопасности носят несколько отвлеченный характер. В
данном параграфе делается попытка установить связь между методами, лежащими в
основе конкретных средств, и теоретическими разработками в области анализа
безопасности ПО.
2.3.3.1. Классификация методов анализа безопасности.
Как говорилось в предыдущем параграфе, анализ безопасности затрудняется двумя
факторами — неразрешимостью множества отношений нелегитимного доступа и
проблематичностью порождения рабочего пространства отношений программы с
объектами ВС.
В зависимости от способа преодоления этих трудностей предлагается разделить
методы, используемые для анализа безопасности ПО, на две категории: контрольно-
испытательные и логико-аналитические[15]. В такой классификации тип используемых
для анализа средств не принимается во внимание — в ее этом преимущество по
сравнению, например, с разделением на статический и динамический анализ. В основу
данного разделения положены принципиальные различия точек зрения на исследуемый
объект(программу) — контрольно-испытательные методы анализа рассматривают РПС
как феномен, а логико-аналитические —как ноумен.