Membuat dengan Milvus Mendeteksi Virus Android Secara Real Time untuk Trend Micro
Keamanan siber tetap menjadi ancaman yang terus berlanjut bagi individu dan bisnis, dengan masalah privasi data yang meningkat untuk 86% perusahaan pada tahun 2020 dan hanya 23% konsumen yang percaya bahwa data pribadi mereka sangat aman. Seiring dengan semakin banyaknya malware yang ada di mana-mana dan semakin canggih, pendekatan proaktif untuk mendeteksi ancaman menjadi sangat penting. Trend Micro adalah pemimpin global dalam keamanan cloud hybrid, pertahanan jaringan, keamanan usaha kecil, dan keamanan titik akhir. Untuk melindungi perangkat Android dari virus, perusahaan ini membangun Trend Micro Mobile Security-sebuah aplikasi seluler yang membandingkan APK (Paket Aplikasi Android) dari Google Play Store dengan database malware yang dikenal. Sistem pendeteksi virus bekerja sebagai berikut:
- APK eksternal (paket aplikasi Android) dari Google Play Store dirayapi.
- Malware yang diketahui diubah menjadi vektor dan disimpan di Milvus.
- APK baru juga diubah menjadi vektor, lalu dibandingkan dengan basis data malware menggunakan pencarian kemiripan.
- Jika sebuah vektor APK mirip dengan vektor malware mana pun, aplikasi ini memberikan informasi terperinci kepada pengguna tentang virus dan tingkat ancamannya.
Agar dapat bekerja, sistem harus melakukan pencarian kemiripan yang sangat efisien pada kumpulan data vektor yang sangat besar secara real time. Awalnya, Trend Micro menggunakan MySQL. Namun, seiring dengan perkembangan bisnisnya, begitu pula jumlah APK dengan kode jahat yang tersimpan di basis datanya. Tim algoritme perusahaan mulai mencari solusi pencarian kemiripan vektor alternatif setelah dengan cepat melampaui MySQL.
Membandingkan solusi pencarian kemiripan vektor
Ada sejumlah solusi pencarian kemiripan vektor yang tersedia, banyak di antaranya yang bersifat open source. Meskipun situasinya berbeda-beda dari satu proyek ke proyek lainnya, sebagian besar pengguna mendapatkan keuntungan dari memanfaatkan database vektor yang dibangun untuk pemrosesan dan analisis data yang tidak terstruktur daripada perpustakaan sederhana yang membutuhkan konfigurasi yang ekstensif. Di bawah ini kami membandingkan beberapa solusi pencarian kemiripan vektor yang populer dan menjelaskan mengapa Trend Micro memilih Milvus.
Faiss
Faiss adalah library yang dikembangkan oleh Facebook AI Research yang memungkinkan pencarian kemiripan yang efisien dan pengelompokan vektor yang padat. Algoritme yang ada di dalamnya dapat mencari vektor dengan berbagai ukuran dalam set. Faiss ditulis dalam bahasa C++ dengan pembungkus untuk Python/numpy, dan mendukung sejumlah indeks termasuk IndexFlatL2, IndexFlatIP, HNSW, dan IVF.
Meskipun Faiss adalah alat yang sangat berguna, ia memiliki keterbatasan. Ini hanya berfungsi sebagai pustaka algoritme dasar, bukan basis data untuk mengelola kumpulan data vektor. Selain itu, ia tidak menawarkan versi terdistribusi, layanan pemantauan, SDK, atau ketersediaan tinggi, yang merupakan fitur utama dari sebagian besar layanan berbasis cloud.
Plug-in berdasarkan Faiss & pustaka pencarian ANN lainnya
Ada beberapa plug-in yang dibangun di atas Faiss, NMSLIB, dan pustaka pencarian ANN lainnya yang dirancang untuk meningkatkan fungsionalitas dasar dari alat dasar yang mendukungnya. Elasticsearch (ES) adalah mesin pencari yang didasarkan pada pustaka Lucene dengan sejumlah plugin tersebut. Di bawah ini adalah diagram arsitektur plugin ES:
1.png
Dukungan bawaan untuk sistem terdistribusi adalah keuntungan utama dari solusi ES. Hal ini menghemat waktu pengembang dan uang perusahaan berkat kode yang tidak perlu ditulis. Plug-in ES secara teknis sudah maju dan lazim. Elasticsearch menyediakan QueryDSL (bahasa khusus domain), yang mendefinisikan kueri berdasarkan JSON dan mudah dipahami. Satu set lengkap layanan ES memungkinkan untuk melakukan pencarian vektor/teks dan memfilter data skalar secara bersamaan.
Amazon, Alibaba, dan Netease adalah beberapa perusahaan teknologi besar yang saat ini mengandalkan plug-in Elasticsearch untuk pencarian kesamaan vektor. Kelemahan utama dari solusi ini adalah konsumsi memori yang tinggi dan tidak ada dukungan untuk penyetelan kinerja. Sebaliknya, JD.com telah mengembangkan solusi terdistribusi sendiri berdasarkan Faiss yang disebut Vearch. Namun, Vearch masih dalam tahap inkubasi dan komunitas sumber terbukanya relatif tidak aktif.
Milvus
Milvus adalah basis data vektor sumber terbuka yang dibuat oleh Zilliz. Ini sangat fleksibel, dapat diandalkan, dan sangat cepat. Dengan merangkum beberapa pustaka indeks yang diadopsi secara luas, seperti Faiss, NMSLIB, dan Annoy, Milvus menyediakan seperangkat API intuitif yang komprehensif, yang memungkinkan para pengembang untuk memilih jenis indeks yang ideal untuk skenario mereka. Milvus juga menyediakan solusi terdistribusi dan layanan pemantauan. Milvus memiliki komunitas sumber terbuka yang sangat aktif dan lebih dari 5,5 ribu bintang di Github.
Milvus terbaik dalam persaingan
Kami mengumpulkan sejumlah hasil pengujian yang berbeda dari berbagai solusi pencarian kesamaan vektor yang disebutkan di atas. Seperti yang bisa kita lihat pada tabel perbandingan berikut, Milvus secara signifikan lebih cepat daripada kompetitor meskipun diuji pada set data 1 miliar vektor 128 dimensi.
Mesin | Kinerja (ms) | Ukuran Dataset (juta) |
---|---|---|
ES | 600 | 1 |
ES + Alibaba Cloud | 900 | 20 |
Milvus | 27 | 1000+ |
SPTAG | Tidak baik | |
ES + nmslib, faiss | 90 | 150 |
Perbandingan solusi pencarian kemiripan vektor.
Setelah menimbang pro dan kontra dari setiap solusi, Trend Micro memilih Milvus untuk model pencarian vektornya. Dengan kinerja yang luar biasa pada kumpulan data berskala miliaran, jelaslah mengapa perusahaan memilih Milvus untuk layanan keamanan seluler yang membutuhkan pencarian kesamaan vektor secara real-time.
Merancang sistem untuk deteksi virus secara real-time
Trend Micro memiliki lebih dari 10 juta APK berbahaya yang tersimpan di basis data MySQL-nya, dengan 100 ribu APK baru yang ditambahkan setiap hari. Sistem ini bekerja dengan mengekstraksi dan menghitung nilai Thash dari berbagai komponen file APK, lalu menggunakan algoritme Sha256 untuk mengubahnya menjadi file biner dan menghasilkan nilai Sha256 256-bit yang membedakan APK tersebut dengan yang lain. Karena nilai Sha256 bervariasi pada file APK, satu APK dapat memiliki satu nilai Thash gabungan dan satu nilai Sha256 yang unik.
Nilai Sha256 hanya digunakan untuk membedakan APK, dan nilai Thash digunakan untuk pencarian kemiripan vektor. APK yang mirip mungkin memiliki nilai Thash yang sama tetapi nilai Sha256 yang berbeda.
Untuk mendeteksi APK dengan kode jahat, Trend Micro mengembangkan sistemnya sendiri untuk mengambil nilai Thash yang serupa dan nilai Sha256 yang sesuai. Trend Micro memilih Milvus untuk melakukan pencarian kemiripan vektor secara instan pada kumpulan data vektor besar yang dikonversi dari nilai Thash. Setelah pencarian kemiripan dijalankan, nilai Sha256 yang sesuai akan ditanyakan di MySQL. Lapisan caching Redis juga ditambahkan ke arsitektur untuk memetakan nilai Thash ke nilai Sha256, yang secara signifikan mengurangi waktu kueri.
Di bawah ini adalah diagram arsitektur sistem keamanan seluler Trend Micro.
image-20210118-022039.png
Memilih metrik jarak yang tepat membantu meningkatkan klasifikasi vektor dan kinerja pengelompokan. Tabel berikut ini menunjukkan metrik jarak dan indeks yang sesuai yang bekerja dengan vektor biner.
Metrik Jarak | Jenis Indeks |
---|---|
- Jaccard - Tanimoto - Hamming | - FLAT - IVF_FLAT |
- Superstruktur - Substruktur | DATAR |
Metrik jarak dan indeks untuk vektor biner.
Trend Micro mengubah nilai Thash menjadi vektor biner dan menyimpannya di Milvus. Untuk skenario ini, Trend Micro menggunakan jarak Hamming untuk membandingkan vektor.
Milvus akan segera mendukung ID vektor string, dan ID integer tidak perlu dipetakan ke nama yang sesuai dalam format string. Hal ini membuat lapisan caching Redis tidak diperlukan dan arsitektur sistem tidak terlalu besar.
Trend Micro mengadopsi solusi berbasis cloud dan menerapkan banyak tugas pada Kubernetes. Untuk mencapai ketersediaan yang tinggi, Trend Micro menggunakan Mishards, sebuah middleware sharding cluster Milvus yang dikembangkan dalam Python.

Trend Micro memisahkan penyimpanan dan penghitungan jarak dengan menyimpan semua vektor di EFS (Elastic File System) yang disediakan oleh AWS. Praktik ini merupakan tren yang populer di industri ini. Kubernetes digunakan untuk memulai beberapa node pembacaan, dan mengembangkan layanan LoadBalancer pada node pembacaan ini untuk memastikan ketersediaan yang tinggi.
Untuk menjaga konsistensi data, Mishards hanya mendukung satu simpul penulisan. Namun, versi terdistribusi Milvus dengan dukungan untuk beberapa node penulisan akan tersedia dalam beberapa bulan mendatang.
Fungsi Pemantauan dan Peringatan
Milvus kompatibel dengan sistem pemantauan yang dibangun di atas Prometheus, dan menggunakan Grafana, sebuah platform sumber terbuka untuk analisis deret waktu, untuk memvisualisasikan berbagai metrik kinerja.
Prometheus memonitor dan menyimpan metrik berikut ini:
- Metrik kinerja Milvus termasuk kecepatan penyisipan, kecepatan kueri, dan waktu kerja Milvus.
- Metrik kinerja sistem termasuk penggunaan CPU/GPU, lalu lintas jaringan, dan kecepatan akses disk.
- Metrik penyimpanan perangkat keras termasuk ukuran data dan jumlah total file.
Sistem pemantauan dan peringatan bekerja sebagai berikut:
- Klien Milvus mendorong data metrik yang disesuaikan ke Pushgateway.
- Pushgateway memastikan data metrik yang berumur pendek dan singkat dikirim dengan aman ke Prometheus.
- Prometheus terus menarik data dari Pushgateway.
- Alertmanager mengatur ambang batas peringatan untuk metrik yang berbeda dan memunculkan alarm melalui email atau pesan.
Kinerja Sistem
Beberapa bulan telah berlalu sejak layanan ThashSearch yang dibangun di atas Milvus pertama kali diluncurkan. Grafik di bawah ini menunjukkan bahwa latensi kueri end-to-end kurang dari 95 milidetik.
image-20210118-022116.png
Penyisipan juga cepat. Dibutuhkan sekitar 10 detik untuk menyisipkan 3 juta vektor 192 dimensi. Dengan bantuan dari Milvus, kinerja sistem mampu memenuhi kriteria kinerja yang ditetapkan oleh Trend Micro.
Jangan menjadi orang asing
Try Managed Milvus for Free
Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.
Get StartedLike the article? Spread the word