Entwickeln mit Milvus: Android-Viren in Echtzeit für Trend Micro erkennen
Cybersicherheit bleibt eine anhaltende Bedrohung sowohl für Einzelpersonen als auch für Unternehmen, wobei die Bedenken hinsichtlich des Datenschutzes im Jahr 2020 bei 86% der Unternehmen zunahmen und nur 23% der Verbraucher glauben, dass ihre personenbezogenen Daten sehr sicher sind. Da Malware stetig allgegenwärtiger und ausgefeilter wird, ist ein proaktiver Ansatz zur Bedrohungserkennung unerlässlich geworden. Trend Micro ist ein weltweit führender Anbieter in den Bereichen hybride Cloud-Sicherheit, Netzwerkverteidigung, Sicherheit für kleine Unternehmen und Endpunktsicherheit. Um Android-Geräte vor Viren zu schützen, entwickelte das Unternehmen Trend Micro Mobile Security – eine mobile App, die APKs (Android Application Package) aus dem Google Play Store mit einer Datenbank bekannter Malware vergleicht. Das Virenerkennungssystem funktioniert wie folgt:
- Externe APKs (Android application package) aus dem Google Play Store werden gecrawlt.
- Bekannte Malware wird in Vektoren umgewandelt und in Milvus gespeichert.
- Neue APKs werden ebenfalls in Vektoren umgewandelt und anschließend mithilfe der Ähnlichkeitssuche mit der Malware-Datenbank verglichen.
- Wenn ein APK-Vektor einem der Malware-Vektoren ähnelt, stellt die App den Nutzern detaillierte Informationen über den Virus und seine Bedrohungsstufe bereit.
Damit das System funktioniert, muss es eine hocheffiziente Ähnlichkeitssuche auf riesigen Vektordatensätzen in Echtzeit durchführen. Anfangs verwendete Trend Micro MySQL. Mit der Ausweitung des Geschäfts nahm jedoch auch die Anzahl der APKs mit bösartigem Code zu, die in der Datenbank gespeichert waren. Das Algorithmus-Team des Unternehmens begann nach alternativen Lösungen für die Vektorähnlichkeitssuche zu suchen, nachdem es schnell über MySQL hinausgewachsen war.
Vergleich von Lösungen für die Vektorähnlichkeitssuche
Es gibt eine Reihe von Lösungen für die Vektorähnlichkeitssuche, von denen viele Open Source sind. Obwohl die Umstände von Projekt zu Projekt variieren, profitieren die meisten Nutzer davon, eine Vektordatenbank, die für die Verarbeitung und Analyse unstrukturierter Daten entwickelt wurde, zu nutzen, statt einer einfachen Bibliothek, die umfangreiche Konfiguration erfordert. Im Folgenden vergleichen wir einige beliebte Lösungen für die Vektorähnlichkeitssuche und erklären, warum Trend Micro sich für Milvus entschieden hat.
Faiss
Faiss ist eine von Facebook AI Research entwickelte Bibliothek, die eine effiziente Ähnlichkeitssuche und Clusterbildung dichter Vektoren ermöglicht. Die darin enthaltenen Algorithmen durchsuchen Vektoren beliebiger Größe in Mengen. Faiss ist in C++ geschrieben, mit Wrappern für Python/numpy, und unterstützt eine Reihe von Indizes, darunter IndexFlatL2, IndexFlatIP, HNSW und IVF.
Obwohl Faiss ein unglaublich nützliches Werkzeug ist, hat es Einschränkungen. Es funktioniert nur als grundlegende Algorithmusbibliothek, nicht als Datenbank zur Verwaltung von Vektordatensätzen. Darüber hinaus bietet es keine verteilte Version, keine Monitoring-Dienste, SDKs oder Hochverfügbarkeit, die zu den zentralen Merkmalen der meisten Cloud-basierten Dienste gehören.
Plug-ins auf Basis von Faiss und anderen ANN-Suchbibliotheken
Es gibt mehrere Plug-ins, die auf Faiss, NMSLIB und anderen ANN-Suchbibliotheken aufbauen und darauf ausgelegt sind, die grundlegende Funktionalität des zugrunde liegenden Werkzeugs zu erweitern, das sie antreibt. Elasticsearch (ES) ist eine auf der Lucene-Bibliothek basierende Suchmaschine mit einer Reihe solcher Plugins. Unten sehen Sie ein Architekturdiagramm eines ES-Plug-ins:
Architekturdiagramm eines Elasticsearch-Plug-ins.
Die integrierte Unterstützung für verteilte Systeme ist ein großer Vorteil einer ES-Lösung. Dies spart Entwicklern Zeit und Unternehmen Geld, dank Code, der nicht geschrieben werden muss. ES-Plug-ins sind technisch fortschrittlich und weit verbreitet. Elasticsearch bietet eine QueryDSL (domain-specific language), die Abfragen auf Basis von JSON definiert und leicht zu verstehen ist. Ein vollständiger Satz von ES-Diensten ermöglicht es, Vektor-/Textsuche durchzuführen und skalare Daten gleichzeitig zu filtern.
Amazon, Alibaba und Netease sind einige große Technologieunternehmen, die derzeit auf Elasticsearch-Plug-ins für die Vektorähnlichkeitssuche setzen. Die wichtigsten Nachteile dieser Lösung sind der hohe Speicherverbrauch und die fehlende Unterstützung für Leistungsoptimierung. Im Gegensatz dazu hat JD.com eine eigene verteilte Lösung auf Basis von Faiss namens Vearch entwickelt. Allerdings befindet sich Vearch noch in der Inkubationsphase, und seine Open-Source-Community ist relativ inaktiv.
Milvus
Milvus ist eine Open-Source-Vektordatenbank, die von Zilliz erstellt wurde. Sie ist äußerst flexibel, zuverlässig und blitzschnell. Durch die Kapselung mehrerer weit verbreiteter Indexbibliotheken wie Faiss, NMSLIB und Annoy bietet Milvus einen umfassenden Satz intuitiver APIs, der es Entwicklern ermöglicht, den idealen Indextyp für ihr Szenario auszuwählen. Außerdem bietet es verteilte Lösungen und Monitoring-Dienste. Milvus verfügt über eine sehr aktive Open-Source-Community und über 5,5K Sterne auf Github.
Milvus übertrifft die Konkurrenz
Wir haben eine Reihe verschiedener Testergebnisse der oben genannten Lösungen für die Vektorähnlichkeitssuche zusammengestellt. Wie wir in der folgenden Vergleichstabelle sehen können, war Milvus deutlich schneller als die Konkurrenz, obwohl es auf einem Datensatz von 1 Milliarde 128-dimensionalen Vektoren getestet wurde.
| Engine | Leistung (ms) | Datensatzgröße (Millionen) |
|---|---|---|
| ES | 600 | 1 |
| ES + Alibaba Cloud | 900 | 20 |
| Milvus | 27 | 1000+ |
| SPTAG | Nicht gut | |
| ES + nmslib, faiss | 90 | 150 |
Ein Vergleich von Lösungen für die Vektorähnlichkeitssuche.
Nachdem Trend Micro die Vor- und Nachteile jeder Lösung abgewogen hatte, entschied sich das Unternehmen für Milvus für sein Vektorabrufmodell. Angesichts der außergewöhnlichen Leistung bei riesigen Datensätzen im Milliardenmaßstab ist es offensichtlich, warum das Unternehmen Milvus für einen mobilen Sicherheitsdienst gewählt hat, der eine Echtzeit-Vektorähnlichkeitssuche erfordert.
Entwurf eines Systems zur Echtzeit-Virenerkennung
Trend Micro hat mehr als 10 Millionen bösartige APKs in seiner MySQL-Datenbank gespeichert, wobei täglich 100.000 neue APKs hinzukommen. Das System funktioniert, indem es Thash-Werte verschiedener Komponenten einer APK-Datei extrahiert und berechnet, dann den Sha256-Algorithmus verwendet, um sie in Binärdateien umzuwandeln und 256-Bit-Sha256-Werte zu erzeugen, die die APK von anderen unterscheiden. Da Sha256-Werte je nach APK-Datei variieren, kann eine APK einen kombinierten Thash-Wert und einen eindeutigen Sha256-Wert haben.
Sha256-Werte werden nur zur Unterscheidung von APKs verwendet, und Thash-Werte werden für den Vektorähnlichkeitsabruf verwendet. Ähnliche APKs können dieselben Thash-Werte, aber unterschiedliche Sha256-Werte haben.
Um APKs mit schädlichem Code zu erkennen, entwickelte Trend Micro ein eigenes System zum Abrufen ähnlicher Thash-Werte und entsprechender Sha256-Werte. Trend Micro entschied sich für Milvus, um eine sofortige Vektorähnlichkeitssuche auf riesigen Vektordatensätzen durchzuführen, die aus Thash-Werten umgewandelt wurden. Nachdem die Ähnlichkeitssuche ausgeführt wurde, werden die entsprechenden Sha256-Werte in MySQL abgefragt. Der Architektur wird außerdem eine Redis-Caching-Schicht hinzugefügt, um Thash-Werte Sha256-Werten zuzuordnen, wodurch die Abfragezeit erheblich reduziert wird.
Unten sehen Sie das Architekturdiagramm des mobilen Sicherheitssystems von Trend Micro.
Architekturdiagramm für Trend Micro Mobile Security.
Die Wahl einer geeigneten Distanzmetrik hilft, die Leistung der Vektorklassifizierung und des Clusterings zu verbessern. Die folgende Tabelle zeigt die Distanzmetriken und die entsprechenden Indizes, die mit binären Vektoren funktionieren.
| Distanzmetriken | Indextypen |
|---|---|
| - Jaccard - Tanimoto - Hamming | - FLAT - IVF_FLAT |
| - Superstruktur - Substruktur | FLAT |
Distanzmetriken und Indizes für binäre Vektoren.
Trend Micro wandelt Thash-Werte in binäre Vektoren um und speichert sie in Milvus. Für dieses Szenario verwendet Trend Micro die Hamming-Distanz, um Vektoren zu vergleichen.
Milvus wird bald String-Vektor-IDs unterstützen, und Integer-IDs müssen nicht mehr dem entsprechenden Namen im String-Format zugeordnet werden. Dadurch wird die Redis-Caching-Schicht überflüssig und die Systemarchitektur weniger sperrig.
Trend Micro setzt auf eine cloudbasierte Lösung und deployt viele Aufgaben auf Kubernetes. Um Hochverfügbarkeit zu erreichen, verwendet Trend Micro Mishards, eine in Python entwickelte Sharding-Middleware für Milvus-Cluster.
Mishards-Architektur in Milvus.
Trend Micro trennt Speicherung und Distanzberechnung, indem alle Vektoren im von AWS bereitgestellten EFS (Elastic File System) gespeichert werden. Diese Vorgehensweise ist ein beliebter Trend in der Branche. Kubernetes wird verwendet, um mehrere Leseknoten zu starten, und entwickelt LoadBalancer-Dienste auf diesen Leseknoten, um Hochverfügbarkeit zu gewährleisten.
Um die Datenkonsistenz aufrechtzuerhalten, unterstützt Mishards nur einen Schreibknoten. Eine verteilte Version von Milvus mit Unterstützung für mehrere Schreibknoten wird jedoch in den kommenden Monaten verfügbar sein.
Überwachungs- und Alarmfunktionen
Milvus ist mit Überwachungssystemen kompatibel, die auf Prometheus basieren, und verwendet Grafana, eine Open-Source-Plattform für Zeitreihenanalysen, um verschiedene Leistungsmetriken zu visualisieren.
Prometheus überwacht und speichert die folgenden Metriken:
- Milvus-Leistungsmetriken, einschließlich Einfügegeschwindigkeit, Abfragegeschwindigkeit und Milvus-Betriebszeit.
- Systemleistungsmetriken, einschließlich CPU-/GPU-Auslastung, Netzwerkverkehr und Festplattenzugriffsgeschwindigkeit.
- Hardware-Speichermetriken, einschließlich Datengröße und Gesamtzahl der Dateien.
Das Überwachungs- und Alarmsystem funktioniert wie folgt:
- Ein Milvus-Client überträgt angepasste Metrikdaten an Pushgateway.
- Pushgateway stellt sicher, dass kurzlebige, flüchtige Metrikdaten sicher an Prometheus gesendet werden.
- Prometheus ruft kontinuierlich Daten von Pushgateway ab.
- Alertmanager legt den Alarmschwellenwert für verschiedene Metriken fest und löst Alarme per E-Mail oder Nachricht aus.
Systemleistung
Seit dem ersten Start des auf Milvus aufgebauten ThashSearch-Dienstes sind ein paar Monate vergangen. Die folgende Grafik zeigt, dass die End-to-End-Abfragelatenz weniger als 95 Millisekunden beträgt.
Abfragelatenz für den auf Milvus aufgebauten Thash-Suchdienst.
Auch das Einfügen ist schnell. Es dauert etwa 10 Sekunden, 3 Millionen 192-dimensionale Vektoren einzufügen. Mithilfe von Milvus konnte die Systemleistung die von Trend Micro festgelegten Leistungskriterien erfüllen.
Bleiben Sie in Kontakt
Weiterlesen

Vector Lakebase: End the AI Data Silo
Learn how Vector Lakebase unifies vector search, data lakes, and AI data operations so teams can serve RAG and agents without copy-and-sync pipelines.

Notion's Vector Search Is Excellent. Their Next Problem Is Harder.
Notion solved vector search scaling in two years. The next bottleneck — offline context engineering, unified data, and the real-time/offline gap — is harder.

Milvus 2.6.x Now Generally Available on Zilliz Cloud, Making Vector Search Faster, Smarter, and More Cost-Efficient for Production AI
Milvus 2.6.x is now GA on Zilliz Cloud, delivering faster vector search, smarter hybrid queries, and lower costs for production RAG and AI applications.



