🚀 Prueba Zilliz Cloud, el Milvus completamente gestionado, gratis—¡experimenta un rendimiento 10 veces más rápido! Prueba Ahora>>

milvus-logo
LFAI
  • Home
  • Blog
  • Fabricación con Milvus Detección de virus Android en tiempo real para Trend Micro

Fabricación con Milvus Detección de virus Android en tiempo real para Trend Micro

  • Scenarios
April 23, 2021
milvus

La ciberseguridad sigue siendo una amenaza persistente tanto para los particulares como para las empresas, ya que la preocupación por la privacidad de los datos aumentará para el 86% de las empresas en 2020 y solo el 23% de los consumidores cree que sus datos personales están muy seguros. A medida que el malware se vuelve cada vez más omnipresente y sofisticado, un enfoque proactivo para la detección de amenazas se ha vuelto esencial. Trend Micro es líder mundial en seguridad en la nube híbrida, defensa de redes, seguridad para pequeñas empresas y seguridad para puntos finales. Para proteger los dispositivos Android de los virus, la empresa creó Trend Micro Mobile Security, una aplicación móvil que compara los APK (paquetes de aplicaciones Android) de Google Play Store con una base de datos de malware conocido. El sistema de detección de virus funciona de la siguiente manera

  • Se rastrean los APK (paquete de aplicaciones Android) externos de Google Play Store.
  • El malware conocido se convierte en vectores y se almacena en Milvus.
  • Los nuevos APK también se convierten en vectores y se comparan con la base de datos de malware mediante una búsqueda de similitudes.
  • Si un vector APK es similar a cualquiera de los vectores de malware, la aplicación proporciona a los usuarios información detallada sobre el virus y su nivel de amenaza.

Para funcionar, el sistema tiene que realizar búsquedas de similitud muy eficientes en conjuntos de datos de vectores masivos en tiempo real. Al principio, Trend Micro utilizaba MySQL. Sin embargo, a medida que su negocio crecía, también lo hacía el número de APK con código nefasto almacenados en su base de datos. El equipo de algoritmos de la empresa comenzó a buscar soluciones alternativas de búsqueda de similitud vectorial después de que MySQL quedara rápidamente obsoleto.


Comparación de soluciones de búsqueda de similitud vectorial

Existen varias soluciones de búsqueda de similitud vectorial, muchas de las cuales son de código abierto. Aunque las circunstancias varían de un proyecto a otro, la mayoría de los usuarios se benefician de aprovechar una base de datos vectorial creada para el procesamiento y análisis de datos no estructurados, en lugar de una simple biblioteca que requiere una amplia configuración. A continuación comparamos algunas soluciones populares de búsqueda de similitud vectorial y explicamos por qué Trend Micro eligió Milvus.

Faiss

Faiss es una biblioteca desarrollada por Facebook AI Research que permite la búsqueda eficiente de similitudes y la agrupación de vectores densos. Los algoritmos que contiene buscan vectores de cualquier tamaño en conjuntos. Faiss está escrita en C++ con wrappers para Python/numpy, y admite varios índices, como IndexFlatL2, IndexFlatIP, HNSW e IVF.

Aunque Faiss es una herramienta increíblemente útil, tiene limitaciones. Sólo funciona como una biblioteca básica de algoritmos, no como una base de datos para gestionar conjuntos de datos vectoriales. Además, no ofrece una versión distribuida, servicios de monitorización, SDK o alta disponibilidad, que son las características clave de la mayoría de los servicios basados en la nube.

Plug-ins basados en Faiss y otras bibliotecas de búsqueda RNA

Existen varios complementos creados sobre Faiss, NMSLIB y otras bibliotecas de búsqueda RNA que están diseñados para mejorar la funcionalidad básica de la herramienta subyacente que los alimenta. Elasticsearch (ES) es un motor de búsqueda basado en la biblioteca Lucene con varios plugins de este tipo. A continuación se muestra un diagrama de arquitectura de un complemento de ES:

1.png 1.png

El soporte integrado para sistemas distribuidos es una de las principales ventajas de una solución ES. Esto ahorra tiempo a los desarrolladores y dinero a las empresas gracias al código que no hay que escribir. Los plug-ins de ES son técnicamente avanzados y están muy extendidos. Elasticsearch proporciona un QueryDSL (lenguaje específico de dominio), que define consultas basadas en JSON y es fácil de comprender. Un conjunto completo de servicios ES permite realizar búsquedas vectoriales/textuales y filtrar datos escalares simultáneamente.

Amazon, Alibaba y Netease son algunas de las grandes empresas tecnológicas que actualmente confían en los plug-ins de Elasticsearch para la búsqueda vectorial de similitudes. Los principales inconvenientes de esta solución son el elevado consumo de memoria y la falta de soporte para el ajuste del rendimiento. En cambio, JD.com ha desarrollado su propia solución distribuida basada en Faiss, denominada Vearch. Sin embargo, Vearch sigue siendo un proyecto en fase de incubación y su comunidad de código abierto está relativamente inactiva.

Milvus

Milvus es una base de datos vectorial de código abierto creada por Zilliz. Es muy flexible, fiable y rapidísima. Al encapsular múltiples bibliotecas de índices ampliamente adoptadas, como Faiss, NMSLIB y Annoy, Milvus proporciona un amplio conjunto de API intuitivas, lo que permite a los desarrolladores elegir el tipo de índice ideal para su escenario. También proporciona soluciones distribuidas y servicios de supervisión. Milvus cuenta con una comunidad de código abierto muy activa y más de 5,5K estrellas en Github.

Milvus supera a la competencia

Hemos recopilado una serie de resultados de pruebas diferentes de las distintas soluciones de búsqueda de similitud vectorial mencionadas anteriormente. Como podemos ver en la siguiente tabla comparativa, Milvus fue significativamente más rápido que la competencia a pesar de haber sido probado en un conjunto de datos de 1.000 millones de vectores de 128 dimensiones.

MotorRendimiento (ms)Tamaño del conjunto de datos (millones)
ES6001
ES + Alibaba Cloud90020
Milvus271000+
SPTAGNo es bueno
ES + nmslib, faiss90150
Comparación de soluciones de búsqueda de similitud vectorial.

Tras sopesar los pros y los contras de cada solución, Trend Micro se decantó por Milvus para su modelo de recuperación vectorial. Con un rendimiento excepcional en conjuntos de datos masivos a escala de miles de millones, es obvio por qué la empresa eligió Milvus para un servicio de seguridad móvil que requiere una búsqueda de similitud vectorial en tiempo real.


Diseño de un sistema de detección de virus en tiempo real

Trend Micro tiene más de 10 millones de APK maliciosos almacenados en su base de datos MySQL, con 100.000 nuevos APK añadidos cada día. El sistema funciona extrayendo y calculando los valores Thash de los distintos componentes de un archivo APK y, a continuación, utiliza el algoritmo Sha256 para transformarlo en archivos binarios y generar valores Sha256 de 256 bits que diferencian el APK de los demás. Dado que los valores Sha256 varían con los archivos APK, un APK puede tener un valor Thash combinado y un valor Sha256 único.

Los valores Sha256 sólo se utilizan para diferenciar APKs, y los valores Thash se utilizan para la recuperación de similitud de vectores. APKs similares pueden tener los mismos valores Thash pero diferentes valores Sha256.

Para detectar APK con código malicioso, Trend Micro desarrolló su propio sistema para recuperar valores Thash similares y sus correspondientes valores Sha256. Trend Micro eligió Milvus para realizar una búsqueda instantánea de similitud vectorial en conjuntos de datos vectoriales masivos convertidos a partir de valores Thash. Una vez ejecutada la búsqueda de similitudes, los valores Sha256 correspondientes se consultan en MySQL. También se añade una capa de caché Redis a la arquitectura para asignar valores Thash a valores Sha256, lo que reduce significativamente el tiempo de consulta.

A continuación se muestra el diagrama de arquitectura del sistema de seguridad móvil de Trend Micro.

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


La elección de una métrica de distancia adecuada ayuda a mejorar la clasificación vectorial y el rendimiento de la agrupación. La siguiente tabla muestra las métricas de distancia y los índices correspondientes que funcionan con vectores binarios.

Métrica de distanciaTipos de índices
- Jaccard
- Tanimoto
- Hamming
- PLANO
- IVF_FLAT
- Superestructura
- Subestructura
FLAT
Métricas de distancia e índices para vectores binarios.


Trend Micro convierte los valores Thash en vectores binarios y los almacena en Milvus. Para este escenario, Trend Micro utiliza la distancia Hamming para comparar vectores.

Milvus pronto soportará ID de vectores de cadena, y los ID de enteros no tendrán que ser mapeados al nombre correspondiente en formato de cadena. Esto hace que la capa de caché Redis sea innecesaria y que la arquitectura del sistema sea menos voluminosa.

Trend Micro adopta una solución basada en la nube e implementa muchas tareas en Kubernetes. Para lograr una alta disponibilidad, Trend Micro utiliza Mishards, un middleware de fragmentación de clústeres Milvus desarrollado en Python.

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


Trend Micro separa el almacenamiento y el cálculo de distancias almacenando todos los vectores en el EFS (Elastic File System) proporcionado por AWS. Esta práctica es una tendencia popular en la industria. Kubernetes se utiliza para iniciar múltiples nodos de lectura, y desarrolla servicios LoadBalancer en estos nodos de lectura para garantizar una alta disponibilidad.

Para mantener la coherencia de los datos, Mishards solo admite un nodo de escritura. Sin embargo, una versión distribuida de Milvus con soporte para múltiples nodos de escritura estará disponible en los próximos meses.


Funciones de supervisión y alerta

Milvus es compatible con sistemas de supervisión basados en Prometheus y utiliza Grafana, una plataforma de código abierto para análisis de series temporales, para visualizar diversas métricas de rendimiento.

Prometheus supervisa y almacena las siguientes métricas:

  • Métricas de rendimiento de Milvus, incluida la velocidad de inserción, la velocidad de consulta y el tiempo de actividad de Milvus.
  • Métricas de rendimiento del sistema, incluido el uso de CPU/GPU, el tráfico de red y la velocidad de acceso al disco.
  • Métricas de almacenamiento de hardware, incluido el tamaño de los datos y el número total de archivos.

El sistema de supervisión y alerta funciona de la siguiente manera:

  • Un cliente Milvus envía datos métricos personalizados a Pushgateway.
  • Pushgateway garantiza que los datos métricos efímeros y de corta duración se envíen de forma segura a Prometheus.
  • Prometheus sigue extrayendo datos de Pushgateway.
  • Alertmanager establece el umbral de alerta para diferentes métricas y emite alarmas a través de correos electrónicos o mensajes.


Rendimiento del sistema

Han pasado un par de meses desde que se lanzó por primera vez el servicio ThashSearch basado en Milvus. El siguiente gráfico muestra que la latencia de las consultas de extremo a extremo es inferior a 95 milisegundos.

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


La inserción también es rápida. Se tardan unos 10 segundos en insertar 3 millones de vectores de 192 dimensiones. Con la ayuda de Milvus, el rendimiento del sistema pudo cumplir los criterios de rendimiento establecidos por Trend Micro.


No sea un extraño

  • Encuentre o contribuya a Milvus en GitHub.
  • Interactúe con la comunidad a través de Slack.
  • Conéctese con nosotros en 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

    Sigue Leyendo