🚀 Experimente o Zilliz Cloud, o Milvus totalmente gerenciado, gratuitamente—experimente um desempenho 10x mais rápido! Experimente Agora>>

milvus-logo
LFAI
  • Home
  • Blog
  • Fazendo com Milvus Detectando vírus Android em tempo real para a Trend Micro

Fazendo com Milvus Detectando vírus Android em tempo real para a Trend Micro

  • Scenarios
April 23, 2021
milvus

A cibersegurança continua a ser uma ameaça persistente tanto para os indivíduos como para as empresas, com as preocupações com a privacidade dos dados a aumentarem para 86% das empresas em 2020 e apenas 23% dos consumidores a acreditarem que os seus dados pessoais estão muito seguros. À medida que o malware se torna cada vez mais omnipresente e sofisticado, uma abordagem proactiva à deteção de ameaças tornou-se essencial. A Trend Micro é líder mundial em segurança de nuvem híbrida, defesa de rede, segurança de pequenas empresas e segurança de terminais. Para proteger os dispositivos Android contra vírus, a empresa criou a Trend Micro Mobile Security - uma aplicação móvel que compara APKs (Android Application Package) da Google Play Store com uma base de dados de malware conhecido. O sistema de deteção de vírus funciona da seguinte forma:

  • Os APKs externos (pacote de aplicações Android) da Google Play Store são rastreados.
  • O malware conhecido é convertido em vectores e armazenado no Milvus.
  • Os novos APKs são também convertidos em vectores e depois comparados com a base de dados de malware através da pesquisa de semelhanças.
  • Se um vetor APK for semelhante a qualquer um dos vectores de malware, a aplicação fornece aos utilizadores informações detalhadas sobre o vírus e o seu nível de ameaça.

Para funcionar, o sistema tem de efetuar uma pesquisa de semelhanças altamente eficiente em conjuntos de dados de vectores maciços em tempo real. Inicialmente, a Trend Micro utilizava o MySQL. No entanto, à medida que o seu negócio se expandiu, também aumentou o número de APKs com código nefasto armazenado na sua base de dados. A equipa de algoritmos da empresa começou a procurar soluções alternativas de pesquisa de semelhanças vectoriais depois de ultrapassar rapidamente o MySQL.


Comparação de soluções de pesquisa de semelhança de vectores

Existem várias soluções de pesquisa de semelhança de vectores disponíveis, muitas das quais são de código aberto. Embora as circunstâncias variem de projeto para projeto, a maioria dos utilizadores beneficia da utilização de uma base de dados vetorial criada para processamento e análise de dados não estruturados, em vez de uma simples biblioteca que requer uma configuração extensiva. Abaixo, comparamos algumas soluções populares de pesquisa de similaridade de vetores e explicamos por que a Trend Micro escolheu o Milvus.

Faiss

Faiss é uma biblioteca desenvolvida pela Facebook AI Research que permite a pesquisa de semelhança eficiente e o agrupamento de vectores densos. Os algoritmos que contém pesquisam vectores de qualquer tamanho em conjuntos. Faiss é escrita em C++ com wrappers para Python/numpy, e suporta vários índices, incluindo IndexFlatL2, IndexFlatIP, HNSW e IVF.

Embora o Faiss seja uma ferramenta incrivelmente útil, ele tem limitações. Funciona apenas como uma biblioteca básica de algoritmos e não como uma base de dados para gerir conjuntos de dados vectoriais. Além disso, não oferece uma versão distribuída, serviços de monitorização, SDKs ou alta disponibilidade, que são as principais caraterísticas da maioria dos serviços baseados na nuvem.

Plug-ins baseados em Faiss e noutras bibliotecas de pesquisa ANN

Existem vários plug-ins criados com base no Faiss, no NMSLIB e noutras bibliotecas de pesquisa ANN, concebidos para melhorar a funcionalidade básica da ferramenta subjacente que os alimenta. O Elasticsearch (ES) é um motor de pesquisa baseado na biblioteca Lucene com uma série de plug-ins deste tipo. Abaixo está um diagrama de arquitetura de um plug-in ES:

1.png 1.png

O suporte integrado para sistemas distribuídos é uma das principais vantagens de uma solução ES. Isto poupa tempo aos programadores e dinheiro às empresas graças ao código que não tem de ser escrito. Os plug-ins ES são tecnicamente avançados e predominantes. O Elasticsearch fornece uma QueryDSL (linguagem específica do domínio), que define consultas baseadas em JSON e é fácil de compreender. Um conjunto completo de serviços ES permite efetuar pesquisas vectoriais/texto e filtrar dados escalares em simultâneo.

A Amazon, a Alibaba e a Netease são algumas das grandes empresas de tecnologia que dependem atualmente dos plug-ins do Elasticsearch para a pesquisa de semelhanças vectoriais. As principais desvantagens desta solução são o elevado consumo de memória e a ausência de suporte para afinação do desempenho. Em contrapartida, a JD.com desenvolveu a sua própria solução distribuída baseada no Faiss, denominada Vearch. No entanto, o Vearch ainda é um projeto em fase de incubação e a sua comunidade de código aberto é relativamente inativa.

Milvus

O Milvus é uma base de dados vetorial de código aberto criada pela Zilliz. É altamente flexível, fiável e extremamente rápida. Ao encapsular várias bibliotecas de índices amplamente adoptadas, como Faiss, NMSLIB e Annoy, o Milvus fornece um conjunto abrangente de APIs intuitivas, permitindo que os programadores escolham o tipo de índice ideal para o seu cenário. Também fornece soluções distribuídas e serviços de monitorização. O Milvus tem uma comunidade de código aberto altamente ativa e mais de 5,5 mil estrelas no Github.

Milvus supera a concorrência

Compilámos uma série de resultados de testes diferentes das várias soluções de pesquisa de semelhança de vectores mencionadas acima. Como podemos ver na seguinte tabela de comparação, o Milvus foi significativamente mais rápido do que a concorrência, apesar de ter sido testado num conjunto de dados de mil milhões de vectores de 128 dimensões.

MotorDesempenho (ms)Tamanho do conjunto de dados (milhões)
ES6001
ES + Alibaba Cloud90020
Milvus271000+
SPTAGNão é bom
ES + nmslib, faiss90150
Uma comparação de soluções de pesquisa de similaridade de vetor.

Depois de pesar os prós e contras de cada solução, a Trend Micro optou pelo Milvus para seu modelo de recuperação de vetor. Com um desempenho excecional em conjuntos de dados maciços, à escala de mil milhões, é óbvio porque é que a empresa escolheu o Milvus para um serviço de segurança móvel que requer uma pesquisa de semelhança de vectores em tempo real.


Conceber um sistema de deteção de vírus em tempo real

A Trend Micro tem mais de 10 milhões de APKs maliciosos armazenados na sua base de dados MySQL, com 100 mil novos APKs adicionados todos os dias. O sistema funciona extraindo e calculando os valores Thash de diferentes componentes de um ficheiro APK e, em seguida, utiliza o algoritmo Sha256 para o transformar em ficheiros binários e gerar valores Sha256 de 256 bits que diferenciam o APK dos outros. Uma vez que os valores Sha256 variam com os ficheiros APK, um APK pode ter um valor Thash combinado e um valor Sha256 único.

Os valores Sha256 são usados apenas para diferenciar APKs, e os valores Thash são usados para recuperação de similaridade de vetor. APKs semelhantes podem ter os mesmos valores Thash mas valores Sha256 diferentes.

Para detetar APKs com código nefasto, a Trend Micro desenvolveu seu próprio sistema para recuperar valores Thash semelhantes e valores Sha256 correspondentes. A Trend Micro escolheu o Milvus para realizar uma pesquisa instantânea de semelhança de vectores em conjuntos de dados de vectores maciços convertidos a partir de valores Thash. Após a execução da pesquisa de semelhança, os valores Sha256 correspondentes são consultados no MySQL. Uma camada de cache Redis também é adicionada à arquitetura para mapear valores Thash para valores Sha256, reduzindo significativamente o tempo de consulta.

Abaixo está o diagrama de arquitetura do sistema de segurança móvel da Trend Micro.

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


A escolha de uma métrica de distância adequada ajuda a melhorar a classificação do vetor e o desempenho do agrupamento. A tabela seguinte mostra as métricas de distância e os índices correspondentes que funcionam com vectores binários.

Métrica de distânciaTipos de índice
- Jaccard
- Tanimoto
- Hamming
- PLANO
- IVF_FLAT
- Superestrutura
- Subestrutura
FLAT
Métricas de distância e índices para vectores binários.


A Trend Micro converte os valores Thash em vectores binários e armazena-os em Milvus. Para este cenário, a Trend Micro está a utilizar a distância de Hamming para comparar vectores.

Em breve, o Milvus suportará ID de vetor de cadeia de caracteres, e os IDs inteiros não precisarão ser mapeados para o nome correspondente no formato de cadeia de caracteres. Isto torna a camada de cache Redis desnecessária e a arquitetura do sistema menos volumosa.

A Trend Micro adota uma solução baseada em nuvem e implanta muitas tarefas no Kubernetes. Para obter alta disponibilidade, a Trend Micro usa o Mishards, um middleware de fragmentação de cluster Milvus desenvolvido em Python.

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


A Trend Micro separa o armazenamento e o cálculo da distância armazenando todos os vetores no EFS (Elastic File System) fornecido pela AWS. Essa prática é uma tendência popular no setor. O Kubernetes é utilizado para iniciar vários nós de leitura e desenvolve serviços LoadBalancer nestes nós de leitura para garantir uma elevada disponibilidade.

Para manter a consistência dos dados, o Mishards suporta apenas um nó de escrita. No entanto, uma versão distribuída do Milvus com suporte para vários nós de escrita estará disponível nos próximos meses.


Funções de Monitorização e Alerta

O Milvus é compatível com sistemas de monitoramento construídos no Prometheus e usa o Grafana, uma plataforma de código aberto para análise de séries temporais, para visualizar várias métricas de desempenho.

O Prometheus monitora e armazena as seguintes métricas:

  • Métricas de desempenho do Milvus, incluindo velocidade de inserção, velocidade de consulta e tempo de atividade do Milvus.
  • Métricas de desempenho do sistema, incluindo uso de CPU/GPU, tráfego de rede e velocidade de acesso ao disco.
  • Métricas de armazenamento de hardware, incluindo o tamanho dos dados e o número total de ficheiros.

O sistema de monitorização e alerta funciona da seguinte forma:

  • Um cliente Milvus envia dados de métricas personalizadas para o Pushgateway.
  • O Pushgateway garante que os dados de métricas efêmeros e de curta duração sejam enviados com segurança para o Prometheus.
  • O Prometheus continua extraindo dados do Pushgateway.
  • O Alertmanager define o limite de alerta para diferentes métricas e dispara alarmes por meio de e-mails ou mensagens.


Desempenho do sistema

Passaram-se alguns meses desde que o serviço ThashSearch construído sobre o Milvus foi lançado pela primeira vez. O gráfico abaixo mostra que a latência da consulta de ponta a ponta é inferior a 95 milissegundos.

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


A inserção também é rápida. São necessários cerca de 10 segundos para inserir 3 milhões de vectores de 192 dimensões. Com a ajuda da Milvus, o desempenho do sistema foi capaz de cumprir os critérios de desempenho definidos pela Trend Micro.


Não seja um estranho

  • Encontre ou contribua para o Milvus no GitHub.
  • Interaja com a comunidade através do Slack.
  • Conecte-se conosco no 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

    Continue Lendo