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
- Contar novas tentativas como tentativas independentes.
- Coletar nomes de destino completos "por via das dúvidas".
- Usar intervalos de aproximação normal para taxas perto de zero.
- Tratar uma diferença antes/depois como efeito causal.
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
- EX014 — Escolha do desenho. Compare os três desenhos para o Fragment Study numa tabela de pontos fortes e ameaças. Rubrica: 3 = cada ameaça associada a um desenho que a resolve.
- EX015 — Unidade de análise. Explique como as novas tentativas podem inflar o denominador das falhas e enviesar a taxa. Rubrica: 3 = direção do viés declarada.
- EX016 — Plano de minimização. Escreva a seção de minimização de dados do pedido ao comitê de ética. Rubrica: 3 = hash com chave, categorias, retenção e acesso cobertos.
- EX017 — Wilson à mão. Calcule o intervalo de Wilson para 9 falhas em 20.000 séries com o Laboratório 3. Rubrica: 3 = saída e interpretação corretas.
- EX018 — Sensibilidade ao tamanho. Mude o tamanho de base do Laboratório 3b para 300 e para 1.300 bytes; quando o hello só com x25519 precisa de dois segmentos? Rubrica: 3 = execuções corretas e uma conclusão sobre por que a bancada precisa medir.
- EX019 — Lista de reprodutibilidade. Liste oito itens de que um leitor precisa para reproduzir os seus números. Rubrica: 3 = inclui a data da política e a soma de verificação dos dados.
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.