OpenCyber Academy
Graduação · Capítulo 39 · Português
Código do curso: OCA-112Capítulo 39: OCA-112-C039

Capítulo 39 — Avaliação do projeto final

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 39 publicada. Mapa, exemplo, EX115.

flowchart TD
  N0["39.1 Plano de avaliação final"]
  N1["39.2 Testes independentes"]
  N2["39.3 Usabilidade e efeitos colaterais"]
  N3["39.4 Risco residual e recomendações"]
  N4["39.4b Relato da avaliação"]
  N5["39.6b Acordo prévio dos critérios do veredito"]
  N6["Síntese"]
  N0 --> N1 --> N2 --> N3 --> N4 --> N5 --> N6
  N6 --> EX["Exemplo resolvido"]
  EX --> Q["Exercício EX115"]

Desenho lógico

flowchart LR
  N0["39.1 Plano de avaliação final"]
  N1["39.2 Testes independentes"]
  N2["39.3 Usabilidade e efeitos colaterais"]
  N3["39.4 Risco residual e recomendações"]
  N4["39.4b Relato da avaliação"]
  N5["39.6b Acordo prévio dos critérios do veredito"]
  N6["Síntese"]
  N0 --> N1 --> N2 --> N3 --> N4 --> N5 --> N6 --> Q["EX115"]
[39.1 Plano de avaliação final]
    |
    v
[39.2 Testes independentes]
    |
    v
[39.3 Usabilidade e efeitos colaterais]
    |
    v
[39.4 Risco residual e recomendações]
    |
    v
[39.4b Relato da avaliação]
    |
    v
[39.6b Acordo prévio dos critérios do veredito]
    |
    v
[Síntese]
    |
    v
[Exemplo resolvido] --> [Exercício EX115]

Objetivos de aprendizagem

Você vai (1) avaliar o projeto final segundo seus critérios de aceitação; (2) incluir testes independentes e adaptativos; (3) avaliar a usabilidade e os efeitos colaterais; e (4) declarar os riscos residuais e as recomendações.

39.1 Plano de avaliação final

Use os critérios de aceitação da proposta, sem alterações, a menos que o registro de mudanças diga por quê. Execute as suítes reservadas completas, a suíte adaptativa independente e os testes de uso normal. Calcule as taxas com intervalos e compare-as com os critérios. O plano final de Rina usou os critérios de sua proposta: zero marcações entre pacientes, com limite superior abaixo de 0.5%, marcações concluídas de pelo menos 93% e o limiar de afirmações falsas. A única mudança registrada foi a retirada do canal de voz, aprovada antes. Executar as suítes completas uma única vez, numa configuração congelada, evitou a tentação de repetir até aparecer um resultado melhor.

39.2 Testes independentes

Peça a pessoas que não construíram o sistema que o ataquem dentro do escopo. Os resultados delas entram na avaliação mesmo quando são desfavoráveis. Os dois colegas de Rina já tinham escrito casos adaptativos durante o seminário; para a avaliação final, um terceiro testador, de outro curso, atacou o sistema durante dois dias. Esse testador encontrou o problema de cota em conversas longas, que ninguém envolvido na construção havia notado, porque suas conversas de teste eram curtas. Testadores novos trazem hábitos diferentes, e esses hábitos encontram falhas diferentes.

39.3 Usabilidade e efeitos colaterais

Meça a conclusão das tarefas, o tempo, as recusas indevidas e o retorno dos usuários. Controles de segurança que os usuários contornam ou abandonam não protegem ninguém. Rina mediu as marcações concluídas, o tempo médio para marcar e as recusas indevidas, e pediu a dez colegas que faziam o papel de pacientes uma breve opinião. O problema de cota apareceu nesse retorno como frustração, e não como falha de segurança. Um assistente de marcação que perde o contexto em conversas longas empurraria os pacientes de volta ao telefone, o que anula o propósito do serviço e aumenta a carga na recepção.

39.4 Risco residual e recomendações

Liste os riscos que permanecem, por que são aceitáveis ou não e que trabalho adicional os reduziria. Recomende se e como a abordagem deve ser adotada.

"""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]

O laboratório mostra por que Rina relatou intervalos em vez de taxas isoladas: taxas idênticas de 0.150 trazem certezas muito diferentes com 20 e com 2000 tentativas. Sua lista de riscos residuais nomeou a injeção em idiomas que não o inglês e a dependência da revisão dos envios dos parceiros, explicou por que cada uma era aceitável para um piloto e propôs testes que as reduziriam antes de uma adoção mais ampla.

39.4b Relato da avaliação

Apresente uma tabela por critério, com resultado, intervalo, limiar e aprovação ou reprovação. Depois apresente os achados independentes, as medidas de usabilidade e uma breve discussão. Anexe os scripts de avaliação e as descrições das suítes de teste, para que um leitor possa repetir a execução. Relate um critério reprovado como reprovação, com sua causa e um plano, em vez de redefini-lo. A tabela de Rina para as marcações concluídas mostrou 94% contra o limiar de 93%, com seu intervalo. Como a margem era estreita, ela relatou a aprovação com essa ressalva, em vez de apresentá-la como folgada, e sugeriu que a LCH acompanhasse a taxa no piloto. O achado sobre a cota veio em seguida, na parte do relatório sobre os testes independentes.

39.5 Exemplo resolvido (caso sintético da LCH)

A avaliação final de Rina: 0 marcações entre pacientes em 1.000 tentativas (limite superior ≈ 0.4%); confirmações enganosas, 0 em 300 casos adaptativos; afirmações falsas sobre as clínicas, 2.4% (intervalo de 1.6–3.5%), abaixo do critério de 4%; marcações concluídas, 94%. Os testadores independentes encontraram um problema: conversas muito longas atingiam a cota de tokens e perdiam o contexto, frustrando os usuários. Riscos residuais: injeção em idiomas que não o inglês não testada; dependência da revisão dos envios dos parceiros. Recomendação: adotar na LCH o serviço de políticas e a confirmação estruturada; estender os testes a outros idiomas. O problema de cota foi relatado como achado de usabilidade, com uma correção proposta: aumentar a cota para pacientes autenticados.

39.6 Erros e limites

Três erros são comuns: mudar os critérios depois dos resultados; omitir resultados independentes desfavoráveis; e ignorar a usabilidade. Mudar o limiar de afirmações falsas depois de ver os resultados teria tornado a aprovação sem sentido, então Rina manteve o original. Omitir o problema de cota porque veio de um testador independente esconderia a principal fraqueza de usabilidade. Ignorar a usabilidade teria produzido um sistema aprovado nos testes de segurança enquanto os pacientes desistiam dele e telefonavam para a clínica. Relatar os três, inclusive os desfavoráveis, mantém a avaliação honesta e útil para a LCH.

39.6b Acordo prévio dos critérios do veredito

Os critérios de aprovação do projeto final — por exemplo, sucesso de injeção abaixo de uma taxa acordada num conjunto reservado de ataques, sem aumento das marcações erradas — são fixados antes da avaliação final. Se os resultados ficarem entre limiares, o relatório o diz claramente, em vez de arredondar na direção do sucesso. Os critérios de Rina foram assinados por seu orientador antes da execução final, então não podiam derivar. Assiná-los primeiro significou que, quando as marcações concluídas ficaram perto do limiar, ninguém pôde discutir o que contava como aprovação. O examinador conferiu a data da assinatura com a data da execução final.

Exercícios

Síntese

A avaliação do projeto final é uma medição honesta segundo critérios fixados antes, incluindo ataques independentes e usabilidade, e termina com riscos residuais e recomendações claros.

Continue estudando — capítulo 39 de 40

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

Respostas comentadas

EX115. Marcações entre pacientes 0/1.000 (aprovado); confirmações enganosas 0/300 (aprovado); afirmações falsas 2.4%, com intervalo até 3.5% < 4% (aprovado); marcações concluídas 94% ≥ 93% (aprovado).

EX116. Relatá-lo, depois aumentar a cota para pacientes autenticados ou resumir o contexto mais antigo, testar de novo a usabilidade e confirmar que a proteção de custos continua valendo.

EX117. "A injeção em idiomas que não o inglês não foi testada; pode ter sucesso com mais frequência, porque os classificadores e o embasamento foram ajustados em inglês. Aceitável para um piloto só em inglês; próximo passo: uma suíte multilíngue de 300 casos antes de ampliar a implantação."