УДК: 659.21, 659.22
Абидова Ф.Ш.
ассистент кафедра «Компьютерные системы»
Хамрокулова Г. Т. студент 2 курс
факультет «профессиональное образование в сфере икт»
Темиров А.А. студент магистратуры 1 курс факултет «Компьютерный инжиниринг» Ташкентский университет информационных технологий имени
Мухаммада ал-Хоразмий АЛГОРИТМ БЫСТРОГО СТРОКОВОГО СОПОСТАВЛЕНИЯ
СЕТЕВЫХ СИСТЕМ ОБНАРУЖЕНИЯ ВТОРЖЕНИЙ Аннотация: в статье Одним из областей широко применяющих алгоритмы сопоставления являются системы безопасности. Если алгоритмы сопоставления уже давно и широко используются в системах обнаружения вредоносных программ как вирусы, спамов и т.д., то до недавнего времени алгоритмы стали применятся в обработке сетевых процессов указан ниже.
Ключевые слова: алгоритмы поиска подстроки в строке, сетевые системы обнаружения вторжений, алгоритм последовательного поиска, алгоритм Боейера - Мура, алгоритм хеширования, двоичный алгоритм поиска подстроки.
Abidova F.SH assistant department "Computer systems"
Khamrokulova G. T. student 2 course
faculty "vocational education in the field of ICT"
Temirov A.A.
master student 1 course faculty "Computer Engineering" Tashkent University of Information Technologies named after Muhammad al-Khwarizmi Uzbekistan, Tashkent FAST STRING MAPPING ALGORITHM FOR NETWORK INTRUSION DETECTION SYSTEMS Annotation: in the article One of the areas widely used matching algorithms are security systems. If the matching algorithms have long been widely used in malware detection systems like viruses, spam, etc., until recently, the algorithms began to be used in the processing of network processes listed below.
Keywords: substring search algorithms in a string, network intrusion detection systems, sequential search algorithm, Boeyer-Moore algorithm, hashing algorithm, binary substring search algorithm.
Введение: Алгоритмы поиска подстроки в строке [1] становится необходимым инструментом для следующих приложений: как редактирование документов, поиск нужной информации, обнаружение плагиата, анализ текста, биоинформатика и т.д. При этом, алгоритмы сопоставления все чаще применяются в сетевых системах обнаружения вторжений (ССОВ, NIDS), для выявления нежелательных пакетов (фреймов) передачи данных по телекоммуникационным каналам. На сегодняшний день имеют более пятидесяти алгоритмов сопоставления, наиболее востребованными в данной области являются алгоритмами сигнатурного поиска. Среди алгоритмов сопоставления наиболее широко применяемых в системах обнаружения вторжений (ССОВ) можно выделить следующие: МП, КМП, БМ, ВМН, BNDM, TNDM, АХО-Корасик, Q грамм и т.д. [2, 4].
Популярность алгоритмов сопоставления строк стимулировало специалистов инкапсулировать их во многие языки программирования и распространить в открытых источниках. В этой связи, для реализации поставленной задачи можно без особого затруднения применить одну из них. Однако готовые программы опубликованные в открытых источниках не всегда корректно реализованы и эффективны для реализации поставленной задачи. Это связано с рядом следующих проблем:
- Во-первых, шаблоны правил встречаются в разных размерах, и каждое правило может указывать несколько строковых шаблонов;
- Во-вторых, подпрограммы сопоставления могут иметь требования к памяти или другим аппаратным средствам;
- В-третьих, большинство шаблонов являются символами ASCII, а сетевой трафик в основном включает двоичные данные.
- В-четвертых, иногда для получения корректного результата, требуется сравнительный анализ приоритетов результатов сигнатурой и похожим на сигнатур методов поиска алгоритма, которое достигается во время нескольких совпадений.
Вышеперечисленные причины вынуждают специалистов при реализации ССОВ более глубоко изучать и повторно экспериментируя сравнивать полученные результаты для выбора оптимально эффективного алгоритма сопоставления.
В целях более детального изучении принципов работы и определения наиболее эффективного алгоритма сопоставления строк проведем сравнительный анализ производительности некоторых популярных алгоритмов.
Традиционно ССОВ (NIDS) для умещения времени задержки трафика должны максимально быстро обрабатывать телекоммуникационные пакеты. По этому, при выборе алгоритмов сопоставления для реализации в ССОВ ставится следующие требования к производительности алгоритма:
- время выполнения операции сопоставления;
- аппаратные ресурсы необходимые для выполнения операции сопоставления.
В связи с этим, под термином производительность алгоритма будем подразумевать временные и аппаратные затраты требуемые при сопоставлении строк:
- характеристика времени - определяется величиной затраченного машинного времени при выполнении программы;
- аппаратные затраты - определяются объёмом память машины требуемого при функционировании программы.
Как было упомянуто ранее сигнатурный поиск является широко используемой функцией современных ССОВ. Вместе с тем, считается его эффективная реализация более проще, по сравнению с реализацией алгоритмов нечеткого поиска. Исходя из вышеописанных определений задачу поиска нежелательных пакетов (фреймов) передачи данных по телекоммуникационным каналам по методу сигнатурного сопоставления, математически можно сформулировать в следующем виде: пусть существует некоторый текст t = {t1,t2,...,tn} и требуется найти все вхождения в него шаблонов p = {p1,p2,-,pm}, где
m < n .
Алгоритм последовательного (прямого) поиска (The Brute Force Algorithm) [7,8]. Стратегия алгоритм последовательного поиска заключается в пошаговом сравнении символов текста с шаблоном. На первом этапе алгоритм сопоставляет первый символ текста с первым символом шаблона, второй символ текста со вторым символом подстроки и т.д. В случае идентичности всех символов текста с шаблоном, алгоритм выдает положительный результат в обнаружении шаблона. Иначе шаблон перемешается на один шаг вправо и алгоритм повторяет сопоставление и т. д. (рис.1).
1 I I I i I I I
Текст А В С А В С А А В С А В D
А В С А В т>
ТТТ А в С А в D
а А В С А В D
б А В С А В D
л
о А в С А В D
н А В С А В D
Л Б С А В D
А Б С А Б D
Рис.1. Структурная схема функционирования алгоритма последовательного
поиска
Алгоритм Бойера-Мура (или БМ алгоритм, разработан Робертом Бойертом (Strother Moore) и Дж.С. Муром (Robert S. Boyer), в 1977 году) так же является широко используемым из-за его скорости и эффективности в задачах поиска шаблоном (рис.2.). Быстрота функционирования алгоритма-БМ достигается за счет использования двух эвристических функций позволяющих уменьшит количества операций сопоставления символов. Обе эвристики вызваны несоответствиями [4].
Первая эвристика, обычно называемая эвристикой плохого характера, работает следующим образом: алгоритм основанные на сравнении входного текста T с конечного к начальному (с право на лево) символов шаблона P . Между тем, если несоответствующий символ не отображается в шаблоне поиска, шаблон смещается так, что первый символ в шаблоне будет на одну позицию позже, чем символ несоответствия в данном тексте.
Вторая эвристика, обычно называемая эвристикой хороших суффиксов, работает следующим образом: если в середине шаблона p j обнаружено несоответствие с текстом tt, p - шаблон поиска смещается на p символов, так как не все символы ti не совпадают с символами шаблона p, то есть p ф tt.). В противном случае p сдвигается пока не выполнится условие p = tt или не будет
завершена проверка всего текста.
Анализ функционирования БМ-алгоритма показывает, что для поиска шаблона требуется n количество сопоставлений. В удачном стечении сопоставления, когда последний символ шаблона не совпадает с текстом, количество шагов сравнения равняется o = n/m рисуник 2.
Строка А Б С А F D F А В С А В D
А В С А В Т>
Шаб-
лон А В С А в D
А В с А В D
Рис.2. Структурная схема функционирования БМ - алгоритма Хеширование [9] одно из эффективных методов реализации хранения данных, позволяющий минимизировать время на сопоставление. Стратегия хеширования состоит в присвоении соответствующего натурального числа каждому символу, для которого осуществляется поиск. Это число называется хеш-значением или хеш-кодом (англ. hash - перемешивание) символа.
Работа алгоритма проста. При поиске вначале вычисляется хеш-значение каждого символа, далее алгоритм осуществляет поиск шаблона среди символов с идентичным хеш-значением.
Сгруппированные по хеш-значениям символы, называется хеш-таблицей, а функция сопоставляющая называется хеш-функцией (рис.3.). Математическая формулировка хеш-функции описывается в следующем виде: Hash(T) = t mod N,
где N - число, определяющее количество классов эквивалентности. В качестве примера хеш-таблицы можно указать массив списков. Среднее время поиска символов по алгоритму хеш-таблиц составляет 0(1), время наихудшего случая -
O(N).
Рис.3. Структурная схема функционирования алгоритма хеширования Двоичный алгоритм поиска подстроки (bitap algorithm, shift-or algorithm, разработан 1964 году Балинт Дёмёльки) [10-11]. Суть алгоритма состоит в использовании битового сдвига в поиске шаблона. Для этого алгоритм использует следующую стратегию:
Пусть даны некие p = {p1,p2,...,pm} шаблон, которую требуется найти в t = {tj,t2,...,tn} тексте, где m и n - соответственно размеры шаблона P и исходного
текста T. Строится, как матрица с N х M. Если pj шаблон совпадает с ti -текстом в позициях у - i +1...у, то в соответствующие позиции (',у) матрицы ставится 1, иначе - 0 (Таблица 1).
Таблица 1.
_Пример двоичного алгоритма поиска подстроки_
Строка ГЦ АТ ЦГЦА ГАГА ГТ АТ АЦАГ ТАЦГ
Г 1000 0 10 0 10 10 1000 0 00 1 0 00 1
Ц 0 10 0 0 0 10 000 0 000 0 0 00 0 0 00 0
А 0 0 10 0 00 1 000 0 000 0 0 00 0 0 00 0
Г 0 00 0 0 00 0 1000 000 0 0 00 0 0 00 0
g А 0 00 0 0 00 0 0 10 0 000 0 0 00 0 0 00 0
Ч Г vo Г ее А э г 0 00 0 0 00 0 00 10 000 0 0 00 0 0 00 0
0 00 0 0 00 0 000 1 000 0 0 00 0 0 00 0
0 00 0 0 00 0 000 0 000 0 0 00 0 0 00 0
Операция поиска шаблона считается успешно завершенной, если обнаружена единица в последней строке матрицы. При функционировании программы двоичного алгоритма на 32 разрядных компьютерах можно произвести одновременно 32 операции сравнения, соответственно на 64 разрядных машинах до 64 операций. Вычислительная сложность O = N * M операций с крайне малой константой. Программная реализация алгоритмов и анализ результатов. В открытых источниках можно найти инкапсулированные варианты вышерассмотренных алгоритмов на различных языках программирования С, С++, С#, Java, Python, VB, и т.д. Но в целях объективной оценки функционирования вышерассмотренных алгоритмов, реализуем их на языке С++ и поставим перед ними задачу поиска p = { pI,p2,...,pm} шаблонов из существующего текста т = {tI,t2,...,tn}, где m< n. Объем программного кода реализованных на язык С++ алгоритмов последовательного поиска составило 777 байт, Боейера - Мура-1862 байт, хеширование по сигнатуре-1290 байт, двоичного поиска подстроки (Bitap algorithm, shift-or algorithm)-3217 байт, что является допустимой для внедрения в ССОВ. Тестирование всех реализованных программ было проведено на персональном компьютере Acer, с процессором Intel Core i5, 2,4 Ггц, ОЗУ-4 G6.
В качестве основных параметров оценки производительности алгоритмов определим время затраченное компьютером при выполнении программы и объем ОЗУ машины требуемого для функционирования программы. Результаты эксперимента сравнения алгоритмов сопоставления приведены на таблице 2.
Таблица 2.
Наименование Поиск 10 шаблонов Поиск 50 шаблонов Поиск 100
алгоритмов из заданного текста из заданного текста шаблонов из
заданного текста
Время Объём Время Объём Время Объём
поиска памяти поиска памяти поиска памяти
(мс) (мб) (мс) (мб) (мс) (мб)
Последовательного 0.0918 5,3 0.7248 5,4 2,129 5,4
(прямого) поиска (The
Brute Force Algorithm)
Боейера - Мура 0,1202 5,4 0,6674 5,4 1,6455 5,4
Хеширование по 0,0946 5,4 0,5694 5,4 1,529 5,4
сигнатуре
Двоичный поиск 0,1786 5,4 0,8593 5,4 2,1285 5,4
подстроки (Bitap algorithm, shift-or algorithm)
Заключение. Анализ полученных результатов показывает, что заданный объем P шаблона и текста T существенно влияют на время поиска. Если при поиске шаблонов с маленькими (р = 10) объемами алгоритмы последовательного поиска (0.0918 мс.) и хеширование (0,0946 мс.) показывают хороший результат по сравнению с алгоритмами Боейера - Мура (0,1202 мс.) и согласования строк в двух направлениях (0,1786 мс.), то с увеличением объема шаблонов (р = 100) временные показатели алгоритмов последовательного поиска (2,129 мс.) и согласования строк в двух направлениях (2,1285 мс.) резко ухудшаются. Основной причиной этого является количество операций сопоставления выполняемой программой. При этом, объем требуемого ОЗУ (5,4 мб.) в процессе функционирования программ остается почти неизменным для всех типов алгоритмов. Учитывая результаты эксперимента можно сказать, что для реализации в ССОВ из вышерассмотренных алгоритмов наиболее применим алгоритмы хеширования и Боейера - Мура, так как в телекоммуникационных системах объем потоков протекающих сетевых пакетов весьма высок.
Использованные источники:
1) Кормен, Томас Х., Лейзерсон, Чарльз И., Ривест, Рональд Л., Штайн Клиффорд Алгоритмы: построение и анализ, 3-е издание. Пер. с англ. — М.: Издательский дом "Вильямс", 2014. — 1328 с.: ил.
2) Tobias Marschall, Noemi E. Passing. Representing Pattern Matching Algorithms by Polynomial-Size Automata. URL: https://arxiv.org/pdf/1607.00138.pdf. Дата просмотра 05.10.2017г.
3) Rong-Tai Liu, Nen-Fu Huang, Chih-Hao Chen, Chia-Nan Kao. A Fast string-matching algorithm for Network Processor-Based Intrusion Detection System. ACM
Transactions on Embedded Computing Systems, Vol. 3, No. 3, August 2004. 614-633 P.
4) Boyer R. S., Moore J. S. A fast string searching algorithm // Communications of the ACM. — 1977. — Т. 20, № 10. — С. 762-772.
5). Белоусов А. Дискретная математика [Текст]. - М.: Издательство МГТУ им. Н.Э. Баумана, 2001. - 744 с.
6). Матрос Д. Элементы абстрактной и компьютерной алгебры: Учеб. пособие для студ. педвузов [Текст]. - М.: Издательский центр «Академия», 2004. - 240 с.
7). Kurtz, St. Fundamental Algorithms For A Declarative Pattern Matching System [Текст]. - Bielefeld:. Universität Bielefeld, 1995. - 238 с.
8). Lecro, T. Exact string matching algorithms. URL:http://algolist.manual.ru/. Дата просмотра 05.10.2017г.
9) Кормен, Т., Лейзерсон, Ч., Ривест, Р., Штайн, К. Глава 11. Хеш-таблицы. // Алгоритмы: построение и анализ = Introduction to Algorithms / Под ред. И. В. Красикова. - 2-е изд. - М.: Вильямс, 2005. - 1296 с.
10) Shift Or algorithm. URL: http://www-igm.univ-mlv.fr/~lecroq/string/node6.html. Дата просмотра 05.10.2017г.
УДК 159.9.07
Акрамова Г.А. психолог школа №98 Юнусабадский район ПРОВЕДЕНИЕ КОРРЕКЦИОННОЙ РАБОТЫ С НЕСОВЕРШЕННОЛЕТНИМИ, СКЛОННЫМИ К СУИЦИДАЛЬНОМУ
ПОВЕДЕНИЮ
Аннотация: В данной статье освещено проведение коррекционной работы с несовершеннолетними, склонными к суицидальному поведению.
Ключевые слова: суицид, девиантное поведение, психология, коррекционной работы, профилактика.
Akramova G.A. psychologist School №98 district Yunusabad Uzbekistan, Tashkent city CORRECTIONAL WORK WITH JUVENILES PRONE TO SUICIDAL
BEHAVIOR
Abstract: This article highlights the conduct of correctional work with minors prone to suicidal behavior.
Key words: suicide, deviant behavior, psychology, correctional work, prevention.