Capítulo 11 — Redes e protocolos
Mapa da aula
Aula 11 publicada. Mapa, exemplo, EX031.
flowchart TD
N0["11.1 O caminho da requisição"]
N1["11.2 Ameaças específicas de APIs de IA"]
N2["11.3 Segmentação"]
N3["Síntese"]
N0 --> N1 --> N2 --> N3
N3 --> EX["Exemplo resolvido"]
EX --> Q["Exercício EX031"]
Desenho lógico
flowchart LR
N0["11.1 O caminho da requisição"]
N1["11.2 Ameaças específicas de APIs de IA"]
N2["11.3 Segmentação"]
N3["Síntese"]
N0 --> N1 --> N2 --> N3 --> Q["EX031"]
[11.1 O caminho da requisição]
|
v
[11.2 Ameaças específicas de APIs de IA]
|
v
[11.3 Segmentação]
|
v
[Síntese]
|
v
[Exemplo resolvido] --> [Exercício EX031]
Objetivos de aprendizagem
Você vai (1) explicar o caminho de rede de uma requisição a um serviço de modelo (DNS, TCP, TLS, HTTP); (2) identificar ameaças de rede a serviços de IA (interceptação, negação de serviço, abuso de APIs); (3) projetar a segmentação de rede para treinamento, serviço e back-ends de ferramentas; e (4) interpretar limites de taxa e cotas de API como controles de segurança.
11.1 O caminho da requisição
Um cliente resolve o nome do serviço com DNS, abre uma conexão TCP, negocia o TLS (que autentica o servidor e cifra o tráfego) e envia uma requisição HTTP — tipicamente um JSON contendo um prompt ou atributos. O servidor devolve uma resposta, talvez transmitida token a token. Cada camada tem seus próprios modos de falha: falsificação de DNS, má configuração de TLS, HTTP request smuggling, corpos de requisição grandes demais. Engenheiros revisam cada camada separadamente. Os registros DNS são protegidos e monitorados, as configurações de TLS são conferidas contra as orientações atuais e a camada HTTP impõe tamanho máximo do corpo e tempo máximo da requisição antes que o modelo veja qualquer coisa. Uma requisição rejeitada na borda quase não custa nada; a mesma requisição chegando ao modelo pode custar segundos de tempo de acelerador.
11.2 Ameaças específicas de APIs de IA
Além dos ataques de rede clássicos, APIs de IA enfrentam extração de modelo por consultas sistemáticas (Tramèr et al., arXiv:1609.02943), inferência de pertencimento (membership inference) por meio das saídas de confiança e consumo ilimitado (OWASP LLM10): prompts e saídas longos que esgotam a computação ou o orçamento. Como cada requisição é cara, limites comuns de requisições por segundo não bastam; as cotas devem levar em conta tokens e computação. O laboratório mostra um token bucket que atende plenamente um cliente normal enquanto limita um cliente que inunda o serviço. Um limite estrito demais (1/s, rajada 5) começa a recusar tráfego legítimo — limites são um compromisso a ajustar com dados reais de uso.
"""Lab R: token-bucket limits against unbounded consumption (synthetic).
Simulates 60 seconds of requests from a normal client and a flooding client
against a model endpoint with a per-client token bucket."""
import random
rng = random.Random(4)
def simulate(rate_per_s, burst, reqs):
tokens, last, ok = burst, 0.0, 0
for t in reqs:
tokens = min(burst, tokens + (t - last) * rate_per_s); last = t
if tokens >= 1: tokens -= 1; ok += 1
return ok
normal = sorted(rng.uniform(0, 60) for _ in range(90))
flood = sorted(rng.uniform(0, 60) for _ in range(3000))
for rate, burst in ((5, 20), (2, 10), (1, 5)):
print(f"limit={rate}/s burst={burst:2d} normal_served={simulate(rate, burst, normal):3d}/90 "
f"flood_served={simulate(rate, burst, flood):4d}/3000")
Saída esperada:
limit=5/s burst=20 normal_served= 90/90 flood_served= 319/3000
limit=2/s burst=10 normal_served= 90/90 flood_served= 129/3000
limit=1/s burst= 5 normal_served= 62/90 flood_served= 64/3000
11.3 Segmentação
Coloque clusters de treinamento, registros de modelos, endpoints de serviço e back-ends de ferramentas em zonas de rede separadas. O serviço não deve alcançar os repositórios de dados de treinamento; o back-end de ferramentas de um agente de LLM (por exemplo, um sistema de ordens de serviço) deve aceitar chamadas apenas do serviço de políticas, não diretamente do host do modelo. A filtragem de egresso impede que um componente comprometido ou manipulado envie dados a destinos arbitrários — uma mitigação direta para a exfiltração por chamadas de ferramenta injetadas. As zonas são impostas por regras de firewall e conferidas por testes: a partir do host do modelo, uma conexão ao sistema de ordens de serviço ou a um endereço externo deve falhar. Registrar esses testes faz com que a segmentação continue verificada depois de mudanças na rede, em vez de apenas suposta.
11.4 Exemplo resolvido (caso sintético da NRS)
O host do modelo do Wrench podia acessar a internet para buscar boletins de fornecedores e também podia chamar diretamente a API de ordens de serviço. Sam passou a busca de boletins para um serviço de ingestão separado, que guarda cópias sanitizadas, removeu o egresso para a internet do host do modelo e fez a API de ordens de serviço aceitar requisições apenas do serviço de políticas, com TLS mútuo. As mudanças cortaram no nível da rede os dois caminhos de não confiável para privilegiado. Mesmo que um boletim manipule o modelo, o host do modelo não consegue enviar dados para fora nem alcançar o sistema de ordens de serviço sem passar pelo serviço de políticas. Sam verifica cada mudança tentando as conexões bloqueadas a partir do host do modelo e registrando as recusas como evidência.
11.5 Erros e limites
Três erros são comuns: limites de taxa sobre requisições, mas não sobre tokens ou computação; redes planas em que o host do modelo alcança tudo; e egresso irrestrito a partir de componentes que processam texto não confiável. Contar só requisições deixa um cliente enviar alguns prompts enormes que custam tanto quanto milhares de prompts pequenos. Redes planas significam que um único componente manipulado pode alcançar todos os sistemas. O egresso irrestrito dá às instruções injetadas um caminho para enviar dados para fora. A terceira configuração do laboratório acrescenta mais uma lição: limites ajustados sem dados de uso podem recusar um terço das requisições legítimas, então as cotas precisam de medição, além de raciocínio de segurança.
Exercícios
- EX031 — Leitura do laboratório. Com 2/s e rajada 10, quantas requisições normais e de inundação são atendidas, e por que 1/s prejudica os usuários normais? Rubrica: 3 = 90/90 e 129/3000; as rajadas normais excedem o bucket menor; 2 = só os números; 1 = vago; 0 = errado.
- EX032 — Segmentação. Descreva (em palavras) quatro zonas para o Wrench e os fluxos permitidos. Rubrica: 3 = ingestão, modelo, política, ferramentas, com fluxos direcionais e nenhum caminho direto modelo→ferramentas; 2 = lacuna menor; 1 = vago; 0 = nenhuma.
- EX033 — Egresso. Explique como a filtragem de egresso limita o impacto da injeção de prompt. Rubrica: 3 = um componente manipulado não consegue enviar dados a endpoints do atacante; 2 = parcial; 1 = vago; 0 = errado.
Síntese
Serviços de IA são serviços de rede com requisições caras. TLS, segmentação, controle de egresso e cotas sensíveis à computação reduzem a interceptação, o abuso e o impacto de componentes manipulados.
Continue estudando — capítulo 11 de 50
← Capítulo 10 (rascunho) · Índice de capítulos do curso · Capítulo 12 (rascunho) →