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.
| Categoria | Aplicação | Arquivos | Sessões | Fluxos |
|---|---|---|---|---|
| Chat | AIM | 4 | 3 | 39 |
| Chat | 5 | 4 | 60 | |
| Chat | Hangouts | 5 | 4 | 179 |
| Chat | ICQ | 4 | 3 | 37 |
| Chat | Skype | 2 | 1 | 329 |
| Thunderbird | 4 | 2 | 506 | |
| Streaming | Netflix | 4 | 4 | 72 |
| Streaming | Spotify | 4 | 4 | 96 |
| Streaming | Vimeo | 4 | 4 | 204 |
| Streaming | YouTube | 7 | 7 | 174 |
| Transferência | FTPS | 4 | 2 | 245 |
| Transferência | SFTP/SCP | 20 | 18 | 371 |
| Transferência | Skype | 8 | 8 | 757 |
| VoIP | 6 | 4 | 867 | |
| VoIP | Hangouts | 6 | 4 | 810 |
| VoIP | Skype | 6 | 4 | 596 |
| VoIP | VoipBuster | 5 | 4 | 311 |
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.
limitado a ±1; positivo = cliente → servidor
desde o pacote anterior; 0 no primeiro
1 se há pacote na posição
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
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.
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.
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ário | Pergunta | Divisão | Rótulos | Execuções |
|---|---|---|---|---|
| C1 | Referência | N | 100% | 15 |
| C2 | Poucos rótulos (H1) | N | 1%, 5%, 10% | 45 |
| C3 | Aplicações não vistas (H2) | A1, A2 | 10%, 100% | 60 |
| C4 | Perda de 0, 10 e 20% no teste (H3) | N | 10%, 100% | 90 |
| C5 | Custo de inferência e treino (H4) | C1 | 100% | agrega C1 |
| X1 | Encoder congelado | N | 1% 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.