Разработанная авторами базы программа позволяет автоматизировать процесс тестирования алгоритмов детектирования лиц людей и получить стандартизованные графические результаты для их сравнения. В ходе эксперимента для алгоритма Виола-Джонса устанавливались параметры, аналогичные описанным выше, изменялся только коэффициент группировки в пределах от 1 до 7. Полученные результаты приведены на рис. 4.
Видно, что описанная в статье реализация алгоритма на GPU немного проигрывает своему аналогу на центральном процессоре по количеству обнаруженных лиц. Однако, как упоминалось выше, при анализе видеопотока в отличие от статичных изображений такой производитель-
ности детектора достаточно, чтобы не пропустить ни одного человека в зоне контроля. Полученные результаты демонстрируют, что предложенный подход к адаптации алгоритма Виола-Джонса для графического ускорителя применим на практике и успешно конкурирует с ранее описанными подходами.
В статье предложен оригинальный вариант алгоритма для детектирования лиц людей на изображении с использованием графических ускорителей. Данный алгоритм проверен на практике в реальных условиях и подтвердил свою работоспособность при анализе видеопотока высокого разрешения в реальном времени.
список литературы
1. Аракелян, С.М. Аппаратно-программный комплекс автоматизированного распознавания и биометрической идентификации людей [Текст] / С.М. Аракелян, А.С. Голубев, А.В. Духанов [и др.] // Телема-тика'2010: Тр. XVII Всерос. науч.-метод. конф. -2010. -С. 253-254.
2. Квасов, Д.С. Обнаружение и идентификация лиц на растровом изображении с применением метода Виолы и Джонса [Текст] / Д.С. Квасов, И.И. Зиновьев, И.Г. Кокорин [и др.] // Телематика'2010: Тр. XVII Всерос. науч.-метод. конф. -2010. -С. 253-254.
3. Кудряшов, П.П. Быстрый поиск человеческих лиц на изображениях [Текст] / П.П. Кудряшов, С.А. Фо-менков // Вестник компьютерных и информационных технологий. -2007. -№7. -С. 14-17.
4. Degtyarev, N. Comparative Testing of Face Detection Algorithms [Текст] / N. Degtyarev, O. Seredin // In Proc. ICISP. -2010. -P. 200-209.
5. Hefenbrock, D. Accelerating Viola-Jones Face Detection to FPGA-Level Using GPUs [Текст] / D. Hefenbrock, J. Oberg, N. Thanh [et al.] // In Proc. FCCM. -2010. -P. 11-18.
6. Jain, V. FDDB: A Benchmark for Face Detection in Unconstrained Settings. [Электронный ресурс] / V. Jain, E. Learned-Miller // Technical Report UM-CS-2010-009. -Dept. of Computer Science, University of Massachusetts, Amherst, 2010.
7. Viola, P. Robust real-time face detection [Текст] / P. Viola, M. Jones // International J. of computer vision. -2004. -Vol. 57 (2). -P. 137-154.
УДК 004.056.53
И.Ю. Брык, Д.В. Кетов, С.В. Купреенко
динамический контроль целостности программ и процессов межсетевых экранов
На современном этапе развития информационно-коммуникационных технологий (ИКТ) проблемы обеспечения информационной безопасности особо актуальны. Возрастающая сложность программных приложений, которые все чаще приобретают распределенный характер, не позволяет эффективно контролировать процессы, происходящие в компьютерной системе. В этих условиях концепция безопасности «разре-
шено все, что не запрещено» становится неэффективной, т. к. для современных информационных систем и распределенных вычислительных систем объем понятия «не запрещено» критически возрастает и динамически изменяется. Компьютерная система как часть сетевой среды становится уязвимой перед процессами, порождаемыми различными приложениями в рамках информационного взаимодействия. Наличие уязвимостей
в системе защиты как отдельных компьютеров, так и корпоративных информационных систем, привело к развитию подпольного бизнеса создателей различных вирусов и инфраструктуры для их организованного распространения с помощью компьютеров - «зомби», разрушительные ресурсы которых могут активизироваться в случайные или заранее выбранные моменты времени.
В связи с этим особую актуальность приобретают задачи разработки технологий информационной безопасности отвечающих принципу: «запрещено все, что не разрешено явно». В рамках данного принципа в статье развивается подход, направленный на повышение эффективности использования межсетевых экранов за счет их защиты от атак и неавторизованных воздействий с помощью системы контроля целостности программ и процессов, используемых для фильтрации трафика.
Целостность программ и процессов
Понятие целостности процесса не является строго определенным, как и понятия ее статического и динамического контроля. Стандарты [1, 2] определяют целостность ресурсов информационной системы как такое состояние ресурсов информационной системы, при котором их изменение осуществляется только преднамеренно субъектами, имеющими на него право, при этом сохраняются их состав, содержание и организация взаимодействия.
В силу того, что операционная система межсетевого экрана является частным случаем информационной системы, а ее программы и процессы - частным случаем ее ресурсов, то понятия целостности программ и процессов считаются определенными.
Статическая целостность. Анализ нормативных документов, предъявляющих требования к межсетевым экранам, показывает, что под статическим контролем целостности понимается однократный анализ (на этапе запуска и/или загрузки в процесс) неизменности байтового набора программ (исполняемых файлов и динамических библиотек) на основе сверки вычисляемых значений контрольных сумм этого набора с хранимыми эталонными значениями.
Динамическая целостность. Под динамическим контролем целостности в нормативных документах понимается анализ целостности процессов во времени при их функционировании.
Контроль целостности. Следует уточнить, что рассматриваемые далее механизмы обеспечения контроля целостности рассматривают понятие контроля (не ограниченное ни стандартами, ни нормативными документами) в двух смыслах: проактивные механизмы, направленные на предотвращение нарушения целостности программ и процессов;
реактивные механизмы, направленные на своевременное обнаружение нарушений целостности программ и процессов.
Известные результаты анализа нарушений целостности программ и процессов показывают, что существует три причины, по которым может наблюдаться изменение состава, содержания и/ или организации взаимодействия программ и процессов:
отсутствие в операционной системе МЭ исходных средств реализации КЦ и ИПС, например механизмов дискреционного и/или мандатного разграничения доступа;
некорректность параметров конфигурации МЭ, установленных системным администратором;
наличие ошибок в ядре операционной системы МЭ и прикладных программах и библиотеках.
Третья причина является в задаче контроля целостности определяющей потому, что заранее неизвестно где и при каких обстоятельствах ошибка в программах системы может привести к нарушению ее целостности, поэтому эту предпосылку при выборе механизмов контроля целостности необходимо считать первичной, т. к. широко известно [3, 4], что именно ошибки в программах приводят к нарушению целостности как в смысле изменения сегментов данных программ, так и в смысле изменения ее сегментов кода, что приводит к несанкционированному изменению содержимого и выполнению несанкционированного кода (изменение организации взаимодействия программ и процессов) соответственно.
Анализ предметной области и известных решений
Поиск и анализ известных и реализованных на практике [3, 4] решений и их свойств показал, что один из самых эффективных проактивных способов контроля целостности процессов - принцип WAX, исключающий возможность изменения (записи, Write) в исполняемые страницы памяти процесса, подлежащие исполнению (eXecute), и исключающий возможность исполнения страниц
памяти процесса, подлежащих записи. Такой механизм позволяет эффективно защищать сегмент кода процесса и данных, доступных для чтения, от модификации вообще (и, как следствие, запуска чужеродного кода), сегмент стека от запуска чужеродного кода, но не решает задач противодействия модификации несанкционированным образом, сегментов стека, данных, доступных для чтения и записи, и кучи.
Случайные сдвиги адресного пространства - еще один проактивный механизм, предлагающий случайное размещение программных объектов в памяти процесса, нарушение целостности которых является целью злоумышленника.
Среди реактивных способов контроля целостности известен механизм размещения в стеке и/ или куче так называемых canary words - контрольных закладок непосредственно перед выполнением контролируемых функций и проверке значения закладок после возврата из них.
Таким образом, для динамического контроля целостности процесса в проактивном смысле эффективно могут быть использованы такие известные механизмы, как WAX и случайные сдвиги адресного пространства, а в реактивном - контрольные закладки.
В работе [3] описывается механизм проверки контрольных сумм файлов программных средств, загружаемых в процесс при запуске программы и/ или загрузке динамической библиотеки, что может быть использовано для статического контроля целостности.
Модель целостности программ и процессов
Для уточнения понятия целостности про-
грамм и процессов во времени и его формализации необходимо более детально рассмотреть процедуры, происходящие при запуске программы, ее превращении в процесс, функционирования самого процесса во времени взаимодействия программы, выполняющейся в процессе с ресурсами операционной системы.
На рисунке изображена процедура загрузки секций программ (исполняемых файлов и динамических библиотек) в сегменты виртуальной памяти процесса, при этом можно семантически выделить несколько классов внутренних объектов программы и процесса:
НИ - класс неизменяющихся объектов - секций и сегментов;
И - класс изменяющихся объектов - секций и сегментов;
НВ - класс невыполняющихся объектов - секций и сегментов;
В - класс выполняющихся объектов - секций и сегментов.
В силу определений целостности как требования к сохранению организации взаимодействия для процессов это приводит к требованию сохранения принадлежности объекта к своему классу.
Для класса неизменяющихся объектов (секций программ и сегментов процесса), динамический контроль целостности может быть осуществлен так же, как и статический контроль - проверкой значений вычисляемых контрольных сумм их байтового набора с хранимыми эталонами, производимой в определенные моменты времени или с определенной периодичностью.
Для изменяющихся объектов, например сегментов кучи (HEAP) и стека (STACK) вычислять
Процедура загрузки секций программ в сегменты визуальной памяти процессора
контрольные суммы полного байтового набора сегмента не имеет смысла, поэтому необходимо контролировать (в определенные моменты времени или с определенной периодичностью) различные подмножества полного байтового набора по отдельности, адекватно их смысловому назначению во времени.
После загрузки программы и ее библиотек в процессе начинает выполняться одна или несколько параллельных или псевдопараллельных последовательностей инструкций - потоков (нитей), которые без контроля со стороны операционной системы (и, как следствие, без участия механизмов дискреционного и/или мандатного разграничения доступа) имеют прямой и неконтролируемый доступ к любым байтам виртуальной памяти всего процесса, но не имеют прямого доступа к любым ресурсам операционной системы - файлам, другим процессам и т. д.
Для доступа к ресурсам используется интерфейс и механизм системных вызовов, на уровне которого и размещается (дискреционный и/или мандатный) контроль доступа потоков к внешним ресурсам, выполняющийся в процессе программы.
Основные типы атак [3, 4] направлены на выполнение несанкционированного кода (путем изменения сегмента текста TEXT или путем выполнения сегментов стека STACK или кучи HEAP) и на подмену (изменение байтовых наборов в памяти сегментов стека STACK, данных RWDATA или кучи HEAP) имен (идентификаторов) ресурсов, к которым атакуемый доверенный процесс имеет санкционированный доступ, или на подмену адресов возврата из подпрограмм (в памяти сегмента стека STACK) для выполнения санкционированного кода процесса с нужными параметрами.
В любом случае успешность атаки определяется возможностью обратиться от лица доверенного процесса к ресурсам операционной системы посредством системного вызова с набором параметров, интересующих злоумышленника.
Таким образом, процесс Ps = (S,D) может быть представлен как совокупность наборов изменяющихся D, неизменяющихся S объектов -сегментов памяти.
Для набора неизменяющихся сегментов S = (Srodata, Stex) его целостность может определяться как L, = I , л I , где I = (f (S ) = е. -
S rodata texp м i sum \ l / l
целостность сегмента i; f (•) - функция расчета
контрольной суммы байтового набора сегмента S; e - хранимый эталон контрольной суммы байтового набора сегмента S .
Для набора изменяющихся сегментов D = = (D , (, D D. > целостность может опреде-
4 rwdata sackt neap' i
ляться как L = I , л I . л I. , где D = (А , Ъ„,
D rwdata stack neap i x P 2
..., Ъ^>; Ъ - контролируемое подмножество полного байтового набора сегмента D.; n1 - количество контролируемых подмножеств сегмента D ; 11 = лj= n,fj (bj) - целостность сегмента D.; fj (•) - логическая функция контроля байтового подмножества Ъ.
Одновременно с этим, процесс Ps = (E, N) может быть представлен как совокупность наборов исполняющихся E и невыполняющихся N объектов - сегментов памяти.
Для набора исполняющихся сегментов E = (S,ex) его целостность может определяться как IE = f(StJ, где fx (•) - логическая функция контроля выполняемости сегмента S.
Для набора невыполняющихся сегментов N = (S , D , D , D > целостность может
х rodata rwdata stack7 heap ' определяться как IN = - fx(SrodaJ л - fJ(Drwdata) Л -f(DS,J л - fx(Dheap).
Целостность всего процесса тогда будет определяться логическим выражением
IP = IS л ID л IE л IN.
Вычисление всех компонент логического выражения, определяющих целостность процесса, нужно производить не чаще, чем при входе в любой системный вызов операционной системы.
Постановка задачи
Учитывая все сказанное выше, задача контроля целостности программ и процессов может быть сформулирована следующим образом.
Для контроля целостности необходимо реализовать
1. Проактивные механизмы:
• невозможность модификации вообще или несанкционированными субъектами (например, потенциально возможным, но чужеродным и несанкционированным кодом внутри процессов) содержимого файлов программных средств (программ и библиотек) и исполняющихся процессов;
• невозможность запуска потенциально возможного, но чужеродного и несанкционированного кода внутри исполняющегося процесса.
2. Реактивные механизмы:
• статический контроль целостности:
Меры обеспечения динамического контроля целостности
Нормативные требования Меры обеспечения
Контроль целостности (исполняемых файлов-источников программ) Подсчет средствами разработки [3] контрольных сумм секций исполняемых (ELF) файлов-источников и цифровое подписывание файлов-источников ключом разработчика
Контроль целостности статический (программ при загрузке и запуске) Проверка модулем ядра [3] валидности контрольных секций исполняемых ELF файлов-источников и валидация цифровых подписей разработчика при загрузке в память процесса
Контроль целостности динамический (процессов операционной системы) Проверка модулем ядра валидности контрольных сумм сегмента текста (программного кода) процесса перед системными вызовами и при переходах процесса в состояние готовности
Изолированная программная среда, контроль запуска явно разрешенных программ (исполняемых файлов-источников) Мандатное разграничение доступа. MAC, Mandatory Acess Control на основе каркаса (framework) TrustedBSD [5] и при помощи модуля ядра, разрешающего запуск программ с верной контрольной суммой и цифровой подписью разработчика
Изолированная программная среда, контроль запуска явно разрешенных программ (машинного кода) Применение принципа WAX (Write исключает eXecute) [4], запрещающего выполнять модифицированные страницы памяти и писать в исполняемые страницы памяти, что исключает исполнение зловредного «кода-из-данных»
обнаружение несанкционированной модификации файлов программных средств (программ и библиотек) при их загрузке в процесс; • динамический контроль целостности:
обнаружение несанкционированных изменений содержимого исполняющегося процесса;
обнаружение несанкционированного запуска чужеродного кода в исполняющемся процессе.
Оценка предлагаемого решения
Для получения общего решения и интегрального эффекта по обеспечению контроля целостности процессов операционной системы межсетевого экрана предлагается реализовать известные, указанные выше механизмы: WЛX и проверку контрольных сумм помещаемых в процесс программ и библиотек - в ядре операционной системы МЭ, контрольные закладки и контрольные суммы - в инструментарии разработчика (компиляторе в частности) программ для операционной
системы МЭ ввести дополнительный механизм динамического контроля целостности исполняющихся процессов операционной системы МЭ: реализовать проверки модулем ядра операционной системы валидности контрольных сумм сегмента текста (программного кода) процесса перед выполнением системных вызовов (табл.)
В статье рассмотрен новый подход к решению задачи обеспечения безопасности функционирования межсетевых экранов (МСЭ) на основе контроля целостности программ и процессов. Построена модель динамической целостности программ и процессов, учитывающая их внутренние свойства и взаимодействие с внешними ресурсами операционной системы.
Произведена формализация задачи обеспечения динамической целостности, предложены способы реализации статического и динамического контроля целостности, основанные на проактив-ных и реактивных механизмах уровня ядра встроенной в МСЭ операционной системы.
список литературы
1. Информационные технологии. Основные термины и определения в области технической защиты информации [Текст] / Р 50.1.053-2005 Рекомендации по стандартизации. -М.: Стандартинформ, 2005.
2. Техническая защита информации. Основные термины и определения [Текст] / Р 50.1.056-2005 Рекомендации по стандартизации. -М.: Стандартинформ, 2006.
3. Gelbart, Olga. SPEE: A Secure Program Execution Environment Tool Using Static and Dynamic Code Verification [Электронный ресурс] / Olga Gelbart, Bha-girath Narahari, Rahul Simha // J. of High Speed Networks.
-2006. -Vol. 15. -№ 1. -P. 21-32. -Режим доступа: http://www.seas.gwu.edu/~simha/research/spee_journal. pdf (дата обращения 01.11.2011)
4. Theo de Raadt. Exploit Mitigation Techniques [Электронный ресурс] / de Raadt Theo // AUUG 04, 2004. -Режим доступа: http://openbsd.org/papers/auug04/ index.html (дата обращения 01.11.2011)
5. TrustedBSD Mandatory Access Control (MAC) Framework [Электронный ресурс] / Режим доступа: http://www.trustedbsd.org/mac.html (дата обращения 01.11.2011)