Информационно-безопасные системы. Анализ проблемы: Учебное пособие, страница 15

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

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

4.3. Принципы и алгоритмы идентификации некоторых типов закладок

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

В соответствии с системной характеристикой моделей угроз (см. табл.4.1) можно сформулировать следующие принципы:

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

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

-  формирование алгоритма для отдельных частей программы на основе:

а) решения обратной задачи программирования;

б) сравнения с "аналитическим эталоном";

в) других способов.

Проблема решения задачи а), часто называемая дизассемблированием, может иметь весьма различные формы и по своей сути требует построения процедуры "детранслирования".

Решение задачи на основе принципа б) по сути приводит к необходимости построения аналитической модели алгоритма путем создания исчисления, например, сведения предикатных соотношений к "прозрачным" математическим конструкциям. Решение подобной задачи требует определенной работы и возникает альтернатива:

-  программировать в произвольном стиле;

-  строить изначально "прозрачные" алгоритмы на основе исключения предикатов.

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

5. ОБЪЕКТНО-ОРИЕНТИРОВАННЫЙ ПОДХОД К РАЗРАБОТКЕ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ ПОВЫШЕННОЙ БЕЗОПАСНОСТИ

5.1. Особенности выявления закладок в ПО, созданном средствами низкого уровня

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

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