- •Методы и средства анализа безопасности программного обеспечения
- •Общие замечания
- •Контрольно-испытательные методы анализа безопасности программного обеспечения
- •Логико-аналитические методы контроля безопасности программ
- •Сравнение логико-аналитических и контрольно-испытательных методов анализа безопасности программ
- •Способы тестирования программного обеспечения при испытаниях его на технологическую безопасность
- •Обобщенные способы анализа программных средств на предмет наличия (отсутствия) элементов разрушающих программных средств Статистические и динамические способы исследования по
- •Особенности исследования защищенного по
- •Описание способов проведения испытаний, оценки качества и сертификации программных средств
- •Состав методического обеспечения проведения испытаний программ
- •Состав инструментальных средств проведения испытания программ
- •Общая номенклатура показателей качества по
- •Выбор номенклатуры показателей качества
- •Оценка значений показателей качества по
- •Организационные вопросы проведения испытаний по
- •Методологические вопросы проведения испытаний по
- •Построение программно-аппаратных комплексов для контроля технологической безопасности программ Состав инструментальных средств контроля безопасности по при его разработке
- •Структура и принципы построения программно-аппаратных средств контрольно-испытательного стенда испытания технологической безопасности по
- •Метод расчета вероятности наличия рпс на этапе испытаний программного обеспечения вычислительных задач
- •Постановка задачи
- •Обоснование состава множества информативных характеристик
- •Алгоритмы приближенных вычислений вероятностных характеристик наличия в программах рпс
- •Алгоритм a
- •Алгоритм б
- •Обоснование критериев принятия решения о наличии в программе рпс
- •Подходы к исследованию сложных программных комплексов
- •Общие замечания
- •Анализ характеристик программных модулей с помощью управляющего графа
- •Алгоритм а
- •Определение характеристик взаимосвязи модулей и структурной сложности программ с учетом полного числа связей
- •Построение критических путей, подлежащих обязательному тестированию
- •Алгоритм б
Способы тестирования программного обеспечения при испытаниях его на технологическую безопасность
Обобщенные способы анализа программных средств на предмет наличия (отсутствия) элементов разрушающих программных средств Статистические и динамические способы исследования по
Основной особенностью исследования ПО является практическая трудность получения исходных текстов программ. Таким образом, исследователю часто приходится иметь дело с исполняемыми кодами ПО и не очень подробной пользовательской документацией.
Следовательно, одна из важнейших задач тестирования (проверки) программ может быть сформулирована следующим образом: содержит ли данная программа функцию разрушения (нанесения ущерба)?
Данная задача сводится, по сути дела, к задаче исследования программы, задаваемой ее объектным или исполняемым кодом. При постановке последней должны разделяться два этапа.
I. Выделение алгоритма программы (или какой-либо интересующей его части) и представление его на языке, удобном для последующего анализа (обычно это язык высокого уровня).
II. Семантический анализ полученного алгоритма для ответа на интересующие вопросы, например, о правильности программы, степени ее надежности, или наличия в ней непротоколированных (недекларированных) функций.
Задача первого этапа решается известными методами дизассемблирования.
Все средства исследования ПО можно разбить на 2 класса: статическиеидинамические. Первые оперируют исходным кодом программы как данными и строят ее алгоритм без исполнения, вторые же изучают программу, интерпретируя ее в реальной или виртуальной вычислительной среде. Отсюда следует, что первые являются более универсальными в том смысле, что теоретически могут получить алгоритм всей программы, в том числе и тех блоков, которые никогда не получат управления. Динамические средства могут строить алгоритм программы только на основании конкретной ее трассы, полученной при определенных входных данных. Поэтому задача получения полного алгоритма программы в этом случае эквивалентна построению исчерпывающего набора текстов для подтверждения правильности программы, что практически невозможно, и вообще при динамическом исследовании можно говорить только о построении некоторой части алгоритма.
Два наиболее известных типа программ, предназначенных для исследования ПО, как раз и относятся к разным классам: это отладчик (динамическое средство) и дизассемблер (средство статистического исследования). Если первый широко применяется пользователем для отладки собственных программ и задач построения алгоритма для него вторичны и реализуются самим пользователем, то второй предназначен исключительно для их решения и формирует на выходе ассемблерный текст алгоритма.
Помимо этих двух основных инструментов исследования, можно использовать:
«дискомпиляторы», генерирующие из исполняемого кода программу на языке высокого уровня;
«трассировщики», сначала запоминающие каждую инструкцию, проходящую через процессор, а затем переводящие набор инструкций в форму, удобную для статического исследования, автоматически выделяя циклы, подпрограммы и т.п.,
«следящие системы», запоминающие и анализирующие трассу уже не инструкции, а других характеристик, например вызванных программой прерывания.