◇ 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, EX014.

flowchart TD
  N0["3.1 Desenhos"]
  N1["3.2 Definição das variáveis"]
  N2["3.3 Ética e minimização"]
  N3["3.4 Taxas e intervalos"]
  N4["3.5 Plano de reprodutibilidade"]
  N5["Síntese do capítulo"]
  N0 --> N1 --> N2 --> N3 --> N4 --> N5
  N5 --> EX["Exemplo resolvido"]
  EX --> Q["Exercício EX014"]

Desenho lógico

flowchart LR
  N0["3.1 Desenhos"]
  N1["3.2 Definição das variáveis"]
  N2["3.3 Ética e minimização"]
  N3["3.4 Taxas e intervalos"]
  N4["3.5 Plano de reprodutibilidade"]
  N5["Síntese do capítulo"]
  N0 --> N1 --> N2 --> N3 --> N4 --> N5 --> Q["EX014"]
[3.1 Desenhos]
    |
    v
[3.2 Definição das variáveis]
    |
    v
[3.3 Ética e minimização]
    |
    v
[3.4 Taxas e intervalos]
    |
    v
[3.5 Plano de reprodutibilidade]
    |
    v
[Síntese do capítulo]
    |
    v
[Exemplo resolvido] --> [Exercício EX014]

Objetivos de aprendizagem e conexão

Você vai (1) escolher entre desenhos observacionais, quase-experimentais e de bancada de testes; (2) definir desfecho, exposição e unidade de análise; (3) minimizar os dados pessoais em logs de rede; (4) estimar taxas com intervalos honestos; e (5) planejar uma análise reprodutível. O capítulo operacionaliza a pergunta dos Capítulos 1–2 e prepara as explicações concorrentes do Capítulo 4.

3.1 Desenhos

Um estudo observacional antes/depois compara as taxas de falha antes e depois da mudança; é barato, mas confundido por qualquer outra coisa que tenha mudado. Um quase-experimento aproveita uma implantação escalonada: se o grupo híbrido foi ativado primeiro para metade dos navegadores gerenciados, a outra metade é um controle concorrente. Uma bancada de testes reproduz os handshakes através de uma cópia do proxy, com e sem o compartilhamento híbrido, e isola diretamente o mecanismo de tamanho, mas não diz com que frequência o mecanismo importa no tráfego real. O Fragment Study combina um quase-experimento de implantação escalonada sobre o LK-HS-1 com uma replicação em bancada — cada um cobre a fraqueza do outro.

3.2 Definição das variáveis

Unidade de análise: uma série de tentativas de conexão — a primeira tentativa mais as novas tentativas automáticas, em até 10 segundos, para o mesmo host —, para que as novas tentativas não inflem os denominadores. Exposição: se o ClientHello ofereceu o X25519MLKEM768. Desfecho: a série termina sem um handshake concluído. Estratificadores: caminho de saída (direto ou proxy legado), versão do navegador, categoria do destino. Escreva essas definições antes de ver os dados de desfecho.

Guarde as definições no dicionário de dados com a data em que foram fixadas. Mais tarde, o piloto mudou uma delas, definindo a série pelo nome do host em vez do endereço, e essa emenda fica registrada ao lado da redação original.

3.3 Ética e minimização

Os logs de handshake contêm endereços IP de clientes e nomes de destinos, que podem revelar condições de saúde (uma ala de hospital) ou comportamentos privados. Minimize na coleta: substitua os endereços dos clientes por um hash com chave, rotacionada mensalmente; guarde os nomes de destino apenas como rótulos de categoria mais um hash com sal; não retenha conteúdo (payload); armazene os logs brutos apenas em sistemas da universidade; obtenha a aprovação do comitê de ética ou do escritório de proteção de dados da universidade; e consulte a equipe de rede sobre o que foi informado aos usuários. As entrevistas com a equipe de help desk (I01–I06) exigem consentimento informado e devem evitar nomear usuários.

3.4 Taxas e intervalos

As taxas de falha são proporções pequenas, situação em que o intervalo normal dos livros-texto se comporta mal. O intervalo score de Wilson se comporta bem perto de zero e é fácil de calcular com a biblioteca padrão.

# Lab 3 (synthetic): Wilson 95% intervals for handshake failure rates before/after enabling hybrid.
import math
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 label, k, n in [("before (x25519 only)", 18, 40000), ("after (hybrid offered)", 61, 40000)]:
    lo, hi = wilson(k, n)
    print(f"{label:24s} {k:3d}/{n} = {1e4*k/n:5.1f} per 10k  95% CI [{1e4*lo:4.1f}, {1e4*hi:4.1f}]")

Saída esperada:

before (x25519 only)      18/40000 =   4.5 per 10k  95% CI [ 2.8,  7.1]
after (hybrid offered)    61/40000 =  15.2 per 10k  95% CI [11.9, 19.6]

O aumento sintético de 4,5 para 15,2 falhas por 10.000 séries é claro — os intervalos não se sobrepõem —, mas ainda não diz nada sobre o porquê. Isso é o Capítulo 4.

O laboratório calcula as taxas para o corpus inteiro, antes da estratificação. Como as duas taxas são pequenas, os intervalos são assimétricos, o que o método de Wilson trata corretamente. Informe contagens e denominadores junto com cada taxa, para que o leitor possa recalcular o intervalo; 18 e 61 falhas em 40.000 séries cada são os números que o Laboratório 4 depois divide por caminho.

3.5 Plano de reprodutibilidade

Fixe a análise em código versionado e num dicionário de dados; gere cada número da dissertação a partir de scripts; armazene o conjunto de dados minimizado com uma soma de verificação; registre a política exata do navegador que ativou o grupo e a sua data. O Laboratório 3b, abaixo, também documenta os pressupostos de tamanho por trás do mecanismo, para que o leitor possa recalculá-los.

# Lab 3b: key-share sizes in a TLS 1.3 ClientHello (sizes from FIPS 203 and RFC 10024).
# X25519 share = 32 bytes; ML-KEM-768 encapsulation key = 1184 bytes; ciphertext = 1088 bytes.
BASE_HELLO = 520          # synthetic size of the rest of a typical ClientHello (illustrative)
MSS = 1460                # TCP payload per segment on a 1500-byte Ethernet path, no options
shares = {"x25519 only": 32,
          "X25519MLKEM768": 1184 + 32,
          "X25519MLKEM768 + x25519": 1184 + 32 + 32}
for name, size in shares.items():
    hello = BASE_HELLO + size + 4          # 4 bytes: group id + length per share (approx.)
    segs = -(-hello // MSS)
    print(f"{name:26s} ClientHello ~{hello:5d} B -> {segs} TCP segment(s)")
print("server share for X25519MLKEM768:", 1088 + 32, "bytes")

Saída esperada:

x25519 only                ClientHello ~  556 B -> 1 TCP segment(s)
X25519MLKEM768             ClientHello ~ 1740 B -> 2 TCP segment(s)
X25519MLKEM768 + x25519    ClientHello ~ 1772 B -> 2 TCP segment(s)
server share for X25519MLKEM768: 1120 bytes

O tamanho do restante do ClientHello (520 bytes) é um pressuposto ilustrativo; os tamanhos reais variam com as extensões, o comprimento do nome do servidor e o preenchimento (padding), e é por isso que a bancada os mede diretamente.

3.6 Erros comuns e limites

Cada erro tem uma salvaguarda já prevista no desenho: séries em vez de tentativas como unidade, categorias de destino mais hashes com sal em vez de nomes, intervalos de Wilson para taxas pequenas e uma implantação escalonada com controle concorrente para separar o efeito do grupo híbrido de qualquer outra coisa que tenha mudado nas mesmas semanas.

Exercícios — capítulo 3

Síntese do capítulo

Um quase-experimento de implantação escalonada mais uma replicação em bancada, com unidades e desfechos definidos de antemão, logs minimizados, intervalos de Wilson e números gerados por scripts, produz um desenho cujos resultados são confiáveis e podem ser refeitos.

Continue estudando — capítulo 03 de 08

← Capítulo 02 · Índice de capítulos do curso · Capítulo 04 →

Siga para a próxima lição escrita.