Pular para o conteúdo

Metodologia

Como o raio-X foi feito.

O protocolo foi definido antes de rodar os experimentos e seguido do pcap bruto até o teste estatístico. Os números desta página são os desta execução: 98 capturas, 5.653 fluxos e 250 execuções.

O problema

A criptografia esconde o conteúdo dos pacotes, mas a rede continua vendo o comportamento: tamanho, direção, intervalo e duração. A pergunta do trabalho é se um pré-treino auto-supervisionado — esconder pacotes e pedir que a rede os reconstrua, sem rótulos — melhora a classificação quando há poucos rótulos, aplicações novas ou perda de pacotes.

Quatro hipóteses foram registradas antes: H1 (poucos rótulos), H2 (aplicações não vistas), H3 (perda de pacotes) e H4 (custo). O veredito de cada uma está em Resultados.

Base de dados

ISCX VPN-nonVPN (2016), só o tráfego sem VPN: 109 capturas, 25,13 GB. A base não tem coluna de categoria; o rótulo vem do nome do arquivo. 11 videochamadas ficam de fora porque podem ser VoIP ou streaming. Os arquivos “a” e “b” de uma gravação são a mesma sessão registrada em duas pontas.

CategoriaAplicaçãoArquivosSessõesFluxos
ChatAIM4339
ChatFacebook5460
ChatHangouts54179
ChatICQ4337
ChatSkype21329
E-mailThunderbird42506
StreamingNetflix4472
StreamingSpotify4496
StreamingVimeo44204
StreamingYouTube77174
TransferênciaFTPS42245
TransferênciaSFTP/SCP2018371
TransferênciaSkype88757
VoIPFacebook64867
VoIPHangouts64810
VoIPSkype64596
VoIPVoipBuster54311

Extração dos fluxos

Pacotes lidos
TCP e UDP, IPv4 e IPv6
Serviços removidos
portas 53, 5353, 5355, 137–139, 1900, 67 e 68
Sem carga útil
descartados (SYN, ACK puro); o handshake TLS com carga fica
Fluxo
5-tupla bidirecional, fecha em FIN, RST ou 60 s de silêncio
Mínimo
3 pacotes com carga
Guardados
até 100 pacotes por fluxo
Teto
3 mi de pacotes e 2.000 fluxos por captura; os 500 primeiros são os principais
Direção
quem envia o primeiro pacote com carga é o cliente (+)
Privacidade
IP e porta só agrupam, em memória; nada de payload é gravado

Nesta execução: 5.653 fluxos (5.457 principais e 196 extras, usados só no pré-treino). 5,76% dos pacotes passavam de 1.500 bytes e foram limitados; só 15,6% dos fluxos chegam a 32 pacotes.

Matriz 32 × 4

Cada fluxo vira uma matriz com os 32 primeiros pacotes com carga útil; fluxos curtos são completados com zeros.

canal 0Direção × tamanho ÷ 1.500

limitado a ±1; positivo = cliente → servidor

canal 1log(1 + intervalo em ms)

desde o pacote anterior; 0 no primeiro

canal 2Presença

1 se há pacote na posição

canal 3Máscara

sempre 0; vale 1 só nas posições escondidas do pré-treino

A normalização (média e desvio dos canais 0 e 1) usa só as posições ocupadas do treino de cada cenário e semente.

Divisão sem vazamento

Todas as divisões são por sessão, nunca por fluxo sorteado: se metade de uma conversa fosse para o treino e metade para o teste, o modelo reconheceria a conversa, não o tipo de tráfego. São cinco sementes (0 a 4) para três cenários:

  • N — aplicações vistas. Em cada aplicação, sessões sorteadas em ~70/15/15 (treino/validação/teste). Aplicações com menos de 3 sessões (chat/Skype, email/Thunderbird, transferencia/FTPS) usam blocos temporais dentro de cada arquivo.
  • A1 e A2 — aplicações não vistas. A1 retira Skype, YouTube e email1; A2 retira Facebook, FTPS, Netflix e email2. Elas ficam só no teste, fora do treino e do pré-treino.
  • Frações de rótulos. 1%, 5%, 10% e 100% do treino, estratificadas por classe (mínimo de 5), aninhadas e iguais para os três métodos.

Testes automáticos 1 a 4 (só matrizes e rótulos; nenhuma sessão em duas partições; pré-treino só com treino; frações aninhadas e reproduzíveis) passaram. Teste 5, cópias exatas entre treino e teste na semente 0: N 0/1.050 · A1 0/2.076 · A2 0/1.415.

Os três métodos

B1Random Forest

300 árvores, max_features √, classes balanceadas, sobre 11 estatísticas do fluxo: contagem; média, desvio, mínimo e máximo de tamanho e de intervalo; soma de tamanhos e de intervalos. Não usa a direção.

B2CNN 1D

Três blocos Conv1D (4 → 64 → 128 → 128, kernel 3, BatchNorm, ReLU), média global e cabeça linear com dropout 0,3. AdamW (1e-3), entropia cruzada ponderada, lote de até 256 e número fixo de passos, sem parada antecipada.

PCNN 1D + pré-treino

Antes do ajuste, o encoder aprende a reconstruir 15% dos pacotes escondidos (30 épocas, lote 512, erro quadrático só nas posições mascaradas), sem rótulos e só com o treino. Depois, ajuste fino idêntico ao do B2.

A única escolha feita com dados foi o número de passos do ajuste, na validação de C1 (sementes 0–2): o menor número de passos a até 0,01 do melhor macro-F1 médio. Escolhidos: 2.000 (500: 0,512 · 1.000: 0,562 · 1.500: 0,531 · 2.000: 0,593 · 3.000: 0,558 · 4.000: 0,532). O teste nunca foi usado para escolher nada.

Cenários

CenárioPerguntaDivisãoRótulosExecuções
C1ReferênciaN100%15
C2Poucos rótulos (H1)N1%, 5%, 10%45
C3Aplicações não vistas (H2)A1, A210%, 100%60
C4Perda de 0, 10 e 20% no teste (H3)N10%, 100%90
C5Custo de inferência e treino (H4)C1100%agrega C1
X1Encoder congeladoN1% a 100%40

Na perda de pacotes, cada pacote do teste some com probabilidade p antes do corte em 32 e os intervalos são recalculados; o sorteio é o mesmo para todos os métodos da semente.

Análise estatística

A unidade é o macro-F1 no teste de cada semente, pareado entre métodos. Para cada comparação (P − B2, P − B1 e P congelado − B2 congelado): teste t pareado bilateral, α = 0,05, intervalo de 95% com 4 graus de liberdade e correção de Holm dentro de cada família (as frações de um mesmo grupo). Relevância prática: diferença de pelo menos 2 pontos percentuais.

Cada comparação recebe um veredito: significativa e relevante, significativa, mas < 2 pp, relevante, mas não significativa ou sem evidência.

Limitações

  • Base de laboratório de 2016: sem TLS 1.3 nem QUIC; em tráfego atual, os modelos podem errar mais.
  • Parte do tráfego sem VPN pode não estar cifrada; como nenhum payload é guardado, isso não pôde ser verificado.
  • Rótulos herdados do nome do arquivo, não verificados fluxo a fluxo.
  • Cinco sementes dão pouco poder estatístico: ausência de significância não prova ausência de efeito.
  • A perda de pacotes é simulada e uniforme; perdas reais vêm em rajadas e com retransmissões.
  • Os primeiros pacotes, que incluem o handshake, pesam muito; o modelo pode estar aprendendo mais o início da conexão que o comportamento.

Execução: AMD Ryzen 7 7735HS with Radeon Graphics | NVIDIA GeForce RTX 4050 Laptop GPU | 4 CPUs | torch 2.11.0+cu128 · 24/10/2026, 20:23:00.