◇ OpenCyber Academy
Mestrado · Capítulo 3 · Português

Capítulo 3 — Desenho do estudo, ética e reprodutibilidade

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 3 — Desenho do estudo, ética e reprodutibilidade

Mapa da aula

Aula 03 publicada. Mapa, exemplo, EX015.

flowchart TD
  N0["3.1 Escolher um desenho observacional"]
  N1["3.2 Ética e aprovação"]
  N2["3.3 Pseudônimos com chave"]
  N3["Laboratório — Pseudônimos com chave"]
  N4["3.4 Ler os pseudônimos"]
  N5["3.5 Plano de reprodutibilidade"]
  N6["Síntese"]
  N0 --> N1 --> N2 --> N3 --> N4 --> N5 --> N6
  N6 --> EX["Exemplo resolvido"]
  EX --> Q["Exercício EX015"]

Desenho lógico

flowchart LR
  N0["3.1 Escolher um desenho observacional"]
  N1["3.2 Ética e aprovação"]
  N2["3.3 Pseudônimos com chave"]
  N3["Laboratório — Pseudônimos com chave"]
  N4["3.4 Ler os pseudônimos"]
  N5["3.5 Plano de reprodutibilidade"]
  N6["Síntese"]
  N0 --> N1 --> N2 --> N3 --> N4 --> N5 --> N6 --> Q["EX015"]
[3.1 Escolher um desenho observacional]
    |
    v
[3.2 Ética e aprovação]
    |
    v
[3.3 Pseudônimos com chave]
    |
    v
[Laboratório — Pseudônimos com chave]
    |
    v
[3.4 Ler os pseudônimos]
    |
    v
[3.5 Plano de reprodutibilidade]
    |
    v
[Síntese]
    |
    v
[Exemplo resolvido] --> [Exercício EX015]

Objetivos de aprendizagem

Você vai (1) escolher um desenho observacional adequado aos registros de certificados existentes; (2) pseudonimizar nomes de host com uma função com chave; (3) planejar um estudo que outras pessoas possam reproduzir.

3.1 Escolher um desenho observacional

Felipe não pode randomizar os certificados entre os modos de renovação; a Briarwood decidiu isso anos atrás. Ele escolhe um desenho de coorte retrospectiva: todo certificado ativo nos últimos dois anos é membro, seu modo de renovação é a exposição, e os incidentes de expiração do sistema de chamados são o desfecho. Ele mede o tempo de exposição em certificados-ano, de modo que um certificado que existiu por seis meses contribui com meio ano. Ele aceita abertamente a principal fraqueza: os serviços escolhidos para automação podem diferir dos manuais em idade, equipe ou importância, então as diferenças podem refletir essas características, e não o modo de renovação.

3.2 Ética e aprovação

O estudo não toca em dados de pacientes, mas o comitê de ética ainda o revisa, porque os nomes de host e os chamados podem revelar a arquitetura interna da Briarwood e nomes de funcionários. O protocolo de Felipe diz que o texto dos chamados só é lido nas instalações da Briarwood, que os nomes dos funcionários são removidos antes da exportação e que o conjunto de dados exportado contém apenas identificadores pseudonimizados dos hosts, o modo de renovação, as datas e as contagens de incidentes. Qualquer certificado já expirado ou prestes a expirar que ele perceba é comunicado ao líder de infraestrutura da Briarwood no mesmo dia, porque um estudo sobre indisponibilidades não pode deixar uma acontecer sabendo dela.

3.3 Pseudônimos com chave

Felipe precisa de pseudônimos estáveis: o mesmo nome de host precisa corresponder ao mesmo identificador em todos os arquivos, mas pessoas de fora não podem conseguir revertê-lo. Um hash simples falha, porque qualquer um pode calcular o hash de um nome de host adivinhado, como portal.briarwood.example, e comparar. Um hash com chave, o HMAC da RFC 2104 com SHA-256, resolve isso: só quem detém a chave secreta consegue calcular o mapeamento. A Briarwood gera e guarda a chave; Felipe recebe apenas dados pseudonimizados. O laboratório usa uma chave de demonstração fixa apenas para que a saída seja reproduzível e mostra que uma chave aleatória nova, gerada pelo módulo secrets, produz pseudônimos sem relação.

Laboratório — Pseudônimos com chave

"""Keyed pseudonyms for hostnames with HMAC-SHA256 (RFC 2104); synthetic names, demo key only."""
import hmac, hashlib, secrets
HOSTS = ["portal.briarwood.example", "lab-results.briarwood.example", "portal.briarwood.example"]

def pseud(key, host):
    return "h-" + hmac.new(key, host.encode(), hashlib.sha256).hexdigest()[:10]

def main():
    fixed = b"study-demo-key-not-for-production"  # fixed so output is reproducible
    for h in HOSTS:
        print(f"{h:<33} -> {pseud(fixed, h)}")
    plain = "h-" + hashlib.sha256(HOSTS[0].encode()).hexdigest()[:10]
    print(f"unkeyed SHA-256 of first host -> {plain} (anyone can recompute)")
    fresh = secrets.token_bytes(32)
    print(f"fresh random key gives same pseudonym as demo key: {pseud(fresh, HOSTS[0]) == pseud(fixed, HOSTS[0])}")

if __name__ == "__main__":
    main()

Execute com python3 lab_pseudo.py. Saída verificada:

portal.briarwood.example          -> h-6f292159ff
lab-results.briarwood.example     -> h-915f39cfa2
portal.briarwood.example          -> h-6f292159ff
unkeyed SHA-256 of first host -> h-80926435c3 (anyone can recompute)
fresh random key gives same pseudonym as demo key: False

3.4 Ler os pseudônimos

As duas ocorrências de portal.briarwood.example correspondem a h-6f292159ff, então os registros se juntam corretamente, enquanto lab-results corresponde a h-915f39cfa2. O SHA-256 sem chave do primeiro host dá h-80926435c3, que qualquer pessoa de fora que adivinhe o nome pode recalcular; é por isso que o hash simples não é pseudonimização. Com uma chave nova de 32 bytes, o pseudônimo é diferente, o que confirma que o mapeamento depende do segredo. Felipe observa que truncar para dez caracteres hexadecimais é aceitável para 1.400 hosts, pois dá cerca de um trilhão de valores possíveis, mas que é preciso conferir colisões antes de juntar as tabelas.

3.5 Plano de reprodutibilidade

O plano de Felipe lista o que outro pesquisador precisaria: o dicionário de dados, as consultas de extração rodadas contra os sistemas de inventário e de chamados da Briarwood, os scripts de análise com as sementes aleatórias, o conjunto de dados pseudonimizado e um log de cada decisão de codificação manual. A Briarwood não pode publicar as consultas de extração, então ele as documenta em prosa com detalhe suficiente para adaptá-las em outro lugar. Ele fixa o ambiente de software na biblioteca padrão do Python, para evitar a deriva de dependências. A Dra. Solberg pede um ensaio: um colega repete a análise apenas a partir do pacote e reproduz todas as tabelas.

Exemplo resolvido

Felipe registra um desenho de coorte retrospectiva medido em certificados-ano, obtém a aprovação ética com comunicação no mesmo dia de expirações ativas e exporta os dados com pseudônimos HMAC-SHA256 cuja chave fica na Briarwood.

Caso sintético. Os hosts e a chave de demonstração são inventados; o HMAC (RFC 2104) é real, e chaves reais precisam vir de um cofre de segredos gerenciado.

Erros e limites

Coortes observacionais não conseguem descartar a confusão; só conseguem medir e ajustar pelo que foi registrado. Os pseudônimos protegem contra pessoas de fora, e não contra quem obtiver a chave.

Exercícios

Síntese

Um desenho observacional honesto, pseudônimos com chave mantidos pelo parceiro e um pacote de reprodutibilidade testado tornam um estudo de campo ao mesmo tempo ético e verificável.

Continue estudando — aula 03 (capítulo 03 de 08)

← Capítulo 02 · Índice das aulas · Capítulo 04 →

Continue para a próxima aula já escrita.