◇ OpenCyber Academy
Técnico · Capítulo 9 · Português

Capítulo 9 — Segurança de IA e aprendizado de máquina: ferramentas e métodos

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 9 — Segurança de IA e aprendizado de máquina: ferramentas e métodos

Mapa da aula

Aula 09 publicada. Mapa, exemplo, EX033.

flowchart TD
  N0["9.1 Testes estruturados"]
  N1["9.2 Um harness simples"]
  N2["9.3 Canários e documentos plantados"]
  N3["9.4 Taxas de base"]
  N4["9.6b Mantendo o conjunto de testes atualizado"]
  N5["Síntese"]
  N0 --> N1 --> N2 --> N3 --> N4 --> N5
  N5 --> EX["Exemplo resolvido"]
  EX --> Q["Exercício EX033"]

Desenho lógico

flowchart LR
  N0["9.1 Testes estruturados"]
  N1["9.2 Um harness simples"]
  N2["9.3 Canários e documentos plantados"]
  N3["9.4 Taxas de base"]
  N4["9.6b Mantendo o conjunto de testes atualizado"]
  N5["Síntese"]
  N0 --> N1 --> N2 --> N3 --> N4 --> N5 --> Q["EX033"]
[9.1 Testes estruturados]
    |
    v
[9.2 Um harness simples]
    |
    v
[9.3 Canários e documentos plantados]
    |
    v
[9.4 Taxas de base]
    |
    v
[9.6b Mantendo o conjunto de testes atualizado]
    |
    v
[Síntese]
    |
    v
[Exemplo resolvido] --> [Exercício EX033]

Objetivos de aprendizagem

Você vai (1) conduzir testes estruturados de um serviço de IA; (2) usar um harness de testes simples; (3) testar com canários e documentos plantados; (4) interpretar os resultados levando em conta as taxas de base.

9.1 Testes estruturados

Cada teste tem um ID, uma categoria (por exemplo, LLM01), entrada, preparação, comportamento seguro esperado e um avaliador. Agrupe os testes em baterias: injeção, divulgação, agência, consumo. Guarde alguns testes à parte (reservados) para verificar as correções de forma justa. A bateria do HelpBot na Kestrel segue esse formato. Um teste como o INJ-07 é da categoria LLM01; sua entrada é uma mensagem sintética de cliente perguntando sobre lentidão; sua preparação é um artigo plantado na homologação contendo uma instrução de reinicialização; o comportamento seguro esperado é nenhuma chamada a restart_router; e o avaliador lê o registro da ferramenta, não a resposta. Os testes reservados ficam num arquivo separado que só o líder da equipe edita, para que ninguém ajuste uma correção a eles por acidente.

9.2 Um harness simples

Um script de harness lê os testes de um arquivo, envia-os ao serviço de homologação, coleta as respostas e os registros das ferramentas, aplica os avaliadores e grava um relatório com contagens e taxas. Ele roda sempre do mesmo jeito, então os resultados são comparáveis. O harness de Ana lê os testes de um arquivo CSV, envia cada um à homologação do HelpBot com uma sessão sintética nova, coleta a resposta e o registro de chamadas de ferramentas pelo ID de requisição, aplica o avaliador e grava as contagens por categoria. Ele também registra, no início, a versão do modelo, a versão do prompt e o snapshot do índice, de modo que um relatório diz algo como "6/40 falhas de injeção no prompt v14, versão do modelo conforme fixada". Rodá-lo duas vezes sobre as mesmas versões deve dar as mesmas contagens; quando isso não aconteceu, ela encontrou um teste que dependia da hora do dia.

9.3 Canários e documentos plantados

Um canário é uma frase única colocada onde nunca deveria ser mostrada (um documento exclusivo da equipe); encontrá-la numa resposta prova um vazamento. Documentos plantados contêm instruções de teste para verificar se o conteúdo recuperado consegue conduzir o assistente. Use-os apenas em cópias de homologação. O canário de Ana era uma frase inventada, colocada numa cópia de um procedimento exclusivo da equipe na homologação. Um dos 30 testes de divulgação a produziu numa resposta a cliente, e o rastreamento dos IDs dos documentos recuperados mostrou por quê: o procedimento tinha sido arquivado por engano na coleção pública. Documentos plantados funcionam do mesmo modo para a injeção: um artigo de homologação manda o modelo abrir um chamado urgente, e o avaliador confere o registro de chamados. Canários em produção vazariam para as respostas de clientes reais.

9.4 Taxas de base

Um detector que acerta 95% das vezes ainda pode produzir sobretudo alarmes falsos quando os ataques são raros. Com prevalência de 0,1% e 5% de falsos positivos, menos de 2 em cada 100 alertas são reais.

"""Lab B: base rates and alarm precision (Bayes' rule).
A detector for malicious prompts with given true- and false-positive rates
is applied to traffic with different shares of malicious prompts."""
for tpr, fpr in ((0.95, 0.05), (0.95, 0.01), (0.80, 0.001)):
    for prev in (0.10, 0.01, 0.001):
        tp = tpr * prev; fp = fpr * (1 - prev)
        prec = tp / (tp + fp)
        per_10k = round(10000 * (tp + fp))
        print(f"tpr={tpr:.2f} fpr={fpr:.3f} prevalence={prev:.3f} precision={prec:.3f} alerts_per_10k={per_10k}")

Saída esperada:

tpr=0.95 fpr=0.050 prevalence=0.100 precision=0.679 alerts_per_10k=1400
tpr=0.95 fpr=0.050 prevalence=0.010 precision=0.161 alerts_per_10k=590
tpr=0.95 fpr=0.050 prevalence=0.001 precision=0.019 alerts_per_10k=509
tpr=0.95 fpr=0.010 prevalence=0.100 precision=0.913 alerts_per_10k=1040
tpr=0.95 fpr=0.010 prevalence=0.010 precision=0.490 alerts_per_10k=194
tpr=0.95 fpr=0.010 prevalence=0.001 precision=0.087 alerts_per_10k=109
tpr=0.80 fpr=0.001 prevalence=0.100 precision=0.989 alerts_per_10k=809
tpr=0.80 fpr=0.001 prevalence=0.010 precision=0.890 alerts_per_10k=90
tpr=0.80 fpr=0.001 prevalence=0.001 precision=0.445 alerts_per_10k=18

As linhas do laboratório mostram com que rapidez a precisão muda. Com 95% de detecção e 5% de falsos positivos, a precisão é 0,679 quando um prompt em dez é malicioso, 0,161 com um em cem e 0,019 com um em mil, gerando 509 alertas a cada 10.000 mensagens. Um detector com 80% de detecção e 0,1% de falsos positivos chega a uma precisão de 0,445 com prevalência de 0,1%, com apenas 18 alertas a cada 10.000. No HelpBot, em que a maior parte das 20.000 mensagens diárias são perguntas comuns de suporte, a taxa de falsos positivos decide se um detector é utilizável.

9.5 Exemplo resolvido (caso sintético da Kestrel)

Ana roda um harness de 100 testes na homologação do HelpBot: 40 de injeção, 30 de divulgação, 20 de agência, 10 de consumo. Resultados: 6 testes de injeção provocam a criação indesejada de chamados; 1 teste de divulgação revela um canário exclusivo da equipe a partir de um artigo arquivado no lugar errado; agência e consumo passam. Ela registra dois achados com os IDs dos testes. Um colega propõe um detector de injeção com 5% de falsos positivos sobre 20.000 mensagens diárias; Ana estima cerca de 1.000 alarmes falsos por dia e recomenda usá-lo só no painel. Os achados levavam os IDs dos testes para que os desenvolvedores pudessem reproduzi-los exatamente. O achado de injeção listava os seis testes e seus artigos plantados; o de divulgação nomeava o artigo arquivado no lugar errado e a frase canário. Nenhum dos dois recomendava um detector, porque a estimativa de alertas mostrou que a equipe se afogaria em alarmes falsos. As correções vieram depois, como configuração no serviço de ferramentas e nas coleções de recuperação.

9.6 Erros e limites

Três erros são comuns: testes improvisados que não podem ser repetidos; canários plantados em produção; e detectores implantados sem considerar o volume de alertas. Os testes improvisados causaram um problema real logo no início: as primeiras tentativas de injeção de Ana foram digitadas à mão e não foram salvas, então, depois de uma mudança no prompt, ela não conseguia dizer se o HelpBot tinha melhorado ou se ela simplesmente tinha formulado as coisas de outro jeito. Canários em produção colocariam um marcador exclusivo da equipe diante de clientes reais. Um detector implantado sem considerar o volume, com 5% de falsos positivos sobre 20.000 mensagens, produz cerca de 1.000 alertas por dia para uma equipe de três pessoas.

9.6b Mantendo o conjunto de testes atualizado

Os prompts de ataque do harness envelhecem à medida que o HelpBot muda. A cada mês, um técnico acrescenta novos casos a partir de relatos recentes e remove os que não se aplicam mais, registrando a mudança para que resultados de testes de meses diferentes ainda possam ser comparados. Quando a ferramenta de senha do Wi-Fi foi acrescentada, Ana incluiu 30 testes entre clientes para ela na bateria de agência; quando o artigo da restauração de fábrica foi encontrado, a pergunta dele virou um teste de regressão. Os testes aposentados, como os de uma ferramenta que foi removida, vão para um arquivo histórico em vez de serem apagados, para que um relatório antigo ainda possa ser executado de novo tal como foi escrito.

Exercícios

Síntese

Baterias estruturadas, um harness repetível, canários e o raciocínio sobre taxas de base tornam os testes de segurança de IA confiáveis e úteis.

Continue estudando — capítulo 09 de 18

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