◇ OpenCyber Academy
Graduação · Capítulo 35 · Português

Capítulo 35 — Proposta de 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.

Capítulo 35 — Proposta de projeto final

Mapa da aula

Aula 35 publicada. Mapa, exemplo, EX103.

flowchart TD
  N0["35.1 Escolha do projeto final"]
  N1["35.2 Conteúdo da proposta"]
  N2["35.3 Ética e autorização"]
  N3["35.4 O inventário como ponto de partida"]
  N4["35.4b Acordo com o orientador"]
  N5["Síntese"]
  N0 --> N1 --> N2 --> N3 --> N4 --> N5
  N5 --> EX["Exemplo resolvido"]
  EX --> Q["Exercício EX103"]

Desenho lógico

flowchart LR
  N0["35.1 Escolha do projeto final"]
  N1["35.2 Conteúdo da proposta"]
  N2["35.3 Ética e autorização"]
  N3["35.4 O inventário como ponto de partida"]
  N4["35.4b Acordo com o orientador"]
  N5["Síntese"]
  N0 --> N1 --> N2 --> N3 --> N4 --> N5 --> Q["EX103"]
[35.1 Escolha do projeto final]
    |
    v
[35.2 Conteúdo da proposta]
    |
    v
[35.3 Ética e autorização]
    |
    v
[35.4 O inventário como ponto de partida]
    |
    v
[35.4b Acordo com o orientador]
    |
    v
[Síntese]
    |
    v
[Exemplo resolvido] --> [Exercício EX103]

Objetivos de aprendizagem

Você vai (1) propor um projeto final em segurança de IA com problema, objetivos e entregas claros; (2) definir requisitos, métodos e avaliação; (3) planejar ética, autorização e tratamento de dados; e (4) montar um cronograma realista, com riscos.

35.1 Escolha do projeto final

Bons projetos finais resolvem um problema concreto com um componente de segurança de IA, produzem um artefato funcional e evidências e podem ser concluídos em dois semestres. Opções: um chatbot de recuperação protegido, com imposição de políticas e um ambiente de avaliação; um pipeline de detecção de envenenamento; uma ferramenta de inventário e avaliação de riscos de IA para uma organização pequena; um serviço de monitoramento de abuso de APIs de modelos. Rina escolheu a primeira opção porque a LCH tinha um fluxo de marcação real para modelar e ela já havia estudado suas fraquezas, então o modelo de ameaças estava pronto.

35.2 Conteúdo da proposta

Problema e partes interessadas; objetivos; escopo e exclusões; requisitos com métodos de verificação; método e arquitetura; plano de avaliação com métricas, conjuntos de teste e critérios de aceitação; ética e autorização; gestão de dados; cronograma com marcos; riscos e mitigações; entregas esperadas. Cada parte responde a uma pergunta que o orientador fará. Escopo e exclusões dizem o que não será feito, para que ninguém espere um canal de voz. Os requisitos com métodos de verificação mostram como o sucesso será julgado. A parte de ética declara que todos os dados de pacientes são sintéticos. O cronograma deixa espaço para uma segunda rodada de testes, já que a primeira costuma encontrar problemas que precisam de correção.

35.3 Ética e autorização

Declare quais sistemas e dados você usará e sob a autoridade de quem. Prefira dados sintéticos e ambientes isolados. Se trabalhar com uma organização real, obtenha autorização por escrito e acorde o tratamento dos dados. A proposta de Rina nomeou o líder de segurança da LCH como a pessoa que autoriza o acesso à homologação, anexou o escopo assinado e declarou que nenhum dado real de paciente sairia da LCH. O comitê de ética da universidade revisou o plano porque os testadores independentes eram colegas e confirmou que ele não exigia outra aprovação, já que não seriam coletados dados dos participantes além de seus casos de teste.

35.4 O inventário como ponto de partida

Muitos projetos finais começam por entender o panorama de IA de uma organização. O laboratório de inventário pontua os sistemas por exposição, autonomia, sensibilidade dos dados e entrada não confiável, sugerindo onde concentrar o esforço.

"""Lab V: an AI system inventory scored for review priority (synthetic).
Each system lists exposure, autonomy, data sensitivity and whether it reads
untrusted content; mapping to OWASP LLM Top 10 (2025) IDs is illustrative."""
import json
inv = json.loads("""[
 {"name":"support-chatbot","exposure":"public","autonomy":"tools","data":"customer","untrusted_input":true},
 {"name":"invoice-ocr-model","exposure":"internal","autonomy":"none","data":"financial","untrusted_input":true},
 {"name":"code-assistant","exposure":"internal","autonomy":"suggest","data":"source","untrusted_input":true},
 {"name":"churn-predictor","exposure":"internal","autonomy":"none","data":"customer","untrusted_input":false},
 {"name":"hr-cv-screener","exposure":"internal","autonomy":"decide","data":"personal","untrusted_input":true}
]""")
E = {"public": 3, "internal": 1}; A = {"none": 0, "suggest": 1, "tools": 3, "decide": 3}
D = {"customer": 2, "financial": 2, "source": 2, "personal": 3}
for s in inv:
    s["score"] = E[s["exposure"]] + A[s["autonomy"]] + D[s["data"]] + (2 if s["untrusted_input"] else 0)
    risks = []
    if s["untrusted_input"]: risks.append("LLM01")
    if s["autonomy"] in ("tools", "decide"): risks.append("LLM06")
    if s["data"] in ("customer", "personal"): risks.append("LLM02")
    s["owasp"] = ",".join(risks) or "-"
for s in sorted(inv, key=lambda s: -s["score"]):
    print(f"{s['name']:18s} score={s['score']:2d} owasp={s['owasp']}")

Saída esperada:

support-chatbot    score=10 owasp=LLM01,LLM06,LLM02
hr-cv-screener     score= 9 owasp=LLM01,LLM06,LLM02
code-assistant     score= 6 owasp=LLM01
invoice-ocr-model  score= 5 owasp=LLM01
churn-predictor    score= 3 owasp=LLM02

No inventário sintético do laboratório, o chatbot público de suporte com ferramentas marca 10 e o triador de currículos que decide marca 9, então ambos sobem ao topo. O preditor de cancelamento de clientes, sem entrada não confiável, marca 3. Rina usou a mesma pontuação na LCH: o Ask Lumen ficou em primeiro, seguido do DocSort e do NoShow, o que confirmou sua escolha de projeto final.

35.4b Acordo com o orientador

Acorde a proposta com seu orientador e, quando for o caso, com o cliente. Registre as decisões e as mudanças posteriores à aprovação num registro de mudanças, para que a avaliação final compare o que você entregou com o que foi acordado. O registro de mudanças de Rina anotou uma mudança aprovada: a retirada do canal de voz do escopo, já que a cópia de homologação não tinha interface de voz. A entrada trazia a data, o motivo e a aprovação do orientador, de modo que a banca viu depois que o escopo mais estreito havia sido acordado, e não que algo difícil fora omitido em silêncio.

35.5 Exemplo resolvido (caso sintético da LCH)

Rina propôs o "Safe Booking Assistant": uma reimplementação do fluxo de marcação do Ask Lumen com tokens delegados, um serviço de políticas, confirmação, verificações de embasamento e um ambiente de red team, avaliada em 1.000 conversas sintéticas. Exclusões: canal de voz, idiomas que não o inglês. Os critérios de aceitação incluíam zero marcações para outros pacientes (limite superior < 0.5%) e marcações concluídas ≥ 93%. O limiar de marcações foi definido logo abaixo dos 94% obtidos no estudo anterior sobre confirmação, de modo que o projeto final precisasse manter a usabilidade perto do que a LCH já havia aceitado. Mil conversas foram escolhidas porque, com zero falhas, dão um limite superior abaixo da meta de meio por cento.

35.6 Erros e limites

Três erros são comuns: projetos finais sem critérios de aceitação mensuráveis; falta de autorização; e cronogramas sem folga. Sem critérios de aceitação mensuráveis, um projeto final só consegue descrever o que foi construído, e não se funciona. A falta de autorização pode encerrar um projeto quando a organização descobre testes que não aprovou. Cronogramas sem folga fracassam quando a primeira avaliação encontra problemas, como costuma acontecer; o plano de Rina deixou três semanas entre a primeira execução completa de testes e a avaliação final exatamente por esse motivo, e ela usou todas.

Exercícios

Síntese

Uma proposta de projeto final transforma uma ideia de segurança de IA num plano autorizado e mensurável, com escopo e critérios de aceitação claros.

Continue estudando — capítulo 35 de 40

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