Prácticas recomendadas para usar SSH poscuántico

En este documento, se describen las prácticas recomendadas para configurar tu estación de trabajo y las instancias de máquina virtual (VM) de Compute Engine para usar algoritmos de intercambio de claves poscuánticos para las conexiones SSH.

Para obtener más información sobre cómo funcionan las conexiones SSH en Compute Engine, consulta Conexiones SSH a VMs de Linux. Para obtener información sobre cómo administrar el acceso SSH con IAM, consulta Acerca del Acceso al SO.

En las siguientes secciones, se describe la criptografía poscuántica en el contexto de SSH:

En las siguientes secciones, se incluyen prácticas recomendadas que pueden ayudarte a proteger las conexiones SSH contra futuras amenazas de la computación cuántica:

Comprende la amenaza de los ataques de captura ahora y desencriptación más tarde

La criptografía de clave pública clásica (como la criptografía de curva elíptica y RSA) es teóricamente vulnerable a los ataques de computadoras cuánticas. Si bien aún no existen computadoras cuánticas a gran escala, los adversarios pueden capturar y almacenar tráfico de red encriptado hoy con el objetivo de desencriptarlo más adelante cuando esté disponible una computadora cuántica con la capacidad suficiente. Esto se conoce como un ataque de captura ahora y descifrado más tarde.

Para protegerse contra esta amenaza, OpenSSH y otros clientes SSH modernos admiten métodos de intercambio de claves de criptografía poscuántica (PQC). Estos métodos usan algoritmos de intercambio de claves híbridos que combinan un algoritmo poscuántico con un algoritmo clásico (como X25519). Mientras cualquiera de los algoritmos siga siendo seguro, un intruso no podrá derivar la clave de encriptación de la sesión.

En las implementaciones modernas de SSH, se admiten los siguientes algoritmos híbridos de intercambio de claves poscuánticos:

  • sntrup761x25519-sha512@openssh.com: Es un híbrido de Streamlined NTRU Prime 761 y X25519. Es compatible con OpenSSH 9.0 y versiones posteriores, y con PuTTY 0.78 y versiones posteriores.
  • mlkem768x25519-sha256: Es un híbrido de ML-KEM-768 (anteriormente CRYSTALS-Kyber) y X25519 estandarizados por el NIST. Es compatible con OpenSSH 10.0 y versiones posteriores, y con PuTTY 0.83 y versiones posteriores. mlkem768x25519-sha256 es el algoritmo de intercambio de claves poscuántico preferido actual para SSH.

Comprende el alcance de la protección poscuántica en SSH

Una conexión SSH implica tres fases criptográficas:

  1. Intercambio de claves (KexAlgorithms): El cliente y el servidor establecen un secreto simétrico compartido. Cuando usas un algoritmo de intercambio de claves poscuántico, este secreto compartido está protegido contra la desencriptación por parte de computadoras cuánticas.
  2. Autenticación de usuario y host: El cliente verifica la clave de host del servidor, y el servidor verifica la clave o el certificado SSH del usuario. OpenSSH estándar aún no usa algoritmos de firma poscuánticos para la autenticación del usuario, pero, como la autenticación se produce dentro del canal encriptado que establece el intercambio de claves, tus credenciales y claves de host están protegidas de la desencriptación retroactiva.
  3. Encriptación de datos de sesión (Ciphers): Una vez que se intercambian las claves, la sesión se encripta con un algoritmo de cifrado simétrico (como aes256-gcm@openssh.com o chacha20-poly1305@openssh.com). Los algoritmos de cifrado simétricos no son vulnerables a los ataques de computación cuántica de la misma manera que los algoritmos de cifrado asimétricos (intercambio de claves).

Cómo funciona la negociación de algoritmos

Durante el protocolo de enlace de conexión SSH, el cliente envía una lista ordenada de algoritmos de intercambio de claves que admite. El servidor compara la lista del cliente con sus propios algoritmos admitidos y selecciona el primer algoritmo de la lista del cliente que también admite el servidor.

Dado que el cliente determina el orden de preferencia, configurar tu cliente de estación de trabajo para que prefiera los algoritmos poscuánticos garantiza que se use el intercambio de claves poscuántico siempre que la VM de destino lo admita.

Configura tu cliente SSH

Configura el cliente SSH en tu estación de trabajo para priorizar o aplicar algoritmos de intercambio de claves poscuánticos. Completa los pasos para tu herramienta de cliente preferida.

Console

SSH en el navegador (integrado en la consola de Cloud de Confiance ) admite y prefiere automáticamente los algoritmos de intercambio de claves poscuánticos.

Si te conectas a tu VM con SSH en el navegador, no necesitas configurar ningún parámetro en tu estación de trabajo. Cuando la VM de destino admite algoritmos poscuánticos, SSH en el navegador negocia automáticamente un intercambio de claves poscuántico.

Para conectarte con SSH en el navegador, haz lo siguiente:

  1. En la consola de Cloud de Confiance , ve a la página Instancias de VM.

    Ir a Instancias de VM

  2. En la lista de instancias de VM, haz clic en SSH en la fila de la VM a la que deseas conectarte.

gcloud

Gcloud CLI (gcloud compute ssh) usa el cliente de OpenSSH instalado en tu estación de trabajo local.

  1. Verifica que tu estación de trabajo tenga instalada la versión 9.0 o posterior de OpenSSH:

    ssh -V
    

    Si tu versión de OpenSSH es anterior a la 9.0, actualiza OpenSSH con el administrador de paquetes de tu sistema operativo.

  2. Cuando tu estación de trabajo ejecuta OpenSSH 9.0 o una versión posterior, OpenSSH incluye el intercambio de claves poscuántico en su lista de algoritmos predeterminados. Cuando te conectas a una VM compatible, la conexión negocia un intercambio de claves poscuántico sin marcas adicionales:

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

    Reemplaza lo siguiente:

    • <var>VM_NAME</var>: el nombre de la VM a la que deseas conectarte.
    • <var>ZONE</var>: la zona donde se ubica la VM.

Cliente de OpenSSH

Si usas el cliente estándar de OpenSSH (ssh) en Linux, macOS o Windows, haz lo siguiente:

  1. Verifica que la versión de tu cliente OpenSSH local sea 9.0 o posterior:

    ssh -V
    
  2. Abre o crea tu archivo de configuración de SSH del usuario (~/.ssh/config en Linux y macOS, o %USERPROFILE%\.ssh\config en Windows).

  3. Agrega o actualiza la directiva KexAlgorithms.

    • Para priorizar los algoritmos poscuánticos y permitir la recuperación clásica (recomendado), agrega la siguiente configuración:

      KexAlgorithms ^mlkem768x25519-sha256,sntrup761x25519-sha512@openssh.com,diffie-hellman-group-exchange-sha256
      
    • Para aplicar estrictamente los algoritmos poscuánticos y rechazar las conexiones clásicas, especifica solo algoritmos poscuánticos:

      KexAlgorithms mlkem768x25519-sha256,sntrup761x25519-sha512@openssh.com
      
  4. Conéctate a la VM con SSH:

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

    Reemplaza lo siguiente:

    • <var>PATH_TO_PRIVATE_KEY</var>: Es la ruta de acceso a tu clave SSH privada.
    • <var>USERNAME</var>: Tu nombre de usuario (como tu nombre de usuario de Acceso al SO).
    • <var>EXTERNAL_IP</var>: la dirección IP externa de la VM.

App de PuTTY

Si te conectas a las VMs con PuTTY en Windows, haz lo siguiente:

  1. Asegúrate de ejecutar la versión 0.78 o posterior de PuTTY (o la versión 0.83 o posterior para la compatibilidad con ML-KEM). Para verificar tu versión, abre PuTTY y haz clic en Acerca de. Si es necesario, descarga la versión más reciente desde la página de descarga de PuTTY.

  2. Abre PuTTY.

  3. En el panel Categoría, navega a Conexión > SSH > Kex.

  4. En la lista Política de selección de algoritmos, busca el algoritmo poscuántico:

    • Intercambio de claves híbrido NTRU Prime / Curve25519 (disponible en PuTTY 0.78 y versiones posteriores)
    • Intercambio de claves híbrido ML-KEM / Curve25519 (disponible en PuTTY 0.83 y versiones posteriores)
  5. Selecciona el algoritmo poscuántico y haz clic en Up hasta que esté en la parte superior de la lista, por encima de los algoritmos clásicos de Diffie-Hellman y ECDH.

  6. (Opcional) Para aplicar de forma estricta los algoritmos poscuánticos, selecciona cada algoritmo clásico y haz clic en Hacia abajo hasta que quede debajo del divisor -- Advertencia debajo de esta línea -- o -- No usar debajo de esta línea --.

  7. En el panel Categoría, haz clic en Sesión.

  8. En Sesiones guardadas, selecciona el nombre de tu sesión y haz clic en Guardar para conservar tu preferencia de algoritmo.

  9. Haz clic en Abrir para conectarte a la VM.

Configura tu VM

Para usar algoritmos de intercambio de claves poscuánticos, el sistema operativo y el daemon de SSH de tu VM deben admitirlos. Revisa los sistemas operativos compatibles y comprende el comportamiento predeterminado antes de realizar cambios en la configuración.

Sistemas operativos compatibles

Para admitir el intercambio de claves poscuántico, tu VM debe ejecutar un sistema operativo que incluya OpenSSH 9.0 o una versión posterior. Las siguientes imágenes públicas de Linux disponibles en Compute Engine incluyen OpenSSH 9.0 o versiones posteriores:

  • Debian: Debian 12 (Bookworm) y versiones posteriores
  • Ubuntu: Ubuntu 24.04 LTS (Noble Numbat) y versiones posteriores
  • Fedora: Fedora 39 y versiones posteriores
  • Container-Optimized OS: Hito 109 y versiones posteriores
  • Rocky Linux / AlmaLinux: Versión 10 y posteriores

Las versiones anteriores del sistema operativo (como Ubuntu 22.04 LTS, Debian 11 o RHEL 9) incluyen versiones de OpenSSH anteriores a la 9.0 de forma predeterminada y no admiten el intercambio de claves poscuántico.

Comportamiento predeterminado

Si tu VM ejecuta un sistema operativo con OpenSSH 9.0 o una versión posterior, el servidor OpenSSH (sshd) admite sntrup761x25519-sha512@openssh.com de forma predeterminada. Las VMs que ejecutan OpenSSH 10.0 o versiones posteriores también admiten mlkem768x25519-sha256 de forma predeterminada.

De forma predeterminada, no se requieren cambios en la configuración de la VM. Cuando se conecta un cliente compatible con la criptografía poscuántica, la VM negocia automáticamente un intercambio de claves poscuántico. Al mismo tiempo, la VM sigue aceptando conexiones de clientes que solo admiten algoritmos clásicos.

Exigir estrictamente algoritmos poscuánticos

Si tu organización requiere un intercambio de claves poscuántico para todas las sesiones SSH, puedes configurar el daemon SSH de la VM para que solo acepte algoritmos de intercambio de claves poscuánticos.

Para exigir estrictamente algoritmos poscuánticos en tu VM, haz lo siguiente:

  1. Conéctate a la VM con SSH.

  2. Crea un archivo de configuración de reemplazo en /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. Prueba la configuración del daemon SSH para detectar errores de sintaxis:

    sudo sshd -t
    

    Si el comando produce errores, revisa el archivo de configuración antes de continuar.

  4. Vuelve a cargar el daemon de SSH para aplicar el cambio sin interrumpir las sesiones activas:

    sudo systemctl reload sshd
    

    Si tu distribución de Linux usa ssh como nombre de servicio, ejecuta sudo systemctl reload ssh en su lugar.

  5. Mantén abierta la ventana de la terminal actual y abre una nueva para probar la conexión a la VM. Si la conexión nueva se realiza correctamente, significa que tu VM se configuró correctamente para requerir algoritmos poscuánticos.

Cómo recuperarse de un bloqueo de SSH

Si configuras tu VM para que requiera estrictamente algoritmos poscuánticos y no puedes acceder a ella porque tu cliente no admite los algoritmos requeridos, usa una de las siguientes opciones de recuperación:

  1. Usa SSH en el navegador: Abre la consola de Cloud de Confiance y conéctate con SSH en el navegador. La función SSH en el navegador admite el intercambio de claves poscuántico y puede conectarse incluso cuando los algoritmos poscuánticos son estrictamente necesarios en la VM. Una vez que se conecte, quita o modifica /etc/ssh/sshd_config.d/99-post-quantum-kex.conf y vuelve a cargar sshd.
  2. Usa la consola en serie virtual: Conéctate a la VM con la consola administrativa especial (SAC) o la consola en serie. Accede con tus credenciales, quita el archivo de configuración y vuelve a cargar sshd.
  3. Usa una secuencia de comandos de inicio: Si el acceso interactivo no está disponible, haz lo siguiente:
    1. En la consola de Cloud de Confiance , detén la VM.
    2. Edita los metadatos de la VM para agregar una secuencia de comandos de inicio que borre el archivo de configuración /etc/ssh/sshd_config.d/99-post-quantum-kex.conf que creaste anteriormente y, luego, reinicia el daemon del servidor SSH: startup-script: rm -f /etc/ssh/sshd_config.d/99-post-quantum-kex.conf && (systemctl reload ssh || systemctl reload sshd)
    3. Inicia la VM. La secuencia de comandos de inicio se ejecuta como raíz y restablece la compatibilidad clásica.
    4. Quita la secuencia de comandos de inicio de los metadatos después de recuperar el acceso.

Verifica el algoritmo de intercambio de claves negociado

Para confirmar que una conexión SSH activa usa un algoritmo de intercambio de claves poscuántico, verifica los detalles de la conexión desde tu cliente.

Verifica con OpenSSH o gcloud CLI

Conéctate a tu VM con la salida detallada habilitada usando la marca -v:

  • Cómo usar OpenSSH:

    ssh -v -i <var>PATH_TO_PRIVATE_KEY</var> <var>USERNAME</var>@<var>EXTERNAL_IP</var>
    
  • Con la CLI de gcloud:

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

Inspecciona el resultado de la terminal durante el establecimiento de la conexión. Busca la línea kex: algorithm:

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

o:

debug1: kex: algorithm: mlkem768x25519-sha256

Si el resultado muestra sntrup761x25519-sha512 o mlkem768x25519-sha256, la conexión está protegida por el intercambio de claves poscuántico. Si se muestra un algoritmo como curve25519-sha256 o ecdh-sha2-nistp256, la conexión usa un intercambio de claves clásico y sigue siendo vulnerable a los ataques de"capturar ahora, descifrar después".

Verifica con PuTTY

  1. En PuTTY, conéctate a tu VM.
  2. Haz clic con el botón derecho en la barra de título de la ventana de PuTTY y selecciona Event Log.
  3. En la ventana PuTTY Event Log, busca la línea que indica el algoritmo de intercambio de claves:
    • Using NTRU Prime / Curve25519 hybrid key exchange
    • Using ML-KEM / Curve25519 hybrid key exchange

¿Qué sigue?