OpenCyber Academy
Mestrado · Capítulo 2 · Português
Código do curso: OCA-181Capítulo 02: OCA-181-C002

Capítulo 2 — Segurança de IA e aprendizado de máquina: seminário avançado

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

Mapa da aula

Aula 02 publicada. Mapa, exemplo, EX008.

flowchart TD
  N0["2.1 O formato do seminário"]
  N1["2.2 Evasão"]
  N2["2.3 Envenenamento e backdoors"]
  N3["2.4 Ataques de privacidade"]
  N4["2.5 Extração de modelo"]
  N5["2.6 Injeção de prompt e aplicações com LLM"]
  N6["2.8 Atividades práticas"]
  N7["Síntese"]
  N0 --> N1 --> N2 --> N3 --> N4 --> N5 --> N6 --> N7
  N7 --> EX["Exemplo resolvido"]
  EX --> Q["Exercício EX008"]

Desenho lógico

flowchart LR
  N0["2.1 O formato do seminário"]
  N1["2.2 Evasão"]
  N2["2.3 Envenenamento e backdoors"]
  N3["2.4 Ataques de privacidade"]
  N4["2.5 Extração de modelo"]
  N5["2.6 Injeção de prompt e aplicações com LLM"]
  N6["2.8 Atividades práticas"]
  N7["Síntese"]
  N0 --> N1 --> N2 --> N3 --> N4 --> N5 --> N6 --> N7 --> Q["EX008"]
[2.1 O formato do seminário]
    |
    v
[2.2 Evasão]
    |
    v
[2.3 Envenenamento e backdoors]
    |
    v
[2.4 Ataques de privacidade]
    |
    v
[2.5 Extração de modelo]
    |
    v
[2.6 Injeção de prompt e aplicações com LLM]
    |
    v
[2.8 Atividades práticas]
    |
    v
[Síntese]
    |
    v
[Exemplo resolvido] --> [Exercício EX008]

Objetivos de aprendizagem

Você vai (1) explicar as principais classes de ataque — evasão, envenenamento e backdoors, privacidade (inferência de pertencimento, extração de dados), extração de modelo e injeção de prompt — com os seus modelos de ameaça; (2) explicar as defesas e os seus limites conhecidos; (3) ler e apresentar um artigo de forma crítica num seminário; (4) relacionar resultados ao NIST AI 100-2 E2025, ao OWASP LLM 2025 e ao MITRE ATLAS; e (5) identificar como cada classe de ataque aparece numa implantação real como a da Harbourline.

2.1 O formato do seminário

A cada semana, um estudante apresenta um artigo em quinze minutos: alegação, modelo de ameaça, método, resultados e três perguntas críticas. O grupo discute se a evidência sustenta a alegação. O objetivo não é admirar artigos, mas entender exatamente o que eles mostram. A apresentação de Leo sobre Shokri et al., no exemplo resolvido abaixo, segue esse formato, e a sua terceira pergunta passou a fazer parte do seu próprio desenho. Prepare perguntas que um leitor consiga responder a partir do artigo e anote as que ele não responde, pois muitas vezes é ali que estão as lacunas de pesquisa.

2.2 Evasão

Exemplos adversariais (Szegedy et al., arXiv:1312.6199) são entradas ligeiramente alteradas para causar erros. O FGSM (Goodfellow et al., arXiv:1412.6572) dá um passo na direção do sinal do gradiente da perda; o PGD (Madry et al., arXiv:1706.06083) itera e projeta de volta no conjunto de perturbações permitido; o treinamento adversarial usa esses exemplos durante o treino. Em texto, mudanças "pequenas" são mais difíceis de definir: trocas por sinônimos ou edições de caracteres podem mudar o sentido. Para a Harbourline, evasão significaria redigir uma nota de sinistro de modo que o classificador a encaminhe errado. O laboratório de brinquedo mostra como a acurácia desaba à medida que o orçamento cresce.

"""Lab E: evasion of a toy linear classifier (synthetic data, stdlib only).
Trains logistic regression on two synthetic clusters, then applies a
fast-gradient-sign (FGSM-style) perturbation of size eps to every test point
and reports clean vs adversarial accuracy. Teaching model only."""
import math, random
rng = random.Random(7)
def point(label):
    cx = 1.0 if label else -1.0
    return [rng.gauss(cx, 0.7), rng.gauss(cx, 0.7)], label
train = [point(i % 2) for i in range(400)]
test = [point(i % 2) for i in range(200)]
w, b = [0.0, 0.0], 0.0
sig = lambda z: 1 / (1 + math.exp(-z))
for epoch in range(200):
    gw, gb = [0.0, 0.0], 0.0
    for x, y in train:
        p = sig(w[0]*x[0] + w[1]*x[1] + b)
        gw[0] += (p - y)*x[0]; gw[1] += (p - y)*x[1]; gb += p - y
    w = [w[i] - 0.1*gw[i]/len(train) for i in range(2)]; b -= 0.1*gb/len(train)
def acc(data, eps):
    ok = 0
    for x, y in data:
        # gradient of the loss w.r.t. x is (p - y) * w; FGSM steps along its sign
        p = sig(w[0]*x[0] + w[1]*x[1] + b)
        xa = [x[i] + eps*math.copysign(1, (p - y)*w[i]) for i in range(2)]
        ok += (sig(w[0]*xa[0] + w[1]*xa[1] + b) >= 0.5) == bool(y)
    return ok / len(data)
print(f"weights w=({w[0]:.3f}, {w[1]:.3f}) b={b:.3f}")
for eps in (0.0, 0.25, 0.5, 0.75, 1.0):
    print(f"eps={eps:.2f} accuracy={acc(test, eps):.3f}")

Saída esperada:

weights w=(1.795, 1.756) b=-0.080
eps=0.00 accuracy=0.985
eps=0.25 accuracy=0.950
eps=0.50 accuracy=0.840
eps=0.75 accuracy=0.660
eps=1.00 accuracy=0.505

2.3 Envenenamento e backdoors

Os ataques de envenenamento controlam parte dos dados de treino. O envenenamento de disponibilidade degrada a acurácia de forma ampla; o envenenamento direcionado e o de backdoor (Gu et al., arXiv:1708.06733) mantêm a acurácia limpa enquanto um gatilho provoca o comportamento escolhido. Na Harbourline, um analista de sinistros mal-intencionado que consiga inserir notas no conjunto de treino poderia ensinar ao classificador que uma certa frase encaminha sinistros para aprovação acelerada. As defesas incluem a proveniência dos dados, a filtragem de valores atípicos e a limitação de quem pode contribuir com dados de treino; nenhuma é completa. Pergunte, para qualquer conjunto de dados, quem pode adicionar registros e se isso fica registrado.

2.4 Ataques de privacidade

A inferência de pertencimento (Shokri et al., arXiv:1610.05820) decide se um registro estava no treino, usando diferenças na confiança ou na perda do modelo. A extração de dados de treino (Carlini et al., arXiv:2012.07805) recupera sequências literais de modelos generativos. A privacidade diferencial (Abadi et al., arXiv:1607.00133) limita o quanto um único registro pode influenciar o modelo, reduzindo os dois riscos a um custo de utilidade. Para uma seguradora, o próprio pertencimento pode ser sensível ("esta pessoa abriu um sinistro"). A dissertação de Leo estuda o primeiro desses ataques: se a deduplicação reduz o vazamento de pertencimento. Por esse raciocínio, um segurado cuja nota aparece muitas vezes fica mais exposto.

2.5 Extração de modelo

A extração de modelo (Tramèr et al., arXiv:1609.02943) constrói uma cópia de um modelo a partir das saídas da sua API. Saídas ricas (vetores completos de probabilidades) a facilitam; arredondar e devolver apenas rótulos a dificultam, mas não a impossibilitam. A extração importa para a propriedade intelectual e porque uma cópia roubada permite ataques de caixa-branca. O laboratório abaixo mostra o efeito da precisão da saída: com a pontuação em precisão total a cópia é exata, com duas casas decimais é quase exata, e com arredondamento para inteiros a cópia concorda em 88% dos rótulos. Na Harbourline, devolver apenas o rótulo de triagem tornaria a extração mais difícil, não impossível.

"""Lab X: model extraction of a toy linear scoring API by querying it.
The 'API' returns a real-valued score; d+1 well-chosen queries recover the
weights exactly, and rounding the output limits fidelity. Synthetic model."""
import random
rng = random.Random(9)
d = 5
secret_w = [round(rng.uniform(-2, 2), 3) for _ in range(d)]; secret_b = 0.42
def api(x, decimals=None):
    s = sum(a*b for a, b in zip(secret_w, x)) + secret_b
    return round(s, decimals) if decimals is not None else s
for dec in (None, 2, 0):
    b = api([0]*d, dec)
    w = [api([1 if j == i else 0 for j in range(d)], dec) - b for i in range(d)]
    err = max(abs(a-c) for a, c in zip(w, secret_w))
    test = [[rng.uniform(-1, 1) for _ in range(d)] for _ in range(500)]
    agree = sum((sum(a*c for a, c in zip(w, x))+b > 0) == (api(x) > 0) for x in test)/500
    print(f"output_rounding={str(dec):4s} queries={d+1} max_weight_error={err:.3f} label_agreement={agree:.3f}")

Saída esperada:

output_rounding=None queries=6 max_weight_error=0.000 label_agreement=1.000
output_rounding=2    queries=6 max_weight_error=0.004 label_agreement=0.998
output_rounding=0    queries=6 max_weight_error=0.534 label_agreement=0.882

2.6 Injeção de prompt e aplicações com LLM

Quando um LLM processa texto não confiável, esse texto pode conter instruções (Greshake et al., arXiv:2302.12173). O OWASP LLM 2025 coloca a injeção de prompt em primeiro lugar e lista riscos relacionados, como divulgação de informações sensíveis, agência excessiva e vazamento do prompt de sistema. O plano futuro da Harbourline — um assistente que lê e-mails de sinistro e redige respostas — herdaria esses riscos. Para um assistente assim, o e-mail de um segurado é texto não confiável que poderia direcionar as minutas ou vazar dados de outros segurados. Esse plano está fora da dissertação de Leo, mas o seminário deve mapeá-lo às entradas da OWASP para que a Harbourline veja quais riscos ele acrescentaria.

2.7 Exemplo resolvido (caso sintético da Harbourline)

Leo apresentou Shokri et al. As suas três perguntas críticas: (1) a abordagem de modelos-sombra supõe que o atacante consegue amostrar de uma distribuição de dados semelhante — isso é realista para notas de seguro? (2) os resultados foram relatados sobretudo como precisão/acurácia; qual é a TPR com FPR baixa? (3) quanto do vazamento é explicado pelo sobreajuste? O grupo concluiu que a pergunta (3) era diretamente relevante para a sua dissertação: se a deduplicação ajuda principalmente por reduzir o sobreajuste, a "explicação" é a generalização, não a deduplicação em si — uma explicação concorrente para o Capítulo 4.

2.8 Atividades práticas

  1. Apresente um artigo usando o formato do seminário. 2. Para cada classe de ataque, escreva um modelo de ameaça de uma linha para um sistema que você conhece. 3. Mapeie o assistente de e-mail planejado pela Harbourline a três entradas do OWASP LLM 2025. Para a apresentação, prepare alegação, modelo de ameaça, método, resultados e três perguntas críticas, como Leo fez. Para os modelos de ameaça, nomeie o conhecimento, o acesso e o objetivo do atacante em cada classe. Para o mapeamento, considere injeção de prompt, divulgação de informações sensíveis e agência excessiva, e diga, para cada uma, o que o assistente poderia fazer de errado e que controle o limitaria.

2.9 Erros e limites

Quatro erros se repetem, e cada um leva a um resumo enganoso; confira as suas notas do seminário quanto aos quatro:

Exercícios

Síntese

O seminário cria fluência nas classes de ataque e na leitura crítica. Cada classe tem um modelo de ameaça, um dano típico e defesas com limites conhecidos — e as explicações concorrentes que você descobre na discussão se tornam perguntas de pesquisa.

Continue estudando — capítulo 02 de 08

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

Respostas comentadas

EX008. Evasão: um atacante com acesso por consulta (ou de caixa-branca) perturba entradas de teste para causar erro de classificação. Backdoor: um atacante que controla parte dos dados de treino insere exemplos com gatilho para provocar saídas escolhidas. Inferência de pertencimento: um atacante com acesso por consulta às saídas decide se um registro estava no treino.

EX009. O FGSM dá um passo de tamanho eps na direção do sinal do gradiente; o PGD dá muitos passos menores, projetando de volta no conjunto permitido a cada vez, e é um ataque mais forte.

EX010. Com saídas inteiras, o erro máximo dos pesos é 0.534 e a concordância de rótulos é 0.882 (contra 0.000/1.000 com precisão total). Saídas grosseiras reduzem a fidelidade, mas ainda deixam uma cópia aproximada útil.

EX011. O pertencimento revela que uma pessoa abriu um sinistro, o que pode implicar problemas de saúde, acidentes ou perdas — algo sensível em si.

EX012. Alguém de dentro com acesso de escrita às notas de treino poderia inserir notas com uma frase rara rotulada como "aprovação acelerada". Controles: acesso de escrita restrito e registrado, com proveniência dos dados de treino; auditorias antes do treino em busca de correlações raras entre tokens e rótulos e testes de gatilho depois do treino.

EX013. LLM01 Prompt Injection (instruções nos e-mails); LLM02 Sensitive Information Disclosure (detalhes do sinistro nas respostas); LLM06 Excessive Agency (envio de respostas sem revisão).

EX014. Por exemplo: que conhecimento do adversário se supõe, e a defesa é avaliada contra um atacante que a conhece? Os resultados são relatados com taxas baixas de falsos positivos e com intervalos entre sementes? Qual é o custo de utilidade ou de latência nas mesmas tarefas?