RU2622629C2 - Способ поиска пути по дереву - Google Patents

Способ поиска пути по дереву Download PDF

Info

Publication number
RU2622629C2
RU2622629C2 RU2015111418A RU2015111418A RU2622629C2 RU 2622629 C2 RU2622629 C2 RU 2622629C2 RU 2015111418 A RU2015111418 A RU 2015111418A RU 2015111418 A RU2015111418 A RU 2015111418A RU 2622629 C2 RU2622629 C2 RU 2622629C2
Authority
RU
Russia
Prior art keywords
path
tree
mask
search
security application
Prior art date
Application number
RU2015111418A
Other languages
English (en)
Other versions
RU2015111418A (ru
Inventor
Вячеслав Иванович Левченко
Original Assignee
Закрытое акционерное общество "Лаборатория Касперского"
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Закрытое акционерное общество "Лаборатория Касперского" filed Critical Закрытое акционерное общество "Лаборатория Касперского"
Priority to RU2015111418A priority Critical patent/RU2622629C2/ru
Priority to US14/744,270 priority patent/US9875248B2/en
Publication of RU2015111418A publication Critical patent/RU2015111418A/ru
Application granted granted Critical
Publication of RU2622629C2 publication Critical patent/RU2622629C2/ru

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/13File access structures, e.g. distributed indices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures
    • G06F16/9027Trees
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/951Indexing; Web crawling techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/566Dynamic detection, i.e. detection performed at run-time, e.g. emulation, suspicious activities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30018Bit or string instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30021Compare instructions, e.g. Greater-Than, Equal-To, MINMAX
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Bioethics (AREA)
  • Virology (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

Изобретение относится к компьютерной безопасности. Технический результат заключается в обеспечении блокировки приложением безопасности доступа к запрещенным путям, содержащимся в дереве поиска. Предложен способ поиска искомого пути по дереву, содержащему запрещенные пути, доступ к которым блокируется приложением безопасности, в котором создают с помощью приложения безопасности дерево путей; разделяют с помощью приложения безопасности искомый путь на составляющие элементы и для каждого элемента вычисляют количество значащих символов; текущим компонентом искомого пути назначают начальный элемент искомого пути; текущей вершиной назначают корневую вершину дерева; сравнивают текущий компонент искомого пути с потомками текущей вершины, при этом если потомок содержит маску, сначала сравнивается количество значащих символов маски и компонента искомого пути, затем выполняют посимвольное сравнение в случае, если количество значащих символов в маске не больше количества значащих символов компонента искомого пути; выносят решение о нахождении искомого пути в дереве путей; блокируют доступ по искомому пути с помощью приложения безопасности с использованием перехвата API-функций в случае, если искомый путь содержится в дереве путей. 4 ил.

Description

Область техники
Изобретение относится к решениям для поиска информации по дереву, а более конкретно к способам поиска пути по дереву.
Уровень техники
В настоящее время одним из способов защиты компьютера является контроль путей, к которым обращается программное обеспечение. При этом пути могут быть локальными (обращение к локальным каталогам и папкам), реестровыми (обращение к реестру операционной системы), сетевыми (доступ к другим компьютерам или ресурсам интернет). Также следует отметить, что синтаксис путей в зависимости от типа операционной системы и типа файловой системы может изменяться.
Антивирусное приложение, например, может анализировать пути, по которым обращается программа, и принимать решение о небезопасности тех или иных действий программы. Но обычно анализ является трудоемкой задачей, так как любые методы анализа требуют расчетов, а возможности аппаратных ресурсов компьютеров ограничены. В связи с этим можно задавать список разрешенных (или запрещенных) путей. При обращении программы по определенному пути необходимо определить, разрешено ли данное действие. Для этого антивирусное приложение может искать путь, по которому обращается программа, в списке разрешенных путей.
Так как пути в общем случае представляют собой строки, количество разрешенных путей может быть достаточно большим, а приложение может обращаться к сотням и даже тысячам путей, поиск может выполняться долгое время, процессорное время, затраченное на поиск, может превышать время, необходимое для обработки запроса по пути. Для ускорения поиска пути нужно использовать не наборы строк (существующих путей), а другие структуры данных, например деревья.
Сама задача поиска по дереву не нова. Так, заявка US 7403494 описывает поиск по дереву, причем для каждой вершины дерева генерируется ключ. Сам поиск используется для ускорения перенаправления портов в сетевых устройствах.
Заявки US 8880507 и US 7603346 описывают способ поиска длиннейшего соответствия префикса (англ. LPM, Longest Prefix Match) с использованием бинарных деревьев.
Заявка US 8572126 описывает поиск по троичному дереву, в котором могут использоваться регулярные выражения.
Существующие системы и способы не решают задачу поиска различных путей по дереву. Предлагаемый способ выполняет поиск пути по дереву, вершины которого могут содержать маски, описывающие схожие элементы пути.
Сущность изобретения
Технический результат настоящего изобретения заключается в повышении производительности поиска по дереву за счет уменьшения общего количества вершин дерева, по которым осуществляется поиск.
Другой технический результат заключается в обеспечении блокировки приложением безопасности доступа к запрещенным (неразрешенным) путям, содержащимся в дереве поиска.
Согласно одному из вариантов реализации предоставляется способ поиска пути по дереву, в котором: создают дерево путей, при этом каждая вершина дерева может содержать более двух потомков, в вершины дерева помещаются элементы пути, элементы пути содержат по меньшей мере одну маску путей; разделяют искомый путь на составляющие элементы; текущим компонентом пути назначают начальный элемент пути; текущей вершиной назначают корневую вершину дерева; сравнивают текущий элемент пути с потомками текущей вершины; при совпадении текущего элемента пути с одним из потомков текущей вершины текущей вершиной становится потомок, а текущим элементом компонентом пути становится следующий элемент пути; выносят решение о нахождении искомого пути в дереве путей.
Согласно одному из частных вариантов реализации могут быть использованы по меньшей мере следующие маски: обычные, рекурсивные.
Согласно другому частному реализации варианту реализации вершина, содержащая обычную маску, не может иметь потомков.
Согласно еще одному частному варианту реализации вершина, содержащая рекурсивную маску, может иметь потомков.
Согласно еще одному частному варианту реализации две маски не могут описывать один и тот же набор путей.
Согласно еще одному частному варианту реализации при добавлении в дерево новой маски, описывающей более широкий набор путей, чем текущая маска, текущая маска удаляется из дерева со всеми потомками.
Краткое описание чертежей
Дополнительные цели, признаки и преимущества настоящего изобретения будут очевидными из прочтения последующего описания осуществления изобретения со ссылкой на прилагаемые чертежи, на которых:
Фиг. 1 изображает пример работы программного обеспечения на компьютере.
Фиг. 2 изображает пример дерева поиска, содержащего маски путей.
Фиг. 3 отображает способ поиска пути по дереву масок путей.
Фиг.4 представляет пример компьютерной системы общего назначения, на которой может быть реализовано настоящее изобретение.
Описание вариантов осуществления изобретения
Объекты и признаки настоящего изобретения, способы для достижения этих объектов и признаков станут очевидными посредством отсылки к примерным вариантам осуществления. Однако настоящее изобретение не ограничивается примерными вариантами осуществления, раскрытыми ниже, оно может воплощаться в различных видах. Сущность, приведенная в описании, является ничем иным, как конкретными деталями, обеспеченными для помощи специалисту в области техники в исчерпывающем понимании изобретения, и настоящее изобретение определяется только в объеме приложенной формулы.
Фиг. 1 изображает пример работы программного обеспечения на компьютере.
В общем случае компьютер работает под управлением операционной системы 110. Приложения 120 обращаются к различным ресурсам (файлам, веткам реестра, локальным сетевым путям). Для компьютеров (домашних или находящихся внутри корпоративной сети) могут быть определены правила и политики безопасности 170, в которых каждое приложение имеет свой определенный набор путей, по которым разрешен доступ. Приложение безопасности (например, антивирусное приложение) 160 может наблюдать за другими приложениями 120 и сравнивать пути, к которым обращаются приложения, а при возникновении нарушений политик безопасности приложениями блокировать доступ этих приложений к ресурсам по неразрешенным путям.
В частном случае количество путей, контролируемых приложением безопасности, ограничено. Однако оно может быть достаточно большим. Также политики безопасности могут содержать как правила, содержащие только разрешенные пути, так и правила, содержащие запрещенные пути. Пути могут представлять собой:
- локальные пути к файлам и каталогам 130 (в зависимости от типа устройства и операционной системы формат путей может отличаться);
- пути к веткам реестра 140;
- локальные сетевые пути 150;
- адреса ресурсов интернет 155;
- пути к определенным сервисам и серверам (например, строка связи с базой данных 165 на SQL-сервере);
- любые другие пути и адреса, которые можно представить в виде форматированной строки.
Пути, разрешенные или запрещенные для приложения, могут быть описаны в базе данных или в конфигурационном файле приложения безопасности 180. Зачастую множество путей содержит пути из одного каталога, которые могут быть описаны с помощью масок или регулярных выражений. Описание с помощью масок сокращает общее количество путей, контролируемых приложением безопасности 160. Контроль может производиться, например, с использованием перехвата API-функций. Однако количество контролируемых (разрешенных или запрещенных) путей даже в случае использования масок может быть значительным. При линейном последовательном поиске сравнение пути, к которому обращается приложение, со всеми контролируемыми путями занимает значительное время, так как, по сути, является последовательным сравнением строк друг с другом. При этом возможно замедление работы как отдельного приложения 120, так и приложения безопасности 160 или операционной системы 110 в целом. При выполнении требовательных задач, например, при математических расчетах или обработке запросов к базе данных, на компьютере или сервере замедление недопустимо, необходимо решение для быстрого поиска пути, по которому обращается приложение, в множестве разрешенных путей.
Проблема быстрого поиска пути, описанная выше, может быть решена с помощью дерева, содержащего маски путей.
Фиг. 2 изображает пример дерева поиска, содержащего маски путей.
Тип дерева поиска - не бинарное, имеет более двух потомков. Дерево поиска начинается с корневого узла 210, по своим связям представляет дерево имен файлов, где информация об элементах пути располагается в узлах (вершинах) дерева 220. Элемент пути - это строка, содержащая имя отдельного файла, каталога, домена какого-либо уровня. Путь в общем случае состоит из нескольких элементов, соединенных метасимволами -разделителями. Например, путь «C:\Windows\readme.txt» содержит 3 элемента «C:», «Windows», «readme.txt». Метасимволом разделителя элементов пути может выступать «\» или «/» и их комбинации, например, "\\".
В частном варианте реализации дерево путей - это двумерное хранилище данных, которое описывается двухсвязным списком по высоте 230 и односвязными на подуровнях 240.
В дереве для обозначения имен реальных файлов могут использоваться маски имен файлов (например, использующиеся в операционных системах DOS и Windows как аргументы команд утилит командной строки).
В общем случае маска - это строка, содержащая метасимволы. Метасимвол - символ, которым можно заменить любое предопределенное множество других символов.
Метасимволами маски элемента пути могут являться, например, «*» и «?». При этом «*» обозначает группу любых символов, не совпадающих со входным именем при поиске. Метасимвол «?» обозначает один символ, не совпадающий с входным именем при поиске.
В частном варианте реализации дерево может содержать следующие маски:
- «обычные», не рекурсивные, которые описывают элементы пути только на данном уровне дерева 250 (например, маска, описывающая имена файлов, при этом вершина, содержащая данную маску, не будет иметь потомков);
- «рекурсивные», которые описывают элементы пути на данном и дочернем уровнях дерева 260 (например, маска, описывающая имена каталогов, при этом вершина, содержащая данную маску, может иметь потомков).
В одном из вариантов реализации дерево содержит бесконечно много ветвлений, описывающих один и тот же путь к файлу или ресурсу.
То есть, один и тот же путь может быть описан разными масками. Например, путь «C:\Windows\System32\file.txt» может быть описан как с помощью маски «C:\Windows\System32\*.txt», так и с помощью «C:\Windows\System*\file.*».
Указанные маски не взаимоисключающие, однако могут охватывать один и тот же набор файлов. В случае если в дереве существует маска, которая охватывает набор файлов, описываемый добавляемой маской, и добавляемая маска описывает более широкий набор путей, существующая маска удаляется из дерева. Например, если в дереве была описана маска «C:\Windows\System??\*.txt», а добавляется «C:\Windows\System*\*.*», то существующая описанная маска удаляется, а новая добавляется в дерево. То есть, существующая последовательность вершин и листьев, соответствующая описанной маске, удаляется из дерева, а новая последовательность, соответствующая новой маске, добавляется в дерево. С другой стороны, если добавляется более узкая маска по сравнению с существующей в дереве, то структура дерева не меняется.
Фиг. 3 отображает способ поиска пути к файлу по дереву масок путей.
Поиск совпадения искомого пути (путь, который нужно найти в дереве) осуществляется поэлементным сравнением пути от корневого узла дерева. На этапе 310 выделяют элемент искомого пути через поиск до символа разделителя пути (например, символа «\» или «/»). Далее на этапе 320 сравнивают выделенный элемент по длине и точному содержимому с узлами текущего уровня дерева (все дочерние узлы). Далее на этапе 330, если найдено совпадение, но искомый путь больше не содержит компонентов на этапе сравнения 340, совпадение считается полным, и поиск прекращается 350. Иначе текущий дочерний узел становится узлом начала поиска, и происходит переход к шагу 310. Если на этапе 330 точное совпадение не найдено, на этапе 360 элемент искомого пути сравнивается по маске с узлами текущего уровня дерева. Если совпадение по маске не найдено на этапе 370, происходит возврат к этапу 340, если элемент пути последний, то поиск прекращается на этапе 350. Если на этапе 370 найдено совпадение по маске, и существуют дочерние вершины 380, начинается поиск остатка входного пути по дочерним вершинам дерева 390. Начинается такой поиск с выделения нового элемента остатка искомого пути 310. Если на этапе 370 найдено совпадение по маске и отсутствуют дополнительные вершины, а выделенный элемент пути -последний, поиск прекращается на этапе 350. При этом, если элемент искомого пути конечный, а вершина, с которой совпал конечный элемент точно или по маске не имеет дочерних вершин, считается, что совпадение найдено. Если элемент пути не совпал ни точно, ни по маске с вершинами текущего дерева, считается, что совпадение не найдено.
Стоит отметить, что более точная маска имеет приоритет при поиске над более широкой или рекурсивной маской, и такая иерархичная организация масок позволяет максимально быстрым путем найти более точную маску, без перебора обычного связанного списка всех путей масок с со всеми возможными рекурсивными масками. Количество поисков по всему списку равно количеству разделителей компонентов пути.
Среднее время прямого поиска в дереве описывается так:
Т=М*f*D/2, где:
f - среднее время сравнения одного компонента;
М - среднее количество дочерних масок для данной вершины дерева;
D - количество компонентов входного пути.
Время поиска не зависит напрямую от количества масок путей в коллекции, а зависит от среднего количества дочерних масок для данной вершины дерева. Коэффициент М растет гораздо ниже, чем общее количество добавленных в дерево масок точных путей.
В одном из вариантов реализации рекурсивные маски маркируются отдельно, и при рекурсивном поиске сравнивается только этот тип масок. В другом варианте реализации вычисляется количество значащих символов маски на этапе формирования дерева, то есть без метасимволов и разделителей пути. Это число сохраняется для каждой маски. Перед сравнением с элементом входного пути подсчитывается количество значащих символов в строке (длина строки, которая не учитывает разделители компонентов пути). Сравнивается количество значащих символов маски текущего уровня и входного пути, если количество этих символов в маске больше, чем в пути, маска никогда не совпадет, и сравнивать в этом случае маску и входящий путь посимвольно не имеет смысла.
Фиг. 4 представляет пример компьютерной системы общего назначения, персональный компьютер или сервер 20, содержащий центральный процессор 21, системную память 22 и системную шину 23, которая содержит разные системные компоненты, в том числе память, связанную с центральным процессором 21. Системная шина 23 реализована, как любая известная из уровня техники шинная структура, содержащая в свою очередь память шины или контроллер памяти шины, периферийную шину и локальную шину, которая способна взаимодействовать с любой другой шинной архитектурой. Системная память содержит постоянное запоминающее устройство (ПЗУ) 24, память с произвольным доступом (ОЗУ) 25. Основная система ввода/вывода (BIOS) 26, содержит основные процедуры, которые обеспечивают передачу информации между элементами персонального компьютера 20, например, в момент загрузки операционной системы с использованием ПЗУ 24.
Персональный компьютер 20 в свою очередь содержит жесткий диск 27 для чтения и записи данных, привод магнитных дисков 28 для чтения и записи на сменные магнитные диски 29 и оптический привод 30 для чтения и записи на сменные оптические диски 31, такие как CD-ROM, DVD-ROM и иные оптические носители информации. Жесткий диск 27, привод магнитных дисков 28, оптический привод 30 соединены с системной шиной 23 через интерфейс жесткого диска 32, интерфейс магнитных дисков 33 и интерфейс оптического привода 34 соответственно. Приводы и соответствующие компьютерные носители информации представляют собой энергонезависимые средства хранения компьютерных инструкций, структур данных, программных модулей и прочих данных персонального компьютера 20.
Настоящее описание раскрывает реализацию системы, которая использует жесткий диск 27, сменный магнитный диск 29 и сменный оптический диск 31, но следует понимать, что возможно применение иных типов компьютерных носителей информации 56, которые способны хранить данные в доступной для чтения компьютером форме (твердотельные накопители, флеш карты памяти, цифровые диски, память с произвольным доступом (ОЗУ) и т.п.), которые подключены к системной шине 23 через контроллер 55.
Компьютер 20 имеет файловую систему 36, где хранится записанная операционная система 35, а также дополнительные программные приложения 37, другие программные модули 38 и данные программ 39. Пользователь имеет возможность вводить команды и информацию в персональный компьютер 20 посредством устройств ввода (клавиатуры 40, манипулятора «мышь» 42). Могут использоваться другие устройства ввода (не отображены): микрофон, джойстик, игровая консоль, сканнер и т.п. Подобные устройства ввода по своему обычаю подключают к компьютерной системе 20 через последовательный порт 46, который в свою очередь подсоединен к системной шине, но могут быть подключены иным способом, например, при помощи параллельного порта, игрового порта или универсальной последовательной шины (USB). Монитор 47 или иной тип устройства отображения также подсоединен к системной шине 23 через интерфейс, такой как видеоадаптер 48. В дополнение к монитору 47, персональный компьютер может быть оснащен другими периферийными устройствами вывода (не отображены), например, колонками, принтером и т.п.
Персональный компьютер 20 способен работать в сетевом окружении, при этом используется сетевое соединение с другим или несколькими удаленными компьютерами 49. Удаленный компьютер (или компьютеры) 49 являются такими же персональными компьютерами или серверами, которые имеют большинство или все упомянутые элементы, отмеченные ранее при описании существа персонального компьютера 20, представленного на Фиг. 4. В вычислительной сети могут присутствовать также и другие устройства, например, маршрутизаторы, сетевые станции, пиринговые устройства или иные сетевые узлы.
Сетевые соединения могут образовывать локальную вычислительную сеть (LAN) 50 и глобальную вычислительную сеть (WAN). Такие сети применяются в корпоративных компьютерных сетях, внутренних сетях компаний и, как правило, имеют доступ к сети Интернет. В LAN- или WAN-сетях персональный компьютер 20 подключен к локальной сети 50 через сетевой адаптер или сетевой интерфейс 51. При использовании сетей персональный компьютер 20 может использовать модем 54 или иные средства обеспечения связи с глобальной вычислительной сетью, такой как Интернет. Модем 54, который является внутренним или внешним устройством, подключен к системной шине 23 посредством последовательного порта 46. Следует уточнить, что сетевые соединения являются лишь примерными и не обязаны отображать точную конфигурацию сети, т.е. в действительности существуют иные способы установления соединения техническими средствами связи одного компьютера с другим.
В заключение следует отметить, что приведенные в описании сведения являются примерами, которые не ограничивают объем настоящего изобретения, определенного формулой. Специалисту в данной области становится понятным, что могут существовать и другие варианты осуществления настоящего изобретения, согласующиеся с сущностью и объемом настоящего изобретения.

Claims (17)

  1. Способ поиска искомого пути по дереву, содержащему запрещенные пути, доступ к которым блокируется приложением безопасности, в котором:
  2. а) создают с помощью приложения безопасности дерево путей, при этом:
  3. - путь представляет собой форматированную строку;
  4. - в вершины дерева помещаются элементы пути, при этом элементом пути является строка, содержащая по меньшей мере имя файла, каталога или домена;
  5. - элементы пути содержат по меньшей мере одну обычную или рекурсивную маску путей, при этом обычная маска - это маска, которая описывает элементы пути на данном уровне дерева, а рекурсивная маска - это маска, которая описывает элементы пути на данном и дочернем уровнях дерева;
  6. - вершина дерева, в которую помещен элемент пути, содержащий обычную маску, не имеет потомков;
  7. - вершина дерева, в которую помещен элемент пути, содержащий рекурсивную маску, имеет потомков;
  8. - вершина дерева, в которую помещен элемент пути с маской, содержит количество значащих символов;
  9. - при помещении элемента пути в вершину дерева, в случае если в дереве существует маска, которая охватывает набор путей, описываемый добавляемой маской, и добавляемая маска описывает более широкий набор путей, существующая маска удаляется из дерева путей;
  10. б) разделяют с помощью приложения безопасности искомый путь на составляющие элементы и для каждого элемента вычисляют количество значащих символов, при этом искомый путь - это путь, по которому обращается приложение, выявленный приложением безопасности с помощью перехвата API-функций;
  11. в) текущим компонентом искомого пути назначают начальный элемент искомого пути;
  12. г) текущей вершиной назначают корневую вершину дерева;
  13. д) сравнивают текущий компонент искомого пути с потомками текущей вершины, при этом если потомок содержит маску, сначала сравнивается количество значащих символов маски и компонента искомого пути, затем выполняют посимвольное сравнение в случае, если количество значащих символов в маске не больше количества значащих символов компонента искомого пути;
  14. е) при совпадении текущего компонента искомого пути с одним из потомков текущей вершины текущей вершиной становится потомок, для которого выполнилось условие совпадения, а текущим компонентом искомого пути становится следующий элемент искомого пути;
  15. ж) выполняют пункты д) и е) до тех пор, пока не сравнят конечный элемент искомого пути с вершинами дерева;
  16. з) выносят решение о нахождении искомого пути в дереве путей;
  17. и) блокируют доступ по искомому пути с помощью приложения безопасности с использованием перехвата API-функций в случае, если искомый путь содержится в дереве путей.
RU2015111418A 2015-03-31 2015-03-31 Способ поиска пути по дереву RU2622629C2 (ru)

Priority Applications (2)

Application Number Priority Date Filing Date Title
RU2015111418A RU2622629C2 (ru) 2015-03-31 2015-03-31 Способ поиска пути по дереву
US14/744,270 US9875248B2 (en) 2015-03-31 2015-06-19 System and method for identifying a file path using tree data structure

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
RU2015111418A RU2622629C2 (ru) 2015-03-31 2015-03-31 Способ поиска пути по дереву

Publications (2)

Publication Number Publication Date
RU2015111418A RU2015111418A (ru) 2016-10-20
RU2622629C2 true RU2622629C2 (ru) 2017-06-16

Family

ID=57015964

Family Applications (1)

Application Number Title Priority Date Filing Date
RU2015111418A RU2622629C2 (ru) 2015-03-31 2015-03-31 Способ поиска пути по дереву

Country Status (2)

Country Link
US (1) US9875248B2 (ru)
RU (1) RU2622629C2 (ru)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109710671B (zh) * 2018-12-14 2023-05-30 国云科技股份有限公司 实现数据库操作数据引流的方法及其数据库防火墙系统
CN112100618B (zh) * 2019-06-18 2023-12-29 深信服科技股份有限公司 一种病毒文件检测方法、系统、设备及计算机存储介质
CN112073374B (zh) * 2020-08-05 2023-03-24 长沙市到家悠享网络科技有限公司 信息拦截方法、装置及设备
CN114896192B (zh) * 2022-06-09 2024-04-09 苏州华兴源创科技股份有限公司 接口的匹配方法、装置、计算机设备和存储介质

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5905990A (en) * 1997-06-23 1999-05-18 International Business Machines Corporation File system viewpath mechanism
RU2233473C2 (ru) * 2000-12-22 2004-07-27 Самсунг Электроникс Ко., Лтд. Устройство и способ выполнения высокоскоростного поиска маршрутов протокола интернет и управления таблицами маршрутизации/пересылки
CN101604328A (zh) * 2009-07-06 2009-12-16 深圳市汇海科技开发有限公司 一种互联网信息垂直搜索方法
RU2435214C2 (ru) * 2010-02-01 2011-11-27 Государственное образовательное учреждение высшего профессионального образования Академия Федеральной службы охраны Российской Федерации (Академия ФСО России) Способ быстрого поиска в кодовой книге при векторном квантовании
US20110320498A1 (en) * 2010-06-25 2011-12-29 Educational Testing Service Systems and Methods for Optimizing Very Large N-Gram Collections for Speed and Memory
US20120203753A1 (en) * 2011-02-08 2012-08-09 International Business Machines Corporation Upload manager for use in a pattern matchng accelerator
RU2473960C2 (ru) * 2010-05-26 2013-01-27 Учреждение Российской академии наук Институт проблем управления им. В.А. Трапезникова РАН Способ нахождения максимальных повторяющихся участков последовательности символов конечного алфавита и способ вычисления вспомогательного массива
US8862603B1 (en) * 2010-11-03 2014-10-14 Netlogic Microsystems, Inc. Minimizing state lists for non-deterministic finite state automatons

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5497485A (en) 1993-05-21 1996-03-05 Amalgamated Software Of North America, Inc. Method and apparatus for implementing Q-trees
KR100488414B1 (ko) 2000-12-30 2005-05-11 한국전자통신연구원 다중탐색 트리의 노드 생성 방법, 및 그에 따라 생성된 다중탐색 트리 구조의 자료 탐색 방법
US7185013B2 (en) 2001-04-12 2007-02-27 International Business Machines Corporation Method for constructing and caching a chain of file identifiers and enabling inheritance of resource properties in file systems
US7415463B2 (en) * 2003-05-13 2008-08-19 Cisco Technology, Inc. Programming tree data structures and handling collisions while performing lookup operations
US7603346B1 (en) 2004-07-23 2009-10-13 Netlogic Microsystems, Inc. Integrated search engine devices having pipelined search and b-tree maintenance sub-engines therein
US7831626B1 (en) 2006-11-27 2010-11-09 Netlogic Microsystems, Inc. Integrated search engine devices having a plurality of multi-way trees of search keys therein that share a common root node
US8880507B2 (en) 2010-07-22 2014-11-04 Brocade Communications Systems, Inc. Longest prefix match using binary search tree
US8863232B1 (en) * 2011-02-04 2014-10-14 hopTo Inc. System for and methods of controlling user access to applications and/or programs of a computer

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5905990A (en) * 1997-06-23 1999-05-18 International Business Machines Corporation File system viewpath mechanism
RU2233473C2 (ru) * 2000-12-22 2004-07-27 Самсунг Электроникс Ко., Лтд. Устройство и способ выполнения высокоскоростного поиска маршрутов протокола интернет и управления таблицами маршрутизации/пересылки
CN101604328A (zh) * 2009-07-06 2009-12-16 深圳市汇海科技开发有限公司 一种互联网信息垂直搜索方法
RU2435214C2 (ru) * 2010-02-01 2011-11-27 Государственное образовательное учреждение высшего профессионального образования Академия Федеральной службы охраны Российской Федерации (Академия ФСО России) Способ быстрого поиска в кодовой книге при векторном квантовании
RU2473960C2 (ru) * 2010-05-26 2013-01-27 Учреждение Российской академии наук Институт проблем управления им. В.А. Трапезникова РАН Способ нахождения максимальных повторяющихся участков последовательности символов конечного алфавита и способ вычисления вспомогательного массива
US20110320498A1 (en) * 2010-06-25 2011-12-29 Educational Testing Service Systems and Methods for Optimizing Very Large N-Gram Collections for Speed and Memory
US8862603B1 (en) * 2010-11-03 2014-10-14 Netlogic Microsystems, Inc. Minimizing state lists for non-deterministic finite state automatons
US20120203753A1 (en) * 2011-02-08 2012-08-09 International Business Machines Corporation Upload manager for use in a pattern matchng accelerator

Also Published As

Publication number Publication date
RU2015111418A (ru) 2016-10-20
US9875248B2 (en) 2018-01-23
US20160292416A1 (en) 2016-10-06

Similar Documents

Publication Publication Date Title
US9361332B2 (en) Index record-level locking for file systems using a B+ tree structure
JP5744892B2 (ja) テキストフィルタリングの方法およびシステム
RU2523112C1 (ru) Система и способ выбора оптимального типа антивирусной проверки при доступе к файлу
US10210191B2 (en) Accelerated access to objects in an object store implemented utilizing a file storage system
EP3067814B1 (en) Url matching device, url matching method, and url matching program
US10073876B2 (en) Bloom filter index for device discovery
RU2622629C2 (ru) Способ поиска пути по дереву
JP2005302038A (ja) Bツリー中の連続キーの名前を変更する方法およびシステム
US20200250137A1 (en) Partitioning a distributed filesystem namespace
US20230262096A1 (en) Hardening of cloud security policies
US11599595B2 (en) Determining whether to process identified uniform resource locators
US10482086B2 (en) Identifying similar database queries
RU2634175C2 (ru) Способ выполнения антивирусных проверок
RU2697958C1 (ru) Система и способ обнаружения вредоносной активности на компьютерной системе
US10897483B2 (en) Intrusion detection system for automated determination of IP addresses
US10685134B1 (en) Database proxy service
RU2587424C1 (ru) Способ контроля приложений
RU2724800C1 (ru) Система и способ обнаружения источника вредоносной активности на компьютерной системе
CN106227830A (zh) 存储和读取文件的方法和装置
US9122691B2 (en) System and method for remote file search integrated with network installable file system
US11762984B1 (en) Inbound link handling
Brandao Computer forensics in cloud computing systems
RU2623882C1 (ru) Способ поиска входной строки в дереве поиска с индексацией узлов дерева поиска
RU2620996C1 (ru) Способ поиска входной строки в дереве поиска с индексацией используемых при построении дерева строк
CN111984850A (zh) 一种资源搜索方法及相关装置