🚀 Попробуйте Zilliz Cloud, полностью управляемый Milvus, бесплатно — ощутите 10-кратное увеличение производительности! Попробовать сейчас>

milvus-logo
LFAI
  • Home
  • Blog
  • Работа с Milvus по обнаружению вирусов для Android в режиме реального времени для Trend Micro

Работа с Milvus по обнаружению вирусов для Android в режиме реального времени для Trend Micro

  • Scenarios
April 23, 2021
milvus

Кибербезопасность остается постоянной угрозой как для частных лиц, так и для предприятий: в 2020 году 86 % компаний будут беспокоиться о конфиденциальности данных, и лишь 23 % потребителей считают, что их личные данные очень надежно защищены. Поскольку вредоносное ПО становится все более вездесущим и изощренным, проактивный подход к обнаружению угроз становится крайне важным. Trend Micro - мировой лидер в области гибридной "облачной" безопасности, сетевой защиты, безопасности малого бизнеса и защиты конечных точек. Для защиты Android-устройств от вирусов компания создала Trend Micro Mobile Security - мобильное приложение, которое сравнивает APK (пакет приложений для Android) из магазина Google Play с базой данных известных вредоносных программ. Система обнаружения вирусов работает следующим образом:

  • Просматриваются внешние APK (пакеты приложений для Android) из Google Play Store.
  • Известные вредоносные программы преобразуются в векторы и сохраняются в Milvus.
  • Новые APK также преобразуются в векторы, а затем сравниваются с базой данных вредоносных программ с помощью поиска сходства.
  • Если вектор APK похож на какой-либо из векторов вредоносного ПО, приложение предоставляет пользователям подробную информацию о вирусе и уровне его опасности.

Чтобы система работала, она должна выполнять высокоэффективный поиск сходства на огромных массивах векторных данных в режиме реального времени. Изначально Trend Micro использовала MySQL. Однако по мере расширения бизнеса компании росло и количество APK с вредоносным кодом, хранящихся в ее базе данных. Команда разработчиков алгоритмов компании начала искать альтернативные решения для векторного поиска сходства, быстро переросшие MySQL.


Сравнение решений для поиска векторного сходства

Существует множество решений для поиска векторного сходства, многие из которых имеют открытый исходный код. Хотя в разных проектах все зависит от обстоятельств, большинство пользователей выигрывают от использования векторной базы данных, созданной для обработки неструктурированных данных и аналитики, а не простой библиотеки, требующей обширной настройки. Ниже мы сравним несколько популярных решений для поиска векторного сходства и объясним, почему компания Trend Micro выбрала именно Milvus.

Faiss

Faiss - это библиотека, разработанная Facebook AI Research, которая обеспечивает эффективный поиск сходства и кластеризацию плотных векторов. Содержащиеся в ней алгоритмы ищут векторы любого размера в наборах. Faiss написана на C++ с обертками для Python/numpy и поддерживает ряд индексов, включая IndexFlatL2, IndexFlatIP, HNSW и IVF.

Хотя Faiss - невероятно полезный инструмент, у него есть ограничения. Он работает только как базовая библиотека алгоритмов, а не как база данных для управления векторными наборами данных. Кроме того, в нем нет распределенной версии, сервисов мониторинга, SDK и высокой доступности, которые являются ключевыми характеристиками большинства облачных сервисов.

Плагины на основе Faiss и других библиотек поиска ANN

Существует несколько плагинов, созданных на основе Faiss, NMSLIB и других библиотек ANN-поиска, которые призваны расширить базовую функциональность базового инструмента, на котором они основаны. Elasticsearch (ES) - это поисковая система, основанная на библиотеке Lucene и имеющая ряд подобных плагинов. Ниже приведена схема архитектуры плагина для ES:

1.png 1.png

Встроенная поддержка распределенных систем - главное преимущество ES-решения. Это экономит время разработчиков и деньги компаний благодаря коду, который не нужно писать. ES-плагины технически совершенны и широко распространены. Elasticsearch предоставляет QueryDSL (язык, специфичный для домена), который определяет запросы на основе JSON и прост для восприятия. Полный набор сервисов ES позволяет одновременно вести векторный/текстовый поиск и фильтровать скалярные данные.

Amazon, Alibaba и Netease - вот несколько крупных технологических компаний, которые в настоящее время используют плагины Elasticsearch для поиска векторного сходства. Основными недостатками этого решения являются большое потребление памяти и отсутствие поддержки настройки производительности. В отличие от них, компания JD.com разработала собственное распределенное решение на основе Faiss под названием Vearch. Однако Vearch все еще находится на стадии инкубации, а сообщество разработчиков с открытым исходным кодом относительно неактивно.

Milvus

Milvus - это векторная база данных с открытым исходным кодом, созданная компанией Zilliz. Она отличается высокой гибкостью, надежностью и молниеносной скоростью. Инкапсулируя несколько широко распространенных библиотек индексов, таких как Faiss, NMSLIB и Annoy, Milvus предоставляет полный набор интуитивно понятных API, позволяя разработчикам выбрать идеальный тип индекса для своего сценария. Он также предоставляет распределенные решения и услуги мониторинга. Milvus имеет активное сообщество разработчиков с открытым исходным кодом и более 5,5 тыс. звезд на Github.

Milvus превосходит конкурентов

Мы собрали результаты тестов различных решений для поиска векторного сходства, упомянутых выше. Как видно из следующей сравнительной таблицы, Milvus оказался значительно быстрее конкурентов, несмотря на то, что тестировался на наборе данных из 1 миллиарда 128-мерных векторов.

ДвижокПроизводительность (мс)Размер набора данных (млн)
ES6001
ES + Alibaba Cloud90020
Milvus271000+
SPTAGНе очень хорошо
ES + nmslib, faiss90150
Сравнение решений для поиска векторного сходства.

Взвесив все "за" и "против" каждого решения, Trend Micro остановилась на Milvus для своей модели векторного поиска. Благодаря исключительной производительности при работе с массивными, миллиардными наборами данных очевидно, почему компания выбрала Milvus для службы мобильной безопасности, требующей поиска векторных сходств в режиме реального времени.


Разработка системы для обнаружения вирусов в режиме реального времени

В базе данных MySQL компании Trend Micro хранится более 10 миллионов вредоносных APK, и каждый день добавляется 100 тысяч новых APK. Система работает по принципу извлечения и вычисления значений Thash различных компонентов APK-файла, затем с помощью алгоритма Sha256 преобразует их в двоичные файлы и генерирует 256-битные значения Sha256, которые отличают APK от других. Поскольку значения Sha256 варьируются в APK-файлах, один APK может иметь одно комбинированное значение Thash и одно уникальное значение Sha256.

Значения Sha256 используются только для различения APK, а значения Thash - для поиска векторного сходства. Похожие APK могут иметь одинаковые значения Thash, но разные значения Sha256.

Для обнаружения APK с вредоносным кодом компания Trend Micro разработала собственную систему поиска схожих значений Thash и соответствующих им значений Sha256. Trend Micro выбрала Milvus для проведения мгновенного поиска векторного сходства в массивных векторных массивах данных, преобразованных из значений Thash. После выполнения поиска сходства соответствующие значения Sha256 запрашиваются в MySQL. В архитектуру также добавлен слой кэширования Redis для сопоставления значений Thash со значениями Sha256, что значительно сокращает время выполнения запросов.

Ниже приведена схема архитектуры системы мобильной безопасности Trend Micro.

image-20210118-022039.png image-20210118-022039.png


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

Метрика расстоянияТипы индексов
- Жаккард
- Танимото
- Хэмминг
- ПЛОСКИЙ
- IVF_FLAT
- Суперструктура
- Субструктура
FLAT
Метрики расстояний и индексы для бинарных векторов.


Trend Micro преобразует значения Thash в двоичные векторы и хранит их в Milvus. В данном сценарии Trend Micro использует расстояние Хэмминга для сравнения векторов.

Вскоре Milvus будет поддерживать строковые идентификаторы векторов, и целочисленные идентификаторы не нужно будет сопоставлять с соответствующим именем в строковом формате. Это сделает ненужным слой кэширования Redis, а архитектуру системы - менее громоздкой.

Trend Micro использует "облачное" решение и развертывает многие задачи на Kubernetes. Для обеспечения высокой доступности Trend Micro использует Mishards, промежуточное ПО для шардинга кластеров Milvus, разработанное на языке Python.

![image-20210118-022104.png](https://assets.zilliz.com/image_20210118_022104_3001950ee8.png "Mishards architecture in Milvus.)


Trend Micro разделяет хранение и расчет расстояния, храня все векторы в файловой системе EFS (Elastic File System), предоставляемой AWS. Такая практика является популярным трендом в отрасли. Kubernetes используется для запуска нескольких узлов чтения, а также для развития служб LoadBalancer на этих узлах чтения для обеспечения высокой доступности.

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


Функции мониторинга и оповещения

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

Prometheus отслеживает и хранит следующие метрики:

  • Показатели производительности Milvus, включая скорость вставки, скорость запросов и время работы Milvus.
  • Показатели производительности системы, включая использование CPU/GPU, сетевой трафик и скорость доступа к диску.
  • Показатели аппаратного хранилища, включая размер данных и общее количество файлов.

Система мониторинга и оповещения работает следующим образом:

  • Клиент Milvus передает настраиваемые данные метрик на Pushgateway.
  • Pushgateway обеспечивает безопасную отправку недолговечных, эфемерных метрических данных в Prometheus.
  • Prometheus продолжает получать данные из Pushgateway.
  • Alertmanager устанавливает порог оповещения для различных метрик и поднимает тревогу с помощью электронной почты или сообщений.


Производительность системы

Прошло несколько месяцев с момента запуска сервиса ThashSearch, построенного на Milvus. На графике ниже видно, что время ожидания сквозного запроса составляет менее 95 миллисекунд.

image-20210118-022116.png image-20210118-022116.png


Вставка также выполняется быстро. Для вставки 3 миллионов 192-мерных векторов требуется около 10 секунд. С помощью Milvus производительность системы удалось привести в соответствие с критериями производительности, установленными Trend Micro.


Не будьте чужаком

  • Найдите Milvus на GitHub и внесите в него свой вклад.
  • Общайтесь с сообществом через Slack.
  • Общайтесь с нами в Twitter.

    Try Managed Milvus for Free

    Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.

    Get Started

    Like the article? Spread the word

    Продолжить чтение