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

06 - Garantia de Integridade e Privacidade

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

Garantia de Integridade e Privacidade

No protocolo SSH, a segurança não se resume a esconder os dados (privacidade); é igualmente vital garantir que a informação chegue ao destino exatamente como foi enviada, sem alterações acidentais ou maliciosas (integridade). Estes dois pilares funcionam em conjunto para criar o que chamamos de "túnel seguro".

1. Garantia de Privacidade (Confidencialidade)

A privacidade no SSH é alcançada através da cifragem de dados. Uma vez estabelecida a chave de sessão simétrica entre o cliente e o servidor, todo o tráfego é transformado em texto cifrado (ciphertext).

  • Ocultação de Metadados: O SSH cifra não apenas o conteúdo dos comandos (ex: rm -rf /), mas também os nomes de utilizador e as respostas do sistema. Um atacante que intercepte os pacotes na rede verá apenas um fluxo de dados aleatórios.
  • Prevenção de Eavesdropping: Mesmo que um administrador de rede mal-intencionado utilize um sniffer (como o Wireshark) no meio do caminho, ele não conseguirá extrair nenhuma informação útil da sessão.

Cifras Simétricas Suportadas

Cifra Tamanho de Chave Performance Recomendação
AES-128-CTR 128 bits Alta Recomendada
AES-256-CTR 256 bits Alta Recomendada (default OpenSSH)
AES-128-GCM 128 bits Alta + AEAD Recomendada (moderna)
AES-256-GCM 256 bits Alta + AEAD Recomendada
ChaCha20-Poly1305 256 bits Muito alta (sem AES-NI) Recomendada (móvel)
3DES-CTR 168 bits Baixa Obsoleta, desativar
Blowfish-CTR 128 bits Média Obsoleta, desativar
ARCFOUR (RC4) 128 bits Alta Insegura, banida

2. Garantia de Integridade

A integridade assegura que os dados não foram modificados durante o trânsito. O SSH utiliza mecanismos matemáticos para validar cada pacote recebido.

  • MAC (Message Authentication Code): Para cada pacote enviado, o SSH calcula um "valor de verificação" (hash) baseado numa combinação dos dados do pacote, um número de sequência e a chave de sessão partilhada.
  • Verificação no Destino: Quando o servidor recebe o pacote, ele realiza o mesmo cálculo. Se o resultado for diferente do MAC enviado, o SSH assume que o pacote foi corrompido ou adulterado por um terceiro e encerra a ligação imediatamente por razões de segurança.
  • Proteção contra Injeção: Este mecanismo impede que um atacante insira comandos extras numa sessão ativa ou altere o destino de uma transferência de ficheiros.

Algoritmos de MAC

Algoritmo Saída Status
HMAC-SHA1 160 bits Histórico, evitável
HMAC-SHA2-256 256 bits Recomendado
HMAC-SHA2-512 512 bits Recomendado
UMAC-64/128 64/128 bits Mais rápido, moderna
HMAC-RIPEMD160 160 bits Obsoleto
AEAD (GCM, Poly1305) variável Padrão moderno

3. Proteção contra Ataques de Replay

A integridade e a privacidade sozinhas não impedem que um atacante capture um pacote cifrado válido e o envie novamente mais tarde para tentar repetir uma ação (como uma transferência bancária ou um comando de execução).

  • Números de Sequência: O SSH atribui um número de sequência único e incremental a cada pacote dentro da sessão cifrada.
  • Rejeição de Duplicados: Se o receptor receber um pacote com um número de sequência que já foi processado ou que está fora de ordem, o pacote é descartado e a sessão é interrompida. Isto garante a frescura dos dados.

4. Algoritmos de Integridade Comuns

Antigamente, o SSH utilizava algoritmos como o HMAC-MD5 ou HMAC-SHA1. Atualmente, por questões de segurança técnica, as implementações modernas preferem:

  • HMAC-SHA2-256/512: Versões robustas de algoritmos de hash.
  • AEAD (Authenticated Encryption with Associated Data): Cifras modernas como AES-GCM ou ChaCha20-Poly1305 que realizam a cifragem (privacidade) e a autenticação (integridade) simultaneamente num único processo, sendo mais rápidas e seguras.

5. A Tríade da Segurança Aplicada ao SSH

Pilar Definição Mecanismo SSH Consequência se Ausente
Confidencialidade Sigilo dos dados Cifra simétrica (AES, ChaCha20) Vazamento de senhas e comandos
Integridade Dados inalterados MAC ou AEAD Comandos adulterados (ex: rm em vez de ls)
Autenticidade Identidade comprovada Assinatura digital (RSA, Ed25519) Ataque Man-in-the-Middle
Não-Repetição Frescor garantido Número de sequência por pacote Ataque de replay

6. Fluxo de Estabelecimento do Túnel Seguro

Cliente                                  Servidor
   |                                        |
   | --- TCP handshake porta 22 ----------> |
   | --- SSH-2.0-OpenSSH_8.4 -------------> |  (banner de versão)
   | <--- SSH-2.0-OpenSSH_8.4 ------------- |
   |                                        |
   | --- KEXINIT (cifras suportadas) -----> |  (negociação algoritmos)
   | <--- KEXINIT ------------------------- |
   |                                        |
   | --- Diffie-Hellman (KEX) ------------> |  (troca de chaves)
   | <--- Diffie-Hellman ----------------- |
   |                                        |
   | ==== CHAVE DE SESSÃO GERADA (DH) ==== |  (secreta, jamais transmitida)
   |                                        |
   | --- NEWKEYS (ativa cifra) ------------> |  (a partir daqui: cifrado)
   | <--- NEWKEYS ------------------------- |
   |                                        |
   | --- USER_AUTH_REQUEST (chave pública) > |  (autenticação)
   | <--- USER_AUTH_SUCCESS --------------- |
   |                                        |
   | --- CHANNEL_OPEN (shell) ------------> |  (canal de dados seguro)

7. Exemplo de Configuração Recomendada

Em /etc/ssh/sshd_config:

# Apenas protocolo SSH-2
Protocol 2

# Cifras modernas (AEAD preferidas)
Ciphers chacha20-poly1305@openssh.com,aes256-gcm@openssh.com,aes128-gcm@openssh.com,aes256-ctr

# MACs modernos
MACs hmac-sha2-512-etm@openssh.com,hmac-sha2-256-etm@openssh.com,umac-128-etm@openssh.com

# Algoritmos de troca de chave (KEX)
KexAlgorithms curve25519-sha256,curve25519-sha256@libssh.org,diffie-hellman-group16-sha512

# Host keys (preferir Ed25519)
HostKey /etc/ssh/ssh_host_ed25519_key
HostKey /etc/ssh/ssh_host_rsa_key

8. Vulnerabilidades Históricas Mitigadas

Vulnerabilidade Ano Causa Mitigação
ROCA (CVE-2017-15361) 2017 Chaves RSA fracas em hardware Infineon Auditoria de chaves
Terrapin (CVE-2023-48795) 2023 Manipulação de prefixo no handshake Atualização + desativar algoritmos afetados
CBC padding oracle 2008 Modo CBC vulnerável a chosen-plaintext Adoção de CTR/GCM
Debian PRNG bug 2008 Entropia fraca gerou chaves previsíveis Re-gerar chaves afetadas

9. Auditoria e Diagnóstico

# Verificar algoritmos suportados pelo servidor
ssh -Q cipher; ssh -Q mac; ssh -Q kex; ssh -Q key

# Testar conexão com verbose completo
ssh -vvv alice@servidor.empresa.com

# Auditar configuração do servidor
sudo sshd -T | grep -i -E "cipher|mac|kex"

# Verificar fingerprint da chave do servidor
ssh-keygen -lf /etc/ssh/ssh_host_ed25519_key.pub

# Capturar tráfego cifrado para validar opacidade
sudo tcpdump -i eth0 -X 'port 22' | head -20
# Saída esperada: bytes aparentemente aleatórios (ciphertext)

10. Resumo da Proteção

Recurso Técnica Utilizada Objetivo
Privacidade Cifragem Simétrica (AES, ChaCha20) Impedir a leitura por terceiros
Integridade MAC ou AEAD Impedir a alteração dos dados
Autenticidade Cifragem Assimétrica (RSA, Ed25519) Garantir a identidade das partes
Não-Repetição Número de sequência por pacote Impedir ataques de replay
Sigilo da Chave Diffie-Hellman / Curve25519 Chave de sessão nunca trafega pela rede

11. Conclusão

Desta forma, o SSH garante que o administrador possa gerir sistemas remotos com a confiança de que as suas ordens são privadas, exatas e únicas. A combinação de criptografia simétrica para sigilo, MACs para integridade, criptografia assimétrica para autenticação e números de sequência para frescor cria um pipeline de defesa em profundidade que resistiu a décadas de análise criptográfica. Para manter esse nível de segurança, é imprescindível manter o software atualizado, desativar algoritmos legados (CBC, SHA1, RC4) e migrar para curvas modernas como Ed25519 e X25519, garantindo que o túnel permaneça imune mesmo a ataques de força bruta com recursos computacionais contemporâneos.