Home Comunidade Eventos YouTube Networks Desafios // produtos Academy News CTI | CVE Contato

02 - Simétrica para Troca de Mensagens

video explicativo
Video explicativoEspaco reservado para o video desta anotação — adicione video: https://youtu.be/... no frontmatter da nota.

Se a criptografia assimétrica é a "chave da porta" no SSH, a Criptografia Simétrica é o "túnel blindado" por onde os dados trafegam. Após a fase inicial de autenticação e o estabelecimento de um segredo compartilhado, o SSH transiciona para o uso de algoritmos simétricos para cifrar todo o volume de mensagens, comandos e arquivos trocados durante a sessão ativa.


1. O Papel da Criptografia Simétrica no Fluxo SSH

A principal razão para o uso da criptografia simétrica na troca de mensagens é a eficiência computacional.

  • Performance: Algoritmos simétricos são ordens de magnitude mais rápidos que os assimétricos. Em uma sessão SSH onde se transfere um arquivo de 10 GB via SCP, o uso de chaves públicas para cada pacote tornaria a transferência inviável e consumiria 100% da CPU.

  • Segurança de Fluxo: Uma única chave (a Chave de Sessão) é usada tanto para cifrar quanto para decifrar as mensagens. Ambos, cliente e servidor, possuem a mesma chave, que nunca foi transmitida em texto claro pela rede.

  • Custo de Hardware: Cifras simétricas modernas como AES e ChaCha20 são aceleradas por instruções de CPU dedicadas (AES-NI no Intel/AMD, ARM Cryptography Extensions), alcançando taxas de criptografia superiores a 10 Gbps sem impacto perceptível em workloads de produção.


2. A Chave de Sessão (Session Key)

A chave simétrica não é armazenada em disco; ela é efêmera.

  • Geração: É criada durante o Key Exchange (KEX) usando algoritmos como Diffie-Hellman, ECDH ou Curve25519. O resultado do KEX é processado por uma função de derivação (HKDF) para produzir múltiplas sub-chaves (cifra cliente→servidor, cifra servidor→cliente, MAC cliente→servidor, MAC servidor→cliente, IVs).

  • Unicidade: Cada nova conexão SSH gera uma chave de sessão completamente diferente. Mesmo que duas sessões sejam estabelecidas no mesmo segundo entre os mesmos hosts, as chaves não têm relação entre si.

  • Destruição: Assim que o comando exit é dado ou a conexão cai, a chave é apagada da memória RAM de ambos os dispositivos. Esta propriedade é conhecida como Perfect Forward Secrecy (PFS): mesmo que um atacante grave todo o tráfego cifrado hoje e comprometa o servidor daqui a 5 anos roubando as chaves privadas, ele não conseguirá decifrar as sessões antigas.

  • Rekey Periódico: Para sessões longas (horas ou dias), o SSH renegocia o KEX automaticamente (default a cada 1 GB transferido ou 1 hora). Esta rotação limita a quantidade de dados cifrados com a mesma chave, mitigando ataques de criptanálise estatística.


3. Integridade e Confidencialidade

A criptografia simétrica no SSH não apenas esconde o conteúdo (confidencialidade), mas também garante que ele não foi alterado (integridade). Para isso, utiliza-se o conceito de MAC (Message Authentication Code) ou modos modernos de cifragem autenticada:

  • Etiquetagem: Cada pacote de dados recebe uma "assinatura" simétrica.

  • Verificação: Se um atacante alterar um único bit da mensagem enquanto ela viaja pelo cabo, a chave simétrica do receptor gerará um hash diferente, e o SSH encerrará a conexão imediatamente por erro de integridade.

  • Ordem de Operações: Em protocolos legados, o MAC era calculado sobre o texto claro (MAC-then-Encrypt), abrindo brechas para padding oracle. O SSH moderno usa Encrypt-then-MAC (EtM), onde a tag é calculada sobre o texto cifrado, eliminando essa classe de ataques.


4. Algoritmos Simétricos Comuns (Cifras)

O SSH negocia com o servidor qual a melhor cifra disponível. As mais utilizadas tecnicamente são:

  • AES (Advanced Encryption Standard): O padrão da indústria. Geralmente usado em modos como AES-GCM (Galois/Counter Mode), que combina cifragem e autenticação de integridade em um único passo ultrarrápido.

  • ChaCha20-Poly1305: Um algoritmo moderno, extremamente rápido em dispositivos que não possuem aceleração de hardware para AES (como alguns roteadores ou dispositivos IoT antigos). Foi projetado por Daniel J. Bernstein e adotado pelo OpenSSH em 2014 como cifra preferida quando AES-NI não está disponível.

  • Triple DES (3DES): Antigo e obsoleto, raramente permitido em configurações modernas de Hardening devido à sua lentidão e vulnerabilidades conhecidas (ataque Sweet32, CVE-2016-2183).

Tabela Comparativa de Cifras

Cifra Tamanho de Chave Modo AEAD Status OpenSSH 9.x
chacha20-poly1305@openssh.com 256 bits Stream Sim Preferido
aes256-gcm@openssh.com 256 bits GCM Sim Preferido
aes256-ctr 256 bits CTR Não (precisa MAC) Aceitável
aes128-ctr 128 bits CTR Não (precisa MAC) Aceitável
aes256-cbc 256 bits CBC Não (vulnerável a padding oracle) Desabilitado
3des-cbc 168 bits CBC Não Obsoleto, removido

5. O Túnel Criptografado

Uma vez que a troca de mensagens simétrica está ativa, tudo o que o usuário digita é encapsulado:

  1. O caractere digitado (ex: 'l') é cifrado com a chave de sessão.

  2. O pacote cifrado é enviado pelo socket TCP.

  3. O servidor recebe, usa a mesma chave para decifrar e executa o comando.

  4. O resultado (ls -l) é cifrado de volta e enviado ao cliente.

  5. O cliente decifra e exibe na tela do operador.

A cifra simétrica é aplicada a todo byte de carga útil (payload), incluindo teclas digitadas, respostas de terminal, transferências SCP/SFTP, e até mesmo as mensagens internas do protocolo SSH (channel open, window adjust). Apenas os bytes iniciais de identificação de versão (string SSH-2.0-...) trafegam em texto claro antes do handshake.


6. Proteção contra Ataques de Replay

Como a criptografia simétrica no SSH utiliza números de sequência internos para cada pacote cifrado, um atacante não pode simplesmente "capturar" um pacote de login e "retransmiti-lo" mais tarde para tentar ganhar acesso. A chave simétrica e o contador de sequência tornam cada pacote único e temporalmente restrito.

Outras Ameaças Mitigadas

Ameaça Mitigação no SSH
Replay attack Número de sequência por direção
Tampering MAC ou AEAD
Padding oracle Encrypt-then-MAC (EtM) ou AEAD
Bit-flipping AEAD (GCM, Poly1305)
Traffic analysis Padding aleatório (RFC 4254)
Brute force em chave 256 bits = 2256 combinações

7. Negociação de Algoritmos (KEXINIT)

Durante o handshake, cliente e servidor trocam mensagens SSH_MSG_KEXINIT contendo listas ordenadas de algoritmos suportados em cada categoria. A regra de seleção (RFC 4251) é: o primeiro algoritmo da lista do cliente que também aparece na lista do servidor é escolhido. Se nenhuma interseção existe, a conexão falha com SSH_MSG_DISCONNECT.

# Consultando algoritmos suportados pelo seu cliente
ssh -Q cipher        # cifras simétricas
ssh -Q mac           # algoritmos de MAC
ssh -Q kex           # algoritmos de troca de chaves
ssh -Q key           # tipos de chave pública

# Auditando configuração efetiva contra um servidor
ssh-audit servidor.com

8. Conclusão: A Eficiência Blindada

A criptografia simétrica no SSH representa o equilíbrio técnico entre segurança matemática robusta e desempenho operacional viável. Sem ela, sessões interativas seriam inutilizáveis em larga escala. Domine as diferenças entre modos AEAD (GCM, Poly1305) e modos legados (CTR com MAC separado), compreenda o papel da chave de sessão efêmera e do rekey periódico, e mantenha suas configurações sempre alinhadas às cifras preferidas modernas (aes256-gcm e chacha20-poly1305). Assim, você garante que cada byte trocado entre seus servidores e clientes permaneça confidencial, íntegro e performático em qualquer cenário de rede.