Práticas recomendadas para usar o SSH pós-quântico

Neste documento, descrevemos as práticas recomendadas para configurar sua estação de trabalho e instâncias de máquina virtual (VM) do Compute Engine para usar algoritmos de troca de chaves pós-quânticas em conexões SSH.

Para saber mais sobre como as conexões SSH funcionam no Compute Engine, consulte Conexões SSH com VMs do Linux. Para saber como gerenciar o acesso SSH com o IAM, consulte Sobre o Login do SO.

As seções a seguir descrevem a criptografia pós-quântica no contexto do SSH:

As seções a seguir contêm práticas recomendadas que podem ajudar a proteger as conexões SSH contra futuras ameaças de computação quântica:

Entender a ameaça de ataques de captura agora, descriptografia depois

A criptografia de chave pública clássica (como RSA e criptografia de curva elíptica) é teoricamente vulnerável a ataques de computadores quânticos. Embora computadores quânticos de grande escala ainda não existam, os adversários podem capturar e armazenar tráfego de rede criptografado hoje com o objetivo de descriptografá-lo mais tarde, quando um computador quântico suficientemente capaz estiver disponível. Isso é conhecido como um ataque de captura agora, descriptografia depois.

Para se proteger contra essa ameaça, o OpenSSH e outros clientes SSH modernos oferecem suporte a métodos de troca de chaves de criptografia pós-quântica (PQC). Esses métodos usam algoritmos híbridos de troca de chaves que combinam um algoritmo pós-quântico com um algoritmo clássico, como o X25519. Enquanto um dos algoritmos permanecer seguro, a chave de criptografia da sessão não poderá ser derivada por um espião.

Os seguintes algoritmos híbridos de troca de chaves pós-quânticas são compatíveis com implementações modernas do SSH:

  • sntrup761x25519-sha512@openssh.com: um híbrido do Streamlined NTRU Prime 761 e do X25519. Compatível com OpenSSH 9.0 e versões mais recentes, além de PuTTY 0.78 e versões mais recentes.
  • mlkem768x25519-sha256: um híbrido do ML-KEM-768 padronizado pelo NIST (antigo CRYSTALS-Kyber) e do X25519. Compatível com OpenSSH 10.0 e versões mais recentes e PuTTY 0.83 e versões mais recentes. mlkem768x25519-sha256 é o algoritmo de troca de chaves pós-quântico preferido para SSH.

Entender o escopo da proteção pós-quântica no SSH

Uma conexão SSH envolve três fases criptográficas:

  1. Troca de chaves (KexAlgorithms): o cliente e o servidor estabelecem um segredo simétrico compartilhado. Quando você usa um algoritmo de troca de chaves pós-quântica, esse segredo compartilhado é protegido contra descriptografia por computadores quânticos.
  2. Autenticação de usuário e host: o cliente verifica a chave do host do servidor, e o servidor verifica a chave ou o certificado SSH do usuário. O OpenSSH padrão ainda não usa algoritmos de assinatura pós-quântica para autenticação de usuários, mas como a autenticação ocorre dentro do canal criptografado estabelecido pela troca de chaves, suas credenciais e chaves de host são protegidas contra descriptografia retroativa.
  3. Criptografia de dados de sessão (Ciphers): depois que as chaves são trocadas, a sessão é criptografada usando uma cifra simétrica (como aes256-gcm@openssh.com ou chacha20-poly1305@openssh.com). As cifras simétricas não são vulneráveis a ataques de computação quântica da mesma forma que as cifras assimétricas (troca de chaves).

Como funciona a negociação de algoritmos

Durante o handshake de conexão SSH, o cliente envia uma lista ordenada de algoritmos de troca de chaves compatíveis. O servidor compara a lista do cliente com os próprios algoritmos compatíveis e seleciona o primeiro algoritmo na lista do cliente que também é compatível com o servidor.

Como o cliente determina a ordem de preferência, configurar o cliente da estação de trabalho para preferir algoritmos pós-quânticos garante que a troca de chaves pós-quântica seja usada sempre que a VM de destino a oferecer suporte.

Configurar o cliente SSH

Configure o cliente SSH na estação de trabalho para priorizar ou aplicar algoritmos de troca de chaves pós-quânticos. Siga as etapas da ferramenta de cliente preferida.

Console

O SSH no navegador (integrado ao console Google Cloud ) oferece suporte e prefere automaticamente algoritmos de troca de chaves pós-quânticos.

Se você se conectar à VM usando o SSH no navegador, não será necessário configurar nenhuma definição na estação de trabalho. Quando a VM de destino é compatível com algoritmos pós-quânticos, o SSH no navegador negocia automaticamente uma troca de chaves pós-quântica.

Para se conectar usando SSH no navegador:

  1. No console do Google Cloud , acesse a página Instâncias de VM.

    Acessar instâncias de VM

  2. Na lista de instâncias de VM, clique em SSH na linha da VM à qual você quer se conectar.

gcloud

A CLI gcloud (gcloud compute ssh) usa o cliente OpenSSH instalado na sua estação de trabalho local.

  1. Verifique se a estação de trabalho tem o OpenSSH 9.0 ou mais recente instalado:

    ssh -V
    

    Se a versão do OpenSSH for anterior à 9.0, faça upgrade usando o gerenciador de pacotes do sistema operacional.

  2. Quando a estação de trabalho executa o OpenSSH 9.0 ou mais recente, ele inclui troca de chaves pós-quântica na lista de algoritmos padrão. Quando você se conecta a uma VM compatível, a conexão negocia uma troca de chave pós-quântica sem flags adicionais:

    gcloud compute ssh <var>VM_NAME</var> --zone=<var>ZONE</var>
    

    Substitua:

    • <var>VM_NAME</var>: o nome da VM a que você quer se conectar.
    • <var>ZONE</var>: a zona em que a VM está.

Cliente OpenSSH

Se você usa o cliente OpenSSH padrão (ssh) no Linux, macOS ou Windows:

  1. Verifique se a versão do cliente OpenSSH local é 9.0 ou mais recente:

    ssh -V
    
  2. Abra ou crie o arquivo de configuração SSH do usuário (~/.ssh/config no Linux e macOS ou %USERPROFILE%\.ssh\config no Windows).

  3. Adicione ou atualize a diretiva KexAlgorithms.

    • Para priorizar algoritmos pós-quânticos e permitir o fallback clássico (recomendado), adicione a seguinte configuração:

      KexAlgorithms ^mlkem768x25519-sha256,sntrup761x25519-sha512@openssh.com,diffie-hellman-group-exchange-sha256
      
    • Para aplicar algoritmos pós-quânticos de forma estrita e rejeitar conexões clássicas, especifique apenas algoritmos pós-quânticos:

      KexAlgorithms mlkem768x25519-sha256,sntrup761x25519-sha512@openssh.com
      
  4. Conecte-se à VM usando SSH:

    ssh -i <var>PATH_TO_PRIVATE_KEY</var> <var>USERNAME</var>@<var>EXTERNAL_IP</var>
    

    Substitua:

    • <var>PATH_TO_PRIVATE_KEY</var>: o caminho para sua chave SSH privada.
    • <var>USERNAME</var>: seu nome de usuário (como o nome de usuário do Login do SO).
    • <var>EXTERNAL_IP</var>: o endereço IP externo da VM.

App PuTTY

Se você se conecta a VMs usando o PuTTY no Windows:

  1. Verifique se você está executando a versão 0.78 ou mais recente do PuTTY (ou a versão 0.83 ou mais recente para suporte ao ML-KEM). Para verificar sua versão, abra o PuTTY e clique em Sobre. Se necessário, faça o download da versão mais recente na página de download do PuTTY.

  2. Abra o PuTTY.

  3. No painel Categoria, navegue até Conexão > SSH > Kex.

  4. Na lista Política de seleção de algoritmo, localize o algoritmo pós-quântico:

    • Troca de chaves híbrida NTRU Prime / Curve25519 (disponível no PuTTY 0.78 e versões mais recentes)
    • Troca de chaves híbrida ML-KEM / Curve25519 (disponível no PuTTY 0.83 e versões mais recentes)
  5. Selecione o algoritmo pós-quântico e clique em Acima até que ele esteja na parte de cima da lista, acima dos algoritmos clássicos de Diffie-Hellman e ECDH.

  6. (Opcional) Para aplicar algoritmos pós-quânticos de forma estrita, selecione cada algoritmo clássico e clique em Baixo até que ele fique abaixo do divisor -- Warn below here -- ou -- Don't use below here --.

  7. No painel Categoria, clique em Sessão.

  8. Em Sessões salvas, selecione o nome da sessão e clique em Salvar para manter sua preferência de algoritmo.

  9. Clique em Abrir para se conectar à VM.

Configurar a VM

Para usar algoritmos de troca de chaves pós-quânticos, o sistema operacional e o daemon SSH da VM precisam ser compatíveis com eles. Revise os sistemas operacionais compatíveis e entenda o comportamento padrão antes de fazer mudanças na configuração.

Sistemas operacionais compatíveis

Para oferecer suporte à troca de chaves pós-quântica, a VM precisa executar um sistema operacional que inclua o OpenSSH 9.0 ou mais recente. As seguintes imagens públicas do Linux disponíveis no Compute Engine incluem o OpenSSH 9.0 ou versões mais recentes:

  • Debian: Debian 12 (Bookworm) e versões mais recentes
  • Ubuntu: Ubuntu 24.04 LTS (Noble Numbat) e versões mais recentes
  • Fedora: Fedora 39 e versões mais recentes
  • Container-Optimized OS: marco 109 e mais recentes
  • Rocky Linux / AlmaLinux: versão 10 e mais recentes

Versões mais antigas de sistemas operacionais (como Ubuntu 22.04 LTS, Debian 11 ou RHEL 9) incluem versões do OpenSSH anteriores à 9.0 por padrão e não são compatíveis com a troca de chaves pós-quântica.

Comportamento padrão

Se a VM executar um sistema operacional com OpenSSH 9.0 ou mais recente, o servidor OpenSSH (sshd) vai oferecer suporte a sntrup761x25519-sha512@openssh.com por padrão. As VMs que executam o OpenSSH 10.0 ou versões mais recentes também oferecem suporte a mlkem768x25519-sha256 por padrão.

Por padrão, não é necessário fazer mudanças na configuração da VM. Quando um cliente com capacidade pós-quântica se conecta, a VM negocia automaticamente uma troca de chaves pós-quântica. Ao mesmo tempo, a VM continua aceitando conexões de clientes que só oferecem suporte a algoritmos clássicos.

Exigir algoritmos pós-quânticos

Se a organização exigir troca de chaves pós-quântica para todas as sessões SSH, configure o daemon SSH da VM para aceitar apenas algoritmos de troca de chaves pós-quântica.

Para exigir algoritmos pós-quânticos na sua VM:

  1. Conecte-se à VM usando SSH.

  2. Crie um arquivo de configuração de substituição em /etc/ssh/sshd_config.d/:

    sudo bash -c 'cat << 'EOF' > /etc/ssh/sshd_config.d/99-post-quantum-kex.conf
    # Require post-quantum key exchange algorithms only
    KexAlgorithms mlkem768x25519-sha256,sntrup761x25519-sha512@openssh.com
    EOF'
    
  3. Teste a configuração do daemon SSH para verificar se há erros de sintaxe:

    sudo sshd -t
    

    Se o comando gerar erros, verifique o arquivo de configuração antes de continuar.

  4. Recarregue o daemon SSH para aplicar a mudança sem descartar sessões ativas:

    sudo systemctl reload sshd
    

    Se a distribuição do Linux usar ssh como nome do serviço, execute sudo systemctl reload ssh.

  5. Mantenha a janela do terminal atual aberta e abra uma nova janela para testar a conexão com a VM. Se a nova conexão for bem-sucedida, a VM será configurada para exigir algoritmos pós-quânticos.

Recuperar-se de um bloqueio de SSH

Se você configurar a VM para exigir estritamente algoritmos pós-quânticos e ficar bloqueado porque o cliente não oferece suporte aos algoritmos necessários, use uma das seguintes opções de recuperação:

  1. Usar SSH no navegador: abra o console do Google Cloud e conecte-se usando SSH no navegador. O SSH no navegador oferece suporte à troca de chaves pós-quântica e pode se conectar mesmo quando os algoritmos pós-quânticos são estritamente necessários na VM. Depois de conectar, remova ou modifique /etc/ssh/sshd_config.d/99-post-quantum-kex.conf e recarregue sshd.
  2. Use o console serial virtual: conecte-se à VM usando o console de administração especial (SAC) ou o console serial. Faça login com suas credenciais, remova o arquivo de configuração e recarregue sshd.
  3. Usar um script de inicialização: se o acesso interativo não estiver disponível:
    1. No console do Google Cloud , pare a VM.
    2. Edite os metadados da VM para adicionar um script de inicialização que exclua o arquivo de configuração /etc/ssh/sshd_config.d/99-post-quantum-kex.conf criado anteriormente e reinicie o daemon do servidor SSH: startup-script: rm -f /etc/ssh/sshd_config.d/99-post-quantum-kex.conf && (systemctl reload ssh || systemctl reload sshd)
    3. Inicie a VM. O script de inicialização é executado como root e restaura a compatibilidade clássica.
    4. Remova o script de inicialização dos metadados depois de recuperar o acesso.

Verificar o algoritmo de troca de chaves negociado

Para confirmar se uma conexão SSH ativa está usando um algoritmo de troca de chaves pós-quântica, verifique os detalhes da conexão no seu cliente.

Verificar usando o OpenSSH ou a CLI gcloud

Conecte-se à VM com a saída detalhada ativada usando a flag -v:

  • Usando o OpenSSH:

    ssh -v -i <var>PATH_TO_PRIVATE_KEY</var> <var>USERNAME</var>@<var>EXTERNAL_IP</var>
    
  • Usando a CLI gcloud:

    gcloud compute ssh <var>VM_NAME</var> --zone=<var>ZONE</var> -- -v
    

Inspecione a saída do terminal durante o estabelecimento da conexão. Procure a linha kex: algorithm:

debug1: kex: algorithm: sntrup761x25519-sha512@openssh.com

ou

debug1: kex: algorithm: mlkem768x25519-sha256

Se a saída listar sntrup761x25519-sha512 ou mlkem768x25519-sha256, a conexão será protegida pela troca de chaves pós-quântica. Se ele listar um algoritmo como curve25519-sha256 ou ecdh-sha2-nistp256, a conexão estará usando a troca de chaves clássica e ainda estará vulnerável a ataques"capture agora, descriptografe depois".

Verificar usando o PuTTY

  1. No PuTTY, conecte-se à VM.
  2. Clique com o botão direito do mouse na barra de título da janela do PuTTY e selecione Registro de eventos.
  3. Na janela Registro de eventos do PuTTY, procure a linha que indica o algoritmo de troca de chaves:
    • Using NTRU Prime / Curve25519 hybrid key exchange
    • Using ML-KEM / Curve25519 hybrid key exchange

A seguir