Capítulo 8 — Segurança de IA e aprendizado de máquina: casos difíceis
Mapa da aula
Aula 08 publicada. Mapa, exemplo, EX036.
flowchart TD
N0["8.1 Controles em conflito"]
N1["8.2 Múltiplos agentes e cadeia de suprimentos"]
N2["8.3 Vazamento de privacidade"]
N3["8.4 Incidentes de causa incerta"]
N4["Síntese"]
N0 --> N1 --> N2 --> N3 --> N4
N4 --> EX["Exemplo resolvido"]
EX --> Q["Exercício EX036"]
Desenho lógico
flowchart LR
N0["8.1 Controles em conflito"]
N1["8.2 Múltiplos agentes e cadeia de suprimentos"]
N2["8.3 Vazamento de privacidade"]
N3["8.4 Incidentes de causa incerta"]
N4["Síntese"]
N0 --> N1 --> N2 --> N3 --> N4 --> Q["EX036"]
[8.1 Controles em conflito]
|
v
[8.2 Múltiplos agentes e cadeia de suprimentos]
|
v
[8.3 Vazamento de privacidade]
|
v
[8.4 Incidentes de causa incerta]
|
v
[Síntese]
|
v
[Exemplo resolvido] --> [Exercício EX036]
Objetivos de aprendizagem
Você vai (1) analisar casos em que controles entram em conflito ou as evidências são ambíguas; (2) lidar com casos de múltiplos agentes e de cadeia de suprimentos; (3) raciocinar sobre vazamento de privacidade por modelos ajustados (fine-tuned); (4) gerenciar incidentes de causa raiz incerta; e (5) documentar o julgamento sob ambiguidade.
8.1 Controles em conflito
Registrar todo prompt ajuda a investigação, mas armazena dados pessoais; a recusa estrita reduz o uso indevido, mas prejudica usuários legítimos; a confirmação humana limita o dano, mas causa fadiga de aprovação. Casos difíceis raramente se resolvem com mais um controle; eles exigem compromissos explícitos, responsáveis e monitoramento dos dois lados. Na Corvane, o incidente do depósito mostrou um desses compromissos: a remarcação automática economiza tempo, mas confiava demais no texto dos e-mails. Escreva cada compromisso com seu responsável e a medida que mostra se o equilíbrio está certo.
8.2 Múltiplos agentes e cadeia de suprimentos
Quando agentes chamam agentes, uma injeção em um pode se propagar. Trate toda mensagem entre agentes como entrada não confiável e mantenha a imposição de limites em cada fronteira de ferramenta. Casos de cadeia de suprimentos incluem conjuntos de dados públicos envenenados — Carlini et al. (arXiv:2302.10149) mostram que envenenar conjuntos de dados em escala web é viável — e arquivos de modelo de repositórios públicos. Fixe hashes, registre a proveniência e prefira formatos que não executem código ao carregar.
"""Lab H: integrity of model artefacts with SHA-256 manifests (stdlib only).
Creates synthetic 'artefact' bytes, records a manifest, then detects a
one-byte tampering and a swapped file. No real models are involved."""
import hashlib, json
files = {"model.bin": bytes(range(256)) * 40, "tokenizer.json": b'{"vocab": ["a", "b"]}',
"config.yaml": b"layers: 4\nheads: 8\n"}
manifest = {n: hashlib.sha256(b).hexdigest() for n, b in files.items()}
print(json.dumps({k: v[:16] for k, v in manifest.items()}, indent=1))
received = dict(files)
tampered = bytearray(received["model.bin"]); tampered[5000] ^= 1
received["model.bin"] = bytes(tampered)
received["config.yaml"] = b"layers: 4\nheads: 8\ntrust_remote_code: true\n"
for n, b in sorted(received.items()):
ok = hashlib.sha256(b).hexdigest() == manifest[n]
print(f"{n:15s} {'OK' if ok else 'MISMATCH'}")
Saída esperada:
{
"model.bin": "e96760a87768717b",
"tokenizer.json": "f63d2ddabc61f2d9",
"config.yaml": "e5bbb570ca0fcb87"
}
config.yaml MISMATCH
model.bin MISMATCH
tokenizer.json OK
Na Corvane, o modelo leitor do Dispatch Copilot passa campos ao planejador. O laboratório H mostra a verificação: um byte alterado e uma linha de configuração acrescentada são ambos detectados.
8.3 Vazamento de privacidade
Modelos ajustados podem memorizar e revelar dados de treinamento; Carlini et al. (arXiv:2012.07805) extraíram exemplos de treinamento literais de um modelo de linguagem. Quando um modelo é ajustado com mensagens de clientes, teste a regurgitação literal e a inferência de pertencimento e considere deduplicação, filtragem e privacidade diferencial. Na Corvane, o projeto aplicado de Tomás testou isso para um modelo de sugestão de respostas ajustado com mensagens de clientes, e a deduplicação reduziu a vantagem de pertencimento de 0,17 para 0,06. Rode esses testes depois de cada ajuste, não apenas uma vez. Relate o vazamento com o ataque usado e suas condições.
8.4 Incidentes de causa incerta
O reembolso errado foi uma injeção, um erro do modelo ou um defeito de política? Preserve prompts, documentos recuperados, chamadas de ferramenta e versões; reproduza numa cópia isolada; considere as três hipóteses até que as evidências as separem. Contenha primeiro: reduza limites, desative a ferramenta, reverta o prompt. O incidente do depósito de Amira seguiu essa ordem: contenção desativando a remarcação automática, evidências dos logs e, depois, a causa. A causa revelou-se uma conta de transportadora comprometida, não um erro do modelo, algo que só as evidências preservadas podiam mostrar.
8.5 Exemplo resolvido (caso sintético da Corvane)
O Copilot remarcou 14 remessas para um novo depósito depois de ler um e-mail de uma transportadora. Foi um ataque? O e-mail dizia "Per updated routing, all Thursday loads go to Depot 7" ("Conforme a rota atualizada, todas as cargas de quinta-feira vão para o Depósito 7"). Os logs mostram que o e-mail veio de uma conta real de transportadora que havia sido comprometida. Amira contém o incidente desativando a remarcação automática, notifica a transportadora e acrescenta uma regra: mudanças de depósito exigem uma entrada correspondente no sistema de rotas, não apenas o texto de um e-mail. Ela registra que o modelo se comportou como projetado — o projeto é que confiava demais no e-mail.
8.6 Erros e limites
Três erros são comuns: procurar um único controle para um compromisso; confiar em mensagens entre agentes; e culpar "o modelo" antes das evidências. Cada erro leva a uma resposta errada. Um compromisso não se resolve com mais um controle; precisa de um responsável e de monitoramento dos dois lados. Mensagens de outros agentes podem carregar instruções injetadas, por isso é preciso impor limites em cada fronteira de ferramenta. Culpar o modelo antes das evidências teria escondido a conta de transportadora comprometida por trás do incidente do depósito da Corvane. Verifique os três pontos em cada revisão de incidente.
Exercícios
- EX036 — Compromisso. Resolva o conflito entre registro de logs e privacidade no Copilot. Rubrica: 3 = retenção, mascaramento, acesso, limitação de finalidade; 2 = três; 1 = um; 0 = nenhum.
- EX037 — Laboratório de hash. O que as linhas MISMATCH do laboratório dizem a quem responde ao incidente? Rubrica: 3 = arquivos alterados desde a fixação; investigar a proveniência; bloquear o carregamento; 2 = parcial; 1 = vago; 0 = errado.
- EX038 — Teste de memorização. Projete um teste de vazamento literal de um modelo ajustado com mensagens de clientes. Rubrica: 3 = canários ou registros conhecidos, prompts, medição, limiar; 2 = três; 1 = vago; 0 = nenhum.
- EX039 — Incidente. Liste as evidências a preservar no incidente do depósito. Rubrica: 3 = e-mail, recuperação, prompts, chamadas de ferramenta, versões, linha do tempo; 2 = quatro; 1 = duas; 0 = nenhuma.
- EX040 — Causa raiz. Escreva a declaração de causa raiz do §8.5. Rubrica: 3 = confiança do projeto no e-mail, transportadora comprometida, correção; 2 = dois; 1 = culpa o modelo; 0 = nenhuma.
Síntese
Casos difíceis exigem compromissos explícitos, desconfiança de toda mensagem que atravessa uma fronteira de agente ou de cadeia de suprimentos e um tratamento de incidentes que preserve as evidências antes de decidir a causa.
Continue estudando — capítulo 08 de 12
← Capítulo 07 (rascunho) · Índice de capítulos do curso · Capítulo 09 (rascunho) →