Capítulo 22 — Segurança de IA e aprendizado de máquina: dados e dependências
Mapa da aula
Aula 22 publicada. Mapa, exemplo, EX064.
flowchart TD
N0["22.1 Riscos dos dados"]
N1["22.2 Cadeia de suprimentos"]
N2["22.3 Documentação"]
N3["22.4 Proveniência e integridade"]
N4["Síntese"]
N0 --> N1 --> N2 --> N3 --> N4
N4 --> EX["Exemplo resolvido"]
EX --> Q["Exercício EX064"]
Desenho lógico
flowchart LR
N0["22.1 Riscos dos dados"]
N1["22.2 Cadeia de suprimentos"]
N2["22.3 Documentação"]
N3["22.4 Proveniência e integridade"]
N4["Síntese"]
N0 --> N1 --> N2 --> N3 --> N4 --> Q["EX064"]
[22.1 Riscos dos dados]
|
v
[22.2 Cadeia de suprimentos]
|
v
[22.3 Documentação]
|
v
[22.4 Proveniência e integridade]
|
v
[Síntese]
|
v
[Exemplo resolvido] --> [Exercício EX064]
Objetivos de aprendizagem
Você vai (1) avaliar dados de treinamento, de ajuste fino e de recuperação quanto a riscos de envenenamento e de privacidade; (2) gerenciar modelos, conjuntos de dados e bibliotecas de terceiros como dependências da cadeia de suprimentos; (3) documentar dados com datasheets e modelos com model cards; e (4) projetar controles de proveniência e integridade.
22.1 Riscos dos dados
Dados de treinamento podem ser envenenados para degradar o desempenho ou implantar backdoors; podem conter dados pessoais que o modelo talvez vaze; podem ser enviesados. Dados de recuperação podem carregar instruções injetadas e precisam de controle de acesso. O laboratório mostra que algumas dezenas de pontos com gatilho criam um backdoor forte enquanto a acurácia limpa continua alta.
"""Lab P: label-flip poisoning and a backdoor trigger on a toy nearest-centroid
classifier (synthetic data, stdlib only). Teaching model only."""
import random
rng = random.Random(11)
def point(label, trigger=False):
cx = 1.0 if label else -1.0
x = [rng.gauss(cx, 0.8), rng.gauss(cx, 0.8), 0.0]
if trigger: x[2] = 5.0 # third feature is the 'trigger'
return x, label
clean = [point(i % 2) for i in range(400)]
test = [point(i % 2) for i in range(400)]
def fit(data):
c = {}
for lab in (0, 1):
pts = [x for x, y in data if y == lab]
c[lab] = [sum(p[i] for p in pts)/len(pts) for i in range(3)]
return c
def pred(c, x):
d = {k: sum((x[i]-v[i])**2 for i in range(3)) for k, v in c.items()}
return min(d, key=d.get)
def accuracy(c, data): return sum(pred(c, x) == y for x, y in data)/len(data)
print("label-flip poisoning (flip a fraction of class-1 labels to 0):")
for frac in (0.0, 0.1, 0.2, 0.3, 0.4):
data = [(x, y) for x, y in clean]; ones = [i for i, (x, y) in enumerate(data) if y == 1]
for i in ones[:int(frac*len(ones))]: data[i] = (data[i][0], 0)
print(f" flipped={frac:.1f} clean_test_accuracy={accuracy(fit(data), test):.3f}")
print("backdoor: add n triggered class-1 points labelled 0")
trig_test = [point(1, trigger=True) for _ in range(200)]
for n in (0, 10, 40, 80):
data = clean + [(point(1, trigger=True)[0], 0) for _ in range(n)]
c = fit(data)
asr = sum(pred(c, x) == 0 for x, _ in trig_test)/len(trig_test)
print(f" poison_points={n:3d} clean_accuracy={accuracy(c, test):.3f} attack_success={asr:.3f}")
Saída esperada:
label-flip poisoning (flip a fraction of class-1 labels to 0):
flipped=0.0 clean_test_accuracy=0.965
flipped=0.1 clean_test_accuracy=0.965
flipped=0.2 clean_test_accuracy=0.953
flipped=0.3 clean_test_accuracy=0.950
flipped=0.4 clean_test_accuracy=0.945
backdoor: add n triggered class-1 points labelled 0
poison_points= 0 clean_accuracy=0.965 attack_success=0.075
poison_points= 10 clean_accuracy=0.963 attack_success=0.145
poison_points= 40 clean_accuracy=0.963 attack_success=0.685
poison_points= 80 clean_accuracy=0.968 attack_success=0.980
As duas tabelas do laboratório contam histórias diferentes. Inverter 40% dos rótulos baixa a acurácia limpa apenas de 0.965 para 0.945, então uma rotulagem ruidosa é um incômodo; 80 pontos com gatilho dão 0.980 de sucesso ao ataque, então o envenenamento direcionado é uma ameaça.
22.2 Cadeia de suprimentos
Modelos pré-treinados, conjuntos de dados, bibliotecas e plug-ins vêm de terceiros. O OWASP LLM 2025 lista cadeia de suprimentos (LLM03) e envenenamento de dados e de modelos (LLM04). Controles: fontes confiáveis, versões fixadas, verificação de hashes e assinaturas, formatos de arquivo seguros, varredura e avaliação antes do uso. O modelo do fornecedor do DocSort é a maior dependência da cadeia de suprimentos da LCH, e a verificação de assinatura descrita no capítulo de criptografia o cobre. As bibliotecas do Ask Lumen têm versões fixadas num arquivo de lock, e as atualizações passam por revisão. A LCH evita formatos de arquivo de modelo que podem executar código ao serem carregados, o que remove um caminho pelo qual um download adulterado poderia rodar em seus servidores.
22.3 Documentação
Os datasheets para conjuntos de dados (Gebru et al., arXiv:1803.09010) registram motivação, composição, coleta, pré-processamento e usos recomendados. Os model cards (Mitchell et al., arXiv:1810.03993) registram uso pretendido, avaliação, limitações e considerações éticas. Ambos ajudam outras pessoas a julgar se uma dependência é segura para o seu uso. Rina escreveu um datasheet para as cartas de treinamento do DocSort. Escrevê-lo revelou que ninguém sabia quais meses de cartas estavam incluídos nem como os casos ambíguos haviam sido rotulados. O model card que ela pediu ao fornecedor informava que o modelo fora avaliado com cartas de outro sistema de saúde, o que a LCH registrou como limitação e verificou com seu próprio conjunto de teste.
22.4 Proveniência e integridade
Registre de onde veio cada item de dados e quem o alterou; versione os conjuntos de dados; calcule o hash do conteúdo na coleta; revise amostras de fontes novas; restrinja quem pode rotular. No DocSort, isso significa que cada lote de treinamento registra o terceirizado que o rotulou, a data e um hash do arquivo rotulado. Se um gatilho for encontrado depois, a LCH consegue descobrir quais lotes o contêm e quem os rotulou, retreinar sem eles e decidir se o arranjo com os terceirizados precisa de revisão. Sem esse registro, todo o conjunto de treinamento ficaria sob suspeita.
22.5 Exemplo resolvido (caso sintético da LCH)
O DocSort era retreinado mensalmente com cartas rotuladas por uma equipe terceirizada temporária. Rina não encontrou registro de quem rotulou o quê. Ela introduziu proveniência por lote, uma amostra de revisão por especialista de 5% por lote e uma verificação automática de palavras raras fortemente associadas a um encaminhamento — um detector simples de gatilhos. No primeiro mês, ele sinalizou uma frase-padrão inofensiva usada por um consultório de clínica geral, que foi documentada como benigna. O alarme falso foi útil: mostrou que o detector funcionava e ensinou à equipe como são os gatilhos benignos.
22.6 Erros e limites
Três erros são comuns: rotuladores desconhecidos e dados sem versão; baixar modelos sem verificação; e datasheets e model cards nunca escritos. Sem registros dos rotuladores, um lote envenenado não pode ser rastreado nem removido, que era a situação do DocSort antes das mudanças de Rina. Downloads não verificados deixam um modelo adulterado chegar à produção sem aviso. A falta de datasheets e model cards significa que ninguém consegue julgar se um conjunto de dados ou um modelo serve a um novo uso, então descompassos, como a avaliação do DocSort com cartas de outro sistema de saúde, passam despercebidos até que os resultados decepcionem em produção e os pacientes recebam cartas mal encaminhadas.
Exercícios
- EX064 — Leitura do laboratório. Com 40 pontos de veneno, quais são a acurácia limpa e o sucesso do ataque? Rubrica: 3 = 0.963 e 0.685; 2 = um; 1 = aproximado; 0 = errado.
- EX065 — Controles da cadeia de suprimentos. Liste quatro controles para um modelo pré-treinado baixado. Rubrica: 3 = fonte confiável, versão fixada, hash/assinatura, formato seguro, avaliação; 2 = três; 1 = um ou dois; 0 = nenhum.
- EX066 — Detector de gatilhos. Por que uma frase benigna foi sinalizada, e o que deve acontecer? Rubrica: 3 = palavra rara fortemente ligada a um encaminhamento; revisar e documentar como benigna (falso positivo); 2 = parcial; 1 = vago; 0 = errado.
Síntese
Dados e dependências moldam o que os modelos aprendem e fazem. Proveniência, verificação, documentação e revisão impedem que entradas envenenadas ou não confiáveis se tornem comportamento em silêncio.
Continue estudando — capítulo 22 de 40
← Capítulo 21 (rascunho) · Índice de capítulos do curso · Capítulo 23 (rascunho) →