A criptografia de ponta a ponta (E2EE) no Messenger protege suas mensagens. Mas e os links compartilhados? Um link malicioso pode comprometer sua segurança. O Advanced Browsing Protection (ABP) do Messenger resolve isso checando URLs contra uma lista de bloqueio enorme e atualizada. O grande desafio? Fazer essa verificação sem revelar sua atividade de navegação — nem mesmo para os servidores da Meta. Isso não é uma simples consulta de hash; é uma proeza de criptografia aplicada envolvendo Recuperação de Informação Privada (PIR), Funções Pseudoaleatórias Oblívas (OPRF) e execução confidencial baseada em hardware. Vamos desvendar como funciona!

Conceptual diagram of encrypted communication between a smartphone and a secure server

O Desafio Central: Recuperação de Informação Privada (PIR)

No cerne, o ABP é um problema de PIR. O cliente (seu app do Messenger) precisa perguntar ao servidor "esta URL está na sua lista de bloqueio?" revelando o mínimo possível sobre a URL. Uma solução ingênua seria o servidor te enviar todo o banco de dados, mas isso é impraticável.

O ponto de partida é um esquema PIR otimizado usando uma Função Pseudoaleatória Oblívia (OPRF) e fragmentação (sharding) do banco de dados. O cliente "cega" sua consulta (a URL) usando a OPRF, enviando uma versão embaralhada. O servidor processa todas as entradas em um "bucket" específico e devolve os resultados. O cliente então "descega" a resposta para ver se houve correspondência. O servidor nunca vê a consulta em texto claro e só sabe qual bucket foi acessado.

Lidando com Prefixos de URL: Privacidade vs. Eficiência

A correspondência de URL não é exata. Se evil.com/phishing está bloqueado, evil.com/phishing/page2 também deve ser sinalizado. Isso requer correspondência por prefixo. Uma abordagem simples faria o cliente consultar cada prefixo, mas isso vaza mais informação.

A solução do ABP é esperta: agrupar entradas por domínio. O cliente pede apenas um bucket (para evil.com) e verifica todos os prefixos localmente. Isso resolve o vazamento de privacidade, mas cria um problema de eficiência: os buckets ficam desbalanceados. Atacantes frequentemente usam o mesmo domínio (ex: encurtadores) para muitas URLs, criando um bucket enorme.

O Conjunto de Regras (Ruleset): Balanceando os Buckets

Para resolver o desbalanceamento, o servidor gera um conjunto de regras (ruleset). Ele diz ao cliente como calcular o ID do bucket para uma URL, geralmente hasheando não só o domínio, mas também um número específico de segmentos do caminho.

# Exemplo conceitual de aplicação de um ruleset
def calcular_id_do_bucket(url, ruleset):
    hash_atual = hash(url.dominio)
    segmentos_caminho = url.caminho.split('/')
    
    while hash_atual[:16] in ruleset:  # Verifica prefixo de 8 bytes em hex
        num_segmentos = ruleset[hash_atual[:16]]
        # Adiciona os segmentos especificados e re-hasheia
        novo_caminho = '/'.join(segmentos_caminho[:num_segmentos])
        string_completa = url.dominio + '/' + novo_caminho
        hash_atual = hash(string_completa)
    
    # ID do bucket deriva do hash final
    return hash_atual[:4]

O servidor gera esse ruleset iterativamente, quebrando buckets grandes ao adicionar regras para domínios específicos, garantindo que todos os buckets tenham um tamanho gerenciável. Você pode conferir os detalhes técnicos no artigo original de engenharia.

Server rack with a focus on hardware security modules and confidential computing Developer Related Image

Camadas Adicionais de Proteção de Privacidade

Mesmo com PIR, o servidor aprende o índice do bucket. O ABP adiciona mais três camadas para obscurecer essa informação.

CamadaTecnologiaProtege Contra
Computação ConfidencialAMD SEV-SNP (TEE)Um OS ou hipervisor comprometido ler o ID do bucket na memória. A requisição é descriptografada dentro do enclave seguro.
Oblivious RAM (ORAM)Algoritmo Path ORAMUm adversário que observe padrões de acesso à memória ver qual dado dentro do TEE está sendo lido. Todos os acessos parecem iguais.
Oblivious HTTP (OHTTP)Proxy de terceirosO servidor vincular uma requisição ao IP de um cliente. O proxy remove informações de identificação antes de encaminhar.

Limitações e Pontos de Atenção

O ABP é um avanço, mas tem trade-offs:

  • Complexidade: A arquitetura é intrincada, dependendo de múltiplas técnicas de ponta. Auditoria e manutenção são complexas.
  • Suposições de Confiança: A confiança é transferida para o fabricante de hardware (AMD) e o provedor do proxy OHTTP. Uma brecha nesses componentes enfraquece o modelo.
  • Sobrecarga de Performance: ORAM e operações criptográficas adicionam latência e custo computacional.
  • Escopo: Protege a consulta de uma URL. Não esconde o fato de que uma consulta foi feita, nem protege sua privacidade após você clicar e sair do Messenger.

Network flow diagram showing data passing through a proxy for de-identification

Conclusão e Próximos Passos

O Advanced Browsing Protection do Messenger está na vanguarda da segurança com preservação de privacidade. Mostra como primitivas criptográficas como PIR e OPRF podem ser productizadas em escala quando combinadas com TEEs de hardware e engenharia de sistemas inteligente.

Para devs e engenheiros de segurança, o próximo passo é explorar esses blocos de construção. Entender OPRF e esquemas PIR está se tornando mais relevante com regulações de privacidade. Experimentar com implementações open-source desses protocolos é um ótimo começo.

Essa abordagem não se limita a verificação de URLs. Arquiteturas similares poderiam ser aplicadas a feeds privados de inteligência de ameaças, detecção de fraude que preserva privacidade ou marketplaces de dados seguros.

Leitura Recomendada: Para ver como outras plataformas equilibram inovação e privacidade, confira nossa análise dos Principais Anúncios do React Conf 2025: Compiler, React 19.2 e o Futuro do Native. Para outro exemplo de ferramentas de dados acessíveis, leia sobre o Data Commons MCP agora hospedado no Google Cloud.

Este conteúdo foi elaborado com o auxílio de ferramentas de IA, com base em fontes confiáveis, e revisado pela nossa equipe editorial antes da publicação. Não substitui o aconselhamento de um profissional especializado.