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:
- Entender a ameaça de ataques de captura agora, descriptografia depois
- Entender o escopo da proteção pós-quântica no 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:
- Configure o cliente SSH para preferir ou exigir algoritmos pós-quânticos
- Configurar sua VM para troca de chaves pós-quântica
- Verificar o algoritmo de troca de chaves negociado
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:
- 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. - 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.
- Criptografia de dados de sessão (
Ciphers): depois que as chaves são trocadas, a sessão é criptografada usando uma cifra simétrica (comoaes256-gcm@openssh.comouchacha20-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:
No console do Google Cloud , acesse a página Instâncias de VM.
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.
Verifique se a estação de trabalho tem o OpenSSH 9.0 ou mais recente instalado:
ssh -VSe a versão do OpenSSH for anterior à 9.0, faça upgrade usando o gerenciador de pacotes do sistema operacional.
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:
Verifique se a versão do cliente OpenSSH local é 9.0 ou mais recente:
ssh -VAbra ou crie o arquivo de configuração SSH do usuário (
~/.ssh/configno Linux e macOS ou%USERPROFILE%\.ssh\configno Windows).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-sha256Para 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
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:
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.
Abra o PuTTY.
No painel Categoria, navegue até Conexão > SSH > Kex.
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)
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.
(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 --.
No painel Categoria, clique em Sessão.
Em Sessões salvas, selecione o nome da sessão e clique em Salvar para manter sua preferência de algoritmo.
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:
Conecte-se à VM usando SSH.
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'Teste a configuração do daemon SSH para verificar se há erros de sintaxe:
sudo sshd -tSe o comando gerar erros, verifique o arquivo de configuração antes de continuar.
Recarregue o daemon SSH para aplicar a mudança sem descartar sessões ativas:
sudo systemctl reload sshdSe a distribuição do Linux usar
sshcomo nome do serviço, executesudo systemctl reload ssh.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:
- 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.confe recarreguesshd. - 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. - Usar um script de inicialização: se o acesso interativo não estiver disponível:
- No console do Google Cloud , pare a VM.
- 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.confcriado 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) - Inicie a VM. O script de inicialização é executado como root e restaura a compatibilidade clássica.
- 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
- No PuTTY, conecte-se à VM.
- Clique com o botão direito do mouse na barra de título da janela do PuTTY e selecione Registro de eventos.
- Na janela Registro de eventos do PuTTY, procure a linha que indica o algoritmo de troca de chaves:
Using NTRU Prime / Curve25519 hybrid key exchangeUsing ML-KEM / Curve25519 hybrid key exchange
A seguir
- Saiba mais sobre conexões SSH com VMs do Linux.
- Consulte as práticas recomendadas para proteger o acesso SSH.
- Saiba como proteger credenciais SSH com chaves de segurança.
- Saiba mais sobre os recursos e a configuração do SSH no navegador.