Capítulo 40 — Laboratório de verificação II
Mapa da aula
Aula 40 publicada. Mapa, exemplo, EX118.
flowchart TD
N0["40.1 Campanhas integradas"]
N1["40.2 Critérios de aceitação"]
N2["40.3 Taxas de base na aceitação"]
N3["40.4 Pacote de evidências"]
N4["40.6b Repetindo a campanha após as correções"]
N5["Síntese"]
N0 --> N1 --> N2 --> N3 --> N4 --> N5
N5 --> EX["Exemplo resolvido"]
EX --> Q["Exercício EX118"]
Desenho lógico
flowchart LR
N0["40.1 Campanhas integradas"]
N1["40.2 Critérios de aceitação"]
N2["40.3 Taxas de base na aceitação"]
N3["40.4 Pacote de evidências"]
N4["40.6b Repetindo a campanha após as correções"]
N5["Síntese"]
N0 --> N1 --> N2 --> N3 --> N4 --> N5 --> Q["EX118"]
[40.1 Campanhas integradas]
|
v
[40.2 Critérios de aceitação]
|
v
[40.3 Taxas de base na aceitação]
|
v
[40.4 Pacote de evidências]
|
v
[40.6b Repetindo a campanha após as correções]
|
v
[Síntese]
|
v
[Exemplo resolvido] --> [Exercício EX118]
Objetivos de aprendizagem
Você vai (1) conduzir uma campanha de verificação integrada abrangendo vários componentes de IA; (2) testar controles sob ataques e falhas combinados; (3) usar critérios estatísticos de aceitação; e (4) produzir um pacote de evidências adequado a um avaliador independente.
40.1 Campanhas integradas
O Laboratório I testou componentes; o Laboratório II testa o sistema. Combine ataques com falhas: injeção durante uma indisponibilidade de conector; envenenamento detectado durante uma atualização de modelo; tentativas de extração enquanto o monitoramento está degradado. Os sistemas muitas vezes falham nessas interseções. Os testes de componentes supõem que todos os vizinhos se comportam normalmente. No sistema real, indisponibilidades, atualizações e ataques se sobrepõem, e o tratamento de um pode abrir uma brecha para outro. Um conector com falha pode empurrar alertas para uma fila que ninguém observa; uma atualização de modelo pode desativar brevemente o monitoramento. Os cenários integrados são escolhidos a partir do modelo de ameaças e da análise de falhas em conjunto, emparelhando cada ameaça bem classificada com uma falha concomitante plausível.
40.2 Critérios de aceitação
Use critérios estatísticos ligados aos requisitos: para um requisito de taxa ≤ p com 95% de confiança, o limite superior de Wilson (ou o limite exato) precisa ficar abaixo de p. Com zero falhas, são necessários cerca de 3/p ensaios (regra de três). Decida os critérios antes de executar.
"""Lab S: reporting attack-success rates honestly: Wilson intervals,
seed variation and a paired bootstrap. Synthetic trial outcomes only."""
import math, random
def wilson(k, n, z=1.96):
p = k/n; d = 1 + z*z/n
c = (p + z*z/(2*n))/d; h = z*math.sqrt(p*(1-p)/n + z*z/(4*n*n))/d
return c - h, c + h
for k, n in ((3, 20), (30, 200), (300, 2000)):
lo, hi = wilson(k, n); print(f"successes={k}/{n} rate={k/n:.3f} wilson95=[{lo:.3f}, {hi:.3f}]")
# five seeds of a synthetic defence evaluation: per-seed attack success rate
rates = []
for seed in range(5):
r = random.Random(seed); rates.append(sum(r.random() < 0.12 for _ in range(200))/200)
m = sum(rates)/5; sd = math.sqrt(sum((x-m)**2 for x in rates)/4)
print("per-seed rates:", " ".join(f"{x:.3f}" for x in rates), f"mean={m:.3f} sd={sd:.3f}")
# paired bootstrap: baseline vs defence on the same 300 synthetic prompts
r = random.Random(42)
base = [r.random() < 0.30 for _ in range(300)]
defn = [b and r.random() < 0.6 for b in base] # defence blocks ~40% of successes
diffs = []
for _ in range(2000):
idx = [r.randrange(300) for _ in range(300)]
diffs.append(sum(base[i] for i in idx)/300 - sum(defn[i] for i in idx)/300)
diffs.sort()
print(f"baseline_asr={sum(base)/300:.3f} defended_asr={sum(defn)/300:.3f} "
f"reduction_ci95=[{diffs[50]:.3f}, {diffs[1949]:.3f}]")
Saída esperada:
successes=3/20 rate=0.150 wilson95=[0.052, 0.360]
successes=30/200 rate=0.150 wilson95=[0.107, 0.206]
successes=300/2000 rate=0.150 wilson95=[0.135, 0.166]
per-seed rates: 0.110 0.130 0.135 0.105 0.145 mean=0.125 sd=0.017
baseline_asr=0.350 defended_asr=0.190 reduction_ci95=[0.120, 0.203]
A regra de três torna o custo visível: mostrar uma taxa de falhas abaixo de 1% sem nenhuma falha exige cerca de 300 ensaios, e abaixo de 0,1%, cerca de 3.000. Escrever o critério primeiro impede a equipe de afrouxar um limiar quando os resultados chegam, ou de interromper um teste cedo porque os números por acaso parecem bons. Cada critério nomeia seu requisito, de modo que um limite reprovado aponta diretamente para o que precisa mudar.
40.3 Taxas de base na aceitação
Os requisitos de detectores precisam ser verificados a taxas de base realistas; um detector que passa nos limiares de TPR/FPR ainda pode produzir uma precisão inutilizável em operação.
"""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
O plano de aceitação, portanto, declara uma prevalência esperada para cada detector, tirada de dados de operação ou de uma estimativa justificada, e calcula a precisão e o volume de alertas a essa taxa. Um detector que mandaria aos operadores cem alertas falsos para cada verdadeiro é reprovado na aceitação mesmo que sua TPR e sua FPR atendam aos limiares, porque em operação seus alertas logo seriam ignorados.
40.4 Pacote de evidências
Organize as evidências por requisito: plano de teste, resultados brutos, análise, aprovação/reprovação, desvios, novos testes. Inclua descrições do ambiente, versões de modelos e de dados com hashes e versões das ferramentas. Um avaliador independente deve conseguir seguir cada requisito até sua evidência sem perguntar à equipe. Os hashes de modelos e dados amarram cada resultado a artefatos exatos, de modo que ninguém pode argumentar depois que uma versão diferente foi testada. Os desvios, como um cenário executado com menos ensaios que o planejado, são listados em vez de escondidos. Um avaliador que lê o pacote deve conseguir reexecutar qualquer teste a partir das versões e sementes registradas e chegar aos mesmos números.
40.5 Exemplo resolvido (caso sintético da NRS)
A campanha integrada de Sam executou 18 cenários envolvendo o TrackEye, o Pulse e o Wrench. O cenário 11 (falsificação de sensor do Pulse durante uma indisponibilidade do conector do sistema de chamados) revelou que, quando o sistema de chamados falhava, os alertas do Pulse ficavam em fila, em silêncio, por 40 minutos. A correção acrescentou uma verificação de saúde do caminho de alertas, com alternativa por SMS para alertas críticos. Todos os requisitos de taxa foram avaliados com limites superiores de Wilson predefinidos; dois que tinham passado nas estimativas pontuais foram reprovados em seus limites e precisaram de conjuntos de testes maiores, após o que um passou e o outro levou a uma melhoria do modelo. A fila silenciosa é o tipo de falha que nenhum teste de componente conseguiria encontrar.
40.6 Erros e limites
Três erros são comuns: testar apenas componentes isoladamente; critérios de aceitação decididos depois de ver os resultados; e evidências espalhadas por pastas pessoais. Testes isolados de componentes deixam passar as interações em que os sistemas integrados falham, como mostrou o cenário 11. Critérios escolhidos depois de ver os resultados podem ser dobrados para caber no que quer que tenha acontecido. Evidências guardadas em pastas pessoais desaparecem quando as pessoas saem e não podem ser revisadas por um avaliador. O modelo de campanha de Sam fixa critérios, cenários e locais das evidências antes da primeira execução, e um revisor o assina. As mudanças nele são datadas.
40.6b Repetindo a campanha após as correções
Quando o Laboratório II encontra uma falha, a correção é seguida pela mesma campanha, e não por uma menor, para que a NRS possa mostrar que a correção funcionou sem quebrar outros critérios de aceitação. As duas execuções ficam no pacote de evidências, com suas datas e versões. O cenário 11 mostra por quê. A correção da fila silenciosa de 40 minutos dos alertas do Pulse acrescentou uma verificação de saúde e uma alternativa por SMS, o que mudou o caminho de todos os alertas críticos, não só os do Pulse. Reexecutar os 18 cenários, e não apenas o cenário 11, era a única forma de mostrar que os alertas do TrackEye e do Wrench ainda chegavam a tempo pelo caminho alterado.
Exercícios
- EX118 — Cenário combinado. Projete um cenário combinado de ataque mais falha para o Wrench. Rubrica: 3 = ataque específico + falha + comportamento seguro esperado + medição; 2 = parcial; 1 = vago; 0 = nenhum.
- EX119 — Limite. Você observa 1 falha em 200 ensaios para um requisito ≤ 2%. O limite superior de 95% passa? (Limite superior de Wilson ≈ 2,8%.) Rubrica: 3 = não, o limite superior está acima de 2%, são necessários mais ensaios ou uma melhoria; 2 = só a resposta; 1 = usa a estimativa pontual; 0 = nenhum.
- EX120 — Leitura do laboratório. Com prevalência 0,01, que precisão o detector 0,95/0,01 dá, e ela é aceitável para bloqueio automático? Rubrica: 3 = 0.490; provavelmente não para bloqueio sem revisão, depende do custo; 2 = só o número; 1 = vago; 0 = errado.
Síntese
A verificação integrada encontra falhas nas interseções, julga os resultados com critérios estatísticos predefinidos e empacota as evidências para que outros possam avaliá-las de forma independente.
Continue estudando — capítulo 40 de 50
← Capítulo 39 (rascunho) · Índice de capítulos do curso · Capítulo 41 (rascunho) →