Realizzazione con Milvus Rilevamento di virus Android in tempo reale per Trend Micro
La sicurezza informatica rimane una minaccia persistente sia per i privati che per le aziende, con l'aumento delle preoccupazioni sulla privacy dei dati per l'86% delle aziende nel 2020 e solo il 23% dei consumatori che ritiene che i propri dati personali siano molto sicuri. Poiché le minacce informatiche diventano sempre più onnipresenti e sofisticate, un approccio proattivo al rilevamento delle minacce è diventato essenziale. Trend Micro è leader mondiale nella sicurezza del cloud ibrido, nella difesa della rete, nella sicurezza delle piccole imprese e nella sicurezza degli endpoint. Per proteggere i dispositivi Android dai virus, l'azienda ha creato Trend Micro Mobile Security, un'applicazione mobile che confronta gli APK (Android Application Package) del Google Play Store con un database di malware noti. Il sistema di rilevamento dei virus funziona come segue:
- Gli APK (pacchetti di applicazioni Android) esterni del Google Play Store vengono scansionati.
- Il malware noto viene convertito in vettori e memorizzato in Milvus.
- Anche i nuovi APK vengono convertiti in vettori e poi confrontati con il database del malware utilizzando la ricerca di similarità .
- Se un vettore APK è simile a uno qualsiasi dei vettori di malware, l'applicazione fornisce agli utenti informazioni dettagliate sul virus e sul suo livello di minaccia.
Per funzionare, il sistema deve eseguire una ricerca di similarità altamente efficiente su enormi set di dati di vettori in tempo reale. Inizialmente, Trend Micro utilizzava MySQL. Tuttavia, con l'espandersi dell'attività , è cresciuto anche il numero di APK con codice nocivo memorizzati nel database. Il team di algoritmi dell'azienda ha iniziato a cercare soluzioni alternative per la ricerca di somiglianze vettoriali dopo aver rapidamente superato MySQL.
Soluzioni di ricerca per similarità vettoriale a confronto
Esistono diverse soluzioni di ricerca per similarità vettoriale, molte delle quali sono open source. Anche se le circostanze variano da progetto a progetto, la maggior parte degli utenti trae vantaggio dall'utilizzo di un database vettoriale costruito per l'elaborazione e l'analisi dei dati non strutturati, piuttosto che da una semplice libreria che richiede una configurazione estesa. Di seguito mettiamo a confronto alcune popolari soluzioni di ricerca per similarità vettoriale e spieghiamo perché Trend Micro ha scelto Milvus.
Faiss
Faiss è una libreria sviluppata da Facebook AI Research che consente una ricerca efficiente della somiglianza e il raggruppamento di vettori densi. Gli algoritmi in essa contenuti cercano vettori di qualsiasi dimensione in insiemi. Faiss è scritta in C++ con wrapper per Python/numpy e supporta una serie di indici, tra cui IndexFlatL2, IndexFlatIP, HNSW e IVF.
Sebbene Faiss sia uno strumento incredibilmente utile, ha dei limiti. Funziona solo come libreria di algoritmi di base, non come database per la gestione di insiemi di dati vettoriali. Inoltre, non offre una versione distribuita, servizi di monitoraggio, SDK o alta disponibilità , che sono le caratteristiche principali della maggior parte dei servizi basati su cloud.
Plug-in basati su Faiss e altre librerie di ricerca ANN
Esistono diversi plug-in costruiti sulla base di Faiss, NMSLIB e altre librerie di ricerca ANN, progettati per migliorare le funzionalità di base dello strumento che li alimenta. Elasticsearch (ES) è un motore di ricerca basato sulla libreria Lucene con una serie di plugin di questo tipo. Di seguito è riportato un diagramma dell'architettura di un plug-in ES:
1.png
Il supporto integrato per i sistemi distribuiti è uno dei principali vantaggi di una soluzione ES. Ciò fa risparmiare tempo agli sviluppatori e denaro alle aziende, grazie al codice che non deve essere scritto. I plug-in ES sono tecnicamente avanzati e molto diffusi. Elasticsearch fornisce un QueryDSL (linguaggio specifico per il dominio), che definisce le query basate su JSON ed è di facile comprensione. Un set completo di servizi ES consente di effettuare ricerche vettoriali/testuali e di filtrare contemporaneamente dati scalari.
Amazon, Alibaba e Netease sono alcune grandi aziende tecnologiche che attualmente si affidano ai plug-in Elasticsearch per la ricerca di similarità vettoriali. I principali svantaggi di questa soluzione sono l'elevato consumo di memoria e l'assenza di supporto per la regolazione delle prestazioni. JD.com ha invece sviluppato una propria soluzione distribuita basata su Faiss, chiamata Vearch. Tuttavia, Vearch è ancora un progetto in fase di incubazione e la sua comunità open-source è relativamente poco attiva.
Milvus
Milvus è un database vettoriale open-source creato da Zilliz. È altamente flessibile, affidabile e velocissimo. Incapsulando diverse librerie di indici ampiamente adottate, come Faiss, NMSLIB e Annoy, Milvus fornisce una serie completa di API intuitive, che consentono agli sviluppatori di scegliere il tipo di indice ideale per il loro scenario. Offre inoltre soluzioni distribuite e servizi di monitoraggio. Milvus ha una comunità open-source molto attiva e oltre 5.5K stelle su Github.
Milvus batte la concorrenza
Abbiamo raccolto una serie di risultati di test diversi dalle varie soluzioni di ricerca per similarità vettoriale menzionate in precedenza. Come si può vedere nella seguente tabella di confronto, Milvus è risultato significativamente più veloce della concorrenza, nonostante sia stato testato su un set di dati di 1 miliardo di vettori a 128 dimensioni.
Motore | Prestazioni (ms) | Dimensione del set di dati (milioni) |
---|---|---|
ES | 600 | 1 |
ES + Alibaba Cloud | 900 | 20 |
Milvus | 27 | 1000+ |
SPTAG | Non buono | |
ES + nmslib, faiss | 90 | 150 |
Un confronto tra le soluzioni di ricerca per similarità vettoriale.
Dopo aver valutato i pro e i contro di ogni soluzione, Trend Micro ha scelto Milvus per il suo modello di ricerca vettoriale. Grazie alle prestazioni eccezionali su insiemi di dati massicci e su scala miliardaria, è ovvio che l'azienda abbia scelto Milvus per un servizio di sicurezza mobile che richiede una ricerca di similarità vettoriale in tempo reale.
Progettazione di un sistema per il rilevamento dei virus in tempo reale
Trend Micro ha più di 10 milioni di APK dannosi memorizzati nel suo database MySQL, con 100.000 nuovi APK aggiunti ogni giorno. Il sistema funziona estraendo e calcolando i valori Thash dei diversi componenti di un file APK, quindi utilizza l'algoritmo Sha256 per trasformarlo in file binari e generare valori Sha256 a 256 bit che differenziano l'APK dagli altri. Poiché i valori Sha256 variano con i file APK, un APK può avere un valore Thash combinato e un valore Sha256 unico.
I valori Sha256 sono utilizzati solo per differenziare gli APK, mentre i valori Thash sono utilizzati per il recupero della somiglianza vettoriale. APK simili possono avere gli stessi valori Thash ma valori Sha256 diversi.
Per rilevare gli APK con codice nocivo, Trend Micro ha sviluppato un proprio sistema per recuperare i valori Thash simili e i corrispondenti valori Sha256. Trend Micro ha scelto Milvus per condurre una ricerca di somiglianza vettoriale istantanea su enormi set di dati vettoriali convertiti da valori Thash. Dopo l'esecuzione della ricerca di similarità , i valori Sha256 corrispondenti vengono interrogati in MySQL. All'architettura è stato aggiunto anche un livello di caching Redis per mappare i valori Thash in valori Sha256, riducendo in modo significativo i tempi di interrogazione.
Di seguito è riportato il diagramma dell'architettura del sistema di sicurezza mobile di Trend Micro.
image-20210118-022039.png
La scelta di una metrica di distanza appropriata aiuta a migliorare le prestazioni di classificazione e clustering dei vettori. La tabella seguente mostra le metriche di distanza e gli indici corrispondenti che funzionano con vettori binari.
Metriche di distanza | Tipi di indici |
---|---|
- Jaccard - Tanimoto - Hamming | - PIATTO - IVF_FLAT |
- Sovrastruttura - Sottostruttura | PIATTO |
Metriche di distanza e indici per vettori binari.
Trend Micro converte i valori Thash in vettori binari e li archivia in Milvus. Per questo scenario, Trend Micro utilizza la distanza di Hamming per confrontare i vettori.
Milvus supporterà presto l'ID del vettore in stringa e gli ID interi non dovranno essere mappati al nome corrispondente in formato stringa. Ciò rende superfluo il livello di caching Redis e l'architettura del sistema meno ingombrante.
Trend Micro adotta una soluzione basata sul cloud e distribuisce molte attività su Kubernetes. Per ottenere l'alta disponibilità , Trend Micro utilizza Mishards, un middleware di sharding per cluster Milvus sviluppato in Python.

Trend Micro separa l'archiviazione e il calcolo della distanza memorizzando tutti i vettori nell'EFS (Elastic File System) fornito da AWS. Questa pratica è una tendenza popolare nel settore. Kubernetes viene utilizzato per avviare più nodi di lettura e sviluppa servizi LoadBalancer su questi nodi di lettura per garantire un'elevata disponibilità .
Per mantenere la coerenza dei dati, Mishards supporta un solo nodo di scrittura. Tuttavia, nei prossimi mesi sarà disponibile una versione distribuita di Milvus con supporto per più nodi di scrittura.
Funzioni di monitoraggio e di allarme
Milvus è compatibile con i sistemi di monitoraggio basati su Prometheus e utilizza Grafana, una piattaforma open-source per l'analisi delle serie temporali, per visualizzare varie metriche delle prestazioni.
Prometheus monitora e memorizza le seguenti metriche:
- Metriche delle prestazioni di Milvus, tra cui velocità di inserimento, velocità di interrogazione e tempo di attività di Milvus.
- Metriche delle prestazioni del sistema, tra cui l'utilizzo della CPU/GPU, il traffico di rete e la velocità di accesso al disco.
- Metriche di archiviazione hardware, tra cui la dimensione dei dati e il numero totale di file.
Il sistema di monitoraggio e di allarme funziona come segue:
- Un client Milvus invia dati metrici personalizzati a Pushgateway.
- Pushgateway assicura che i dati metrici effimeri e di breve durata siano inviati in modo sicuro a Prometheus.
- Prometheus continua a prelevare i dati da Pushgateway.
- Alertmanager imposta la soglia di allarme per diverse metriche e lancia allarmi tramite e-mail o messaggi.
Prestazioni del sistema
Sono passati un paio di mesi dal lancio del servizio ThashSearch costruito su Milvus. Il grafico sottostante mostra che la latenza delle query end-to-end è inferiore a 95 millisecondi.
image-20210118-022116.png
Anche l'inserimento è veloce. Ci vogliono circa 10 secondi per inserire 3 milioni di vettori a 192 dimensioni. Con l'aiuto di Milvus, le prestazioni del sistema sono riuscite a soddisfare i criteri di performance stabiliti da Trend Micro.
Non essere un estraneo
Try Managed Milvus for Free
Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.
Get StartedLike the article? Spread the word