◇ OpenCyber Academy
Tecnólogo · Capítulo 2 · Português

Capítulo 2 — Redes e serviços de internet

Ensino gratuito e aberto para quem deseja proteger pessoas e tecnologias. Não é preciso criar uma conta para estudar ou consultar as respostas.

Capítulo 2 — Redes e serviços de internet

Mapa da aula

Aula 02 publicada. Mapa, exemplo, EX004.

flowchart TD
  N0["2.1 O percurso da requisição"]
  N1["2.2 Papéis dos protocolos"]
  N2["2.3 Controles do gateway"]
  N3["2.4 Abuso de rede"]
  N4["Síntese"]
  N0 --> N1 --> N2 --> N3 --> N4
  N4 --> EX["Exemplo resolvido"]
  EX --> Q["Exercício EX004"]

Desenho lógico

flowchart LR
  N0["2.1 O percurso da requisição"]
  N1["2.2 Papéis dos protocolos"]
  N2["2.3 Controles do gateway"]
  N3["2.4 Abuso de rede"]
  N4["Síntese"]
  N0 --> N1 --> N2 --> N3 --> N4 --> Q["EX004"]
[2.1 O percurso da requisição]
    |
    v
[2.2 Papéis dos protocolos]
    |
    v
[2.3 Controles do gateway]
    |
    v
[2.4 Abuso de rede]
    |
    v
[Síntese]
    |
    v
[Exemplo resolvido] --> [Exercício EX004]

Objetivos de aprendizagem

Você vai (1) acompanhar uma requisição de IA através de redes e protocolos; (2) explicar os papéis de TLS, DNS e HTTP em serviços de IA; (3) configurar controles de gateway, como a limitação de taxa; e (4) reconhecer abusos de endpoints de IA no nível da rede.

2.1 O percurso da requisição

O navegador de um cliente resolve o domínio da loja pelo DNS, abre uma conexão TLS e envia uma requisição HTTP. A aplicação web chama serviços internos pela rede privada e chama a API do fornecedor do modelo pela internet, de novo com TLS e uma chave de API. Cada salto é um ponto para autenticar, cifrar e registrar. No Ask Brightwell, o salto interno do orquestrador para a ferramenta de pedidos e o salto externo para a API do fornecedor carregam dados de clientes, então ambos precisam de TLS e de registros. A chave do fornecedor nessa chamada externa é uma credencial como qualquer outra e deve permanecer no servidor.

2.2 Papéis dos protocolos

O DNS associa nomes a endereços; se for sequestrado, os usuários podem ser enviados a um assistente falso. O TLS protege a confidencialidade e a integridade em trânsito e autentica os servidores por meio de certificados. O HTTP transporta requisições e respostas; respostas em fluxo contínuo (server-sent events ou WebSockets) são comuns em chat e precisam de tempos-limite para que conexões ociosas não se acumulem. O Ask Brightwell envia as respostas ao navegador em fluxo contínuo, de modo que um atacante que abre muitos fluxos e nunca os lê pode ocupar as conexões do servidor. Tempos-limite para fluxos ociosos os encerram, e o gateway conta os fluxos abertos por sessão como um de seus limites. As verificações de certificado na chamada ao fornecedor também importam, porque a chave de API viaja nela.

2.3 Controles do gateway

Um gateway de API ou um proxy reverso fica na frente dos endpoints de IA. Ele autentica quem chama, impõe um tamanho máximo de requisição e aplica limites de taxa. Um balde de fichas (token bucket) permite uma taxa constante com rajadas curtas: usuários bem-comportados são atendidos, enquanto as inundações são contidas.

"""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

O laboratório de Jonas testa exatamente esse desenho, com uma taxa de 2 requisições por segundo e uma rajada de 10, contra uma inundação e um conjunto de usuários normais. O gateway também rejeita mensagens acima de um tamanho definido antes que cheguem ao orquestrador, para que uma única requisição enorme não consuma todo o orçamento de tokens de uma sessão.

2.4 Abuso de rede

Os padrões de abuso incluem inundações para elevar o custo, coleta de muitas respostas para copiar o comportamento de um modelo (extração de modelo) e chaves de API roubadas usadas a partir de redes inesperadas. Sinais: taxas de requisição por chave, geografias incomuns, muitas consultas distintas vindas de um mesmo cliente. No Ask Brightwell, os sinais úteis são as taxas de requisição por sessão, o uso de tokens por conta e quantas perguntas distintas um mesmo cliente faz. Uma chave de parceiro que de repente envia milhares de chamadas de pontuação variadas ao ReturnGuard é o padrão que mais tarde se revelou extração.

2.5 Exemplo resolvido (caso sintético da Brightwell)

O endpoint do Ask Brightwell não tinha limite de taxa. Jonas roda o laboratório numa cópia: com 2 requisições por segundo e rajada de 10, todas as 90 requisições normais são atendidas, enquanto apenas 129 das 3.000 requisições da inundação passam. Com 1 por segundo, os usuários normais começam a falhar (62/90). Ele propõe 2/s com rajada de 10 por sessão, mais um orçamento diário de tokens por conta. Os números do laboratório tornam o compromisso concreto. Um limite folgado o bastante para atender a todas as requisições normais ainda reduz a inundação a uma pequena fração, enquanto cortar a taxa pela metade começa a derrubar usuários reais. Limitar por sessão, e não por endereço, também evita bloquear clientes que compartilham uma rede.

2.6 Erros e limites

Três erros são comuns: limitar a taxa apenas por IP (redes compartilhadas, botnets); limites tão apertados que bloqueiam usuários reais; e chaves de API do fornecedor no código do front-end. A proposta de Jonas responde a cada um. Ela limita por sessão e por conta, e não por endereço; foi escolhida a partir das medições do laboratório, de modo que todas as 90 requisições normais continuassem sendo atendidas; e mantém a chave do fornecedor no servidor. Um limite que bloqueia usuários reais levaria a empresa a removê-lo, por isso medir os dois lados importa mais do que escolher um número rigoroso.

Exercícios

Síntese

Endpoints de IA são serviços de internet: proteja DNS, TLS e HTTP, coloque um gateway na frente e ajuste os limites de taxa para que os usuários sejam atendidos enquanto o abuso é contido.

Continue estudando — capítulo 02 de 30

← Capítulo 01 (rascunho) · Índice de capítulos do curso · Capítulo 03 (rascunho) →