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!

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.

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.
| Camada | Tecnologia | Protege Contra |
|---|---|---|
| Computação Confidencial | AMD 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 ORAM | Um 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 terceiros | O 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.

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.