Faire avec Milvus Détecter les virus Android en temps réel pour Trend Micro
La cybersécurité reste une menace persistante pour les particuliers comme pour les entreprises. En 2020, 86 % des entreprises seront de plus en plus préoccupées par la confidentialité des données et seulement 23 % des consommateurs estimeront que leurs données personnelles sont très sûres. Les logiciels malveillants devenant de plus en plus omniprésents et sophistiqués, une approche proactive de la détection des menaces est devenue essentielle. Trend Micro est un leader mondial de la sécurité des nuages hybrides, de la défense des réseaux, de la sécurité des petites entreprises et de la sécurité des points finaux. Pour protéger les dispositifs Android contre les virus, la société a créé Trend Micro Mobile Security, une application mobile qui compare les APK (Android Application Package) du Google Play Store à une base de données de programmes malveillants connus. Le système de détection des virus fonctionne comme suit :
- Les APK externes (progiciel d'application Android) du Google Play Store sont explorés.
- Les logiciels malveillants connus sont convertis en vecteurs et stockés dans Milvus.
- Les nouveaux APK sont également convertis en vecteurs, puis comparés à la base de données des logiciels malveillants à l'aide d'une recherche de similarité.
- Si un vecteur APK est similaire à l'un des vecteurs de logiciels malveillants, l'application fournit aux utilisateurs des informations détaillées sur le virus et son niveau de menace.
Pour fonctionner, le système doit effectuer une recherche de similarité très efficace sur des ensembles massifs de données vectorielles en temps réel. Au départ, Trend Micro utilisait MySQL. Cependant, au fur et à mesure que son activité se développait, le nombre d'APK contenant du code malveillant stockés dans sa base de données augmentait. L'équipe d'algorithmes de l'entreprise a commencé à chercher d'autres solutions de recherche de similarités vectorielles après avoir rapidement dépassé MySQL.
Comparaison des solutions de recherche de similarités vectorielles
Il existe un certain nombre de solutions de recherche de similarités vectorielles, dont beaucoup sont open source. Bien que les circonstances varient d'un projet à l'autre, la plupart des utilisateurs ont intérêt à exploiter une base de données vectorielle conçue pour le traitement et l'analyse de données non structurées plutôt qu'une simple bibliothèque nécessitant une configuration poussée. Nous comparons ci-dessous quelques solutions populaires de recherche de similarités vectorielles et expliquons pourquoi Trend Micro a choisi Milvus.
Faiss
Faiss est une bibliothèque développée par Facebook AI Research qui permet une recherche de similarité et un regroupement efficaces de vecteurs denses. Les algorithmes qu'elle contient recherchent des vecteurs de toute taille dans des ensembles. Faiss est écrit en C++ avec des wrappers pour Python/numpy, et supporte un certain nombre d'index dont IndexFlatL2, IndexFlatIP, HNSW, et IVF.
Bien que Faiss soit un outil incroyablement utile, il a ses limites. Il ne fonctionne que comme une bibliothèque d'algorithmes de base, et non comme une base de données pour gérer des ensembles de données vectorielles. En outre, il n'offre pas de version distribuée, de services de surveillance, de SDK ou de haute disponibilité, qui sont les principales caractéristiques de la plupart des services basés sur le cloud.
Plug-ins basés sur Faiss et d'autres bibliothèques de recherche ANN
Il existe plusieurs plug-ins basés sur Faiss, NMSLIB et d'autres bibliothèques de recherche ANN qui sont conçus pour améliorer la fonctionnalité de base de l'outil sous-jacent qui les alimente. Elasticsearch (ES) est un moteur de recherche basé sur la bibliothèque Lucene avec un certain nombre de plugins de ce type. Vous trouverez ci-dessous un schéma d'architecture d'un plug-in ES :
1.png
La prise en charge intégrée des systèmes distribués est un avantage majeur d'une solution ES. Cela permet aux développeurs de gagner du temps et aux entreprises d'économiser de l'argent grâce au code qu'il n'est pas nécessaire d'écrire. Les plug-ins ES sont techniquement avancés et répandus. Elasticsearch fournit un QueryDSL (langage spécifique au domaine), qui définit des requêtes basées sur JSON et est facile à comprendre. Un ensemble complet de services ES permet d'effectuer des recherches vectorielles/textuelles et de filtrer des données scalaires simultanément.
Amazon, Alibaba et Netease sont quelques grandes entreprises technologiques qui s'appuient actuellement sur les plug-ins Elasticsearch pour la recherche de similarités vectorielles. Les principaux inconvénients de cette solution sont la consommation élevée de mémoire et l'absence de prise en charge de l'optimisation des performances. En revanche, JD.com a développé sa propre solution distribuée basée sur Faiss, appelée Vearch. Cependant, Vearch est encore un projet en phase d'incubation et sa communauté open-source est relativement inactive.
Milvus
Milvus est une base de données vectorielle open-source créée par Zilliz. Elle est très flexible, fiable et très rapide. En encapsulant plusieurs bibliothèques d'index largement adoptées, telles que Faiss, NMSLIB et Annoy, Milvus fournit un ensemble complet d'API intuitives, permettant aux développeurs de choisir le type d'index idéal pour leur scénario. Il fournit également des solutions distribuées et des services de surveillance. Milvus dispose d'une communauté open-source très active et de plus de 5,5 km d'étoiles sur Github.
Milvus surpasse la concurrence
Nous avons compilé un certain nombre de résultats de tests différents provenant des diverses solutions de recherche de similarités vectorielles mentionnées ci-dessus. Comme nous pouvons le voir dans le tableau comparatif suivant, Milvus s'est avéré nettement plus rapide que la concurrence, bien qu'il ait été testé sur un ensemble de données de 1 milliard de vecteurs à 128 dimensions.
Moteur | Performance (ms) | Taille de l'ensemble de données (millions) |
---|---|---|
ES | 600 | 1 |
ES + Alibaba Cloud | 900 | 20 |
Milvus | 27 | 1000+ |
SPTAG | Pas bon | |
ES + nmslib, faiss | 90 | 150 |
Comparaison des solutions de recherche de similarités vectorielles.
Après avoir pesé le pour et le contre de chaque solution, Trend Micro a choisi Milvus pour son modèle de recherche vectorielle. Avec des performances exceptionnelles sur des ensembles de données massifs à l'échelle du milliard, il est évident que la société a choisi Milvus pour un service de sécurité mobile qui nécessite une recherche de similarité vectorielle en temps réel.
Conception d'un système de détection de virus en temps réel
Trend Micro possède plus de 10 millions d'APK malveillants stockés dans sa base de données MySQL, avec 100 000 nouveaux APK ajoutés chaque jour. Le système fonctionne en extrayant et en calculant les valeurs Thash des différents composants d'un fichier APK, puis utilise l'algorithme Sha256 pour le transformer en fichiers binaires et générer des valeurs Sha256 de 256 bits qui différencient l'APK des autres. Étant donné que les valeurs Sha256 varient selon les fichiers APK, un APK peut avoir une valeur Thash combinée et une valeur Sha256 unique.
Les valeurs Sha256 ne servent qu'à différencier les APK, et les valeurs Thash sont utilisées pour la recherche de similarités vectorielles. Des APK similaires peuvent avoir les mêmes valeurs Thash mais des valeurs Sha256 différentes.
Pour détecter les APK contenant un code malveillant, Trend Micro a développé son propre système de récupération des valeurs Thash similaires et des valeurs Sha256 correspondantes. Trend Micro a choisi Milvus pour effectuer une recherche instantanée de similitudes vectorielles sur des ensembles massifs de données vectorielles converties à partir des valeurs Thash. Après l'exécution de la recherche de similitudes, les valeurs Sha256 correspondantes sont interrogées dans MySQL. Une couche de mise en cache Redis est également ajoutée à l'architecture pour faire correspondre les valeurs Thash aux valeurs Sha256, ce qui réduit considérablement le temps d'interrogation.
Le diagramme d'architecture du système de sécurité mobile de Trend Micro est présenté ci-dessous.
image-20210118-022039.png
Le choix d'une métrique de distance appropriée permet d'améliorer les performances de la classification vectorielle et du regroupement. Le tableau suivant présente les mesures de distance et les index correspondants qui fonctionnent avec des vecteurs binaires.
Métriques de distance | Types d'index |
---|---|
- Jaccard - Tanimoto - Hamming | - PLAT - IVF_FLAT |
- Superstructure - Substructure | FLAT |
Mesures de distance et index pour les vecteurs binaires.
Trend Micro convertit les valeurs Thash en vecteurs binaires et les stocke dans Milvus. Pour ce scénario, Trend Micro utilise la distance de Hamming pour comparer les vecteurs.
Milvus prendra bientôt en charge les ID de vecteurs sous forme de chaînes de caractères, et les ID entiers n'auront plus besoin d'être mis en correspondance avec le nom correspondant au format chaîne de caractères. Cela rend la couche de mise en cache Redis inutile et l'architecture du système moins encombrante.
Trend Micro adopte une solution basée sur le cloud et déploie de nombreuses tâches sur Kubernetes. Pour atteindre la haute disponibilité, Trend Micro utilise Mishards, un middleware de sharding de cluster Milvus développé en Python.

Trend Micro sépare le stockage et le calcul de la distance en stockant tous les vecteurs dans l'EFS (Elastic File System) fourni par AWS. Cette pratique est une tendance populaire dans l'industrie. Kubernetes est utilisé pour démarrer plusieurs nœuds de lecture, et développe des services LoadBalancer sur ces nœuds de lecture pour assurer une haute disponibilité.
Pour maintenir la cohérence des données, Mishards ne prend en charge qu'un seul nœud d'écriture. Toutefois, une version distribuée de Milvus prenant en charge plusieurs nœuds d'écriture sera disponible dans les mois à venir.
Fonctions de surveillance et d'alerte
Milvus est compatible avec les systèmes de surveillance construits sur Prometheus et utilise Grafana, une plateforme open-source pour l'analyse de séries temporelles, pour visualiser diverses mesures de performance.
Prometheus surveille et stocke les mesures suivantes :
- Mesures de performances Milvus, notamment la vitesse d'insertion, la vitesse d'interrogation et le temps de disponibilité Milvus.
- Mesures des performances du système, notamment l'utilisation du CPU/GPU, le trafic réseau et la vitesse d'accès au disque.
- Mesures de stockage du matériel, notamment la taille des données et le nombre total de fichiers.
Le système de surveillance et d'alerte fonctionne comme suit :
- Un client Milvus envoie des données de mesure personnalisées à Pushgateway.
- La passerelle Pushgateway garantit que les données de mesure éphémères sont envoyées en toute sécurité à Prometheus.
- Prometheus continue à extraire des données de Pushgateway.
- Alertmanager définit le seuil d'alerte pour différentes mesures et déclenche des alarmes par le biais d'e-mails ou de messages.
Performance du système
Quelques mois se sont écoulés depuis le lancement du service ThashSearch basé sur Milvus. Le graphique ci-dessous montre que la latence des requêtes de bout en bout est inférieure à 95 millisecondes.
image-20210118-022116.png
L'insertion est également rapide. Il faut environ 10 secondes pour insérer 3 millions de vecteurs à 192 dimensions. Avec l'aide de Milvus, les performances du système ont pu répondre aux critères de performance définis par Trend Micro.
Ne soyez pas un inconnu
Try Managed Milvus for Free
Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.
Get StartedLike the article? Spread the word