Questo documento descrive le best practice per configurare la workstation e le istanze di macchine virtuali (VM) Compute Engine in modo che utilizzino algoritmi di scambio di chiavi post-quantistici per le connessioni SSH.
Per scoprire di più su come funzionano le connessioni SSH in Compute Engine, consulta Connessioni SSH alle VM Linux. Per scoprire di più sulla gestione dell'accesso SSH con IAM, consulta Informazioni su OS Login.
Le sezioni seguenti descrivono la crittografia post-quantistica nel contesto di SSH:
- Comprendere la minaccia degli attacchi di tipo "capture-now, decrypt-later"
- Informazioni sull'ambito della protezione post-quantistica in SSH
Le sezioni seguenti contengono best practice che possono aiutarti a proteggere le connessioni SSH dalle future minacce del quantum computing:
- Configurare il client SSH in modo che preferisca o richieda algoritmi post-quantistici
- Configurare la VM per lo scambio di chiavi post-quantistico
- Verificare l'algoritmo di scambio di chiavi negoziato
Comprendere la minaccia degli attacchi di tipo "capture-now, decrypt-later"
La crittografia a chiave pubblica classica (come RSA e la crittografia a curva ellittica) è teoricamente vulnerabile agli attacchi dei computer quantistici. Sebbene i computer quantistici su larga scala non esistano ancora, gli avversari possono acquisire e archiviare il traffico di rete criptato oggi con l'obiettivo di decriptarlo in un secondo momento, quando sarà disponibile un computer quantistico sufficientemente potente. Questo è noto come attacco capture-now, decrypt-later.
Per proteggersi da questa minaccia, OpenSSH e altri client SSH moderni supportano metodi di scambio di chiavi di crittografia post-quantistica (PQC). Questi metodi utilizzano algoritmi di scambio di chiavi ibridi che combinano un algoritmo post-quantistico con un algoritmo classico (come X25519). Finché uno dei due algoritmi rimane sicuro, la chiave di crittografia della sessione non può essere derivata da un intercettatore.
Le seguenti implementazioni SSH moderne supportano gli algoritmi di scambio di chiavi post-quantistici ibridi:
sntrup761x25519-sha512@openssh.com: un ibrido di Streamlined NTRU Prime 761 e X25519. Supportato in OpenSSH 9.0 e versioni successive e PuTTY 0.78 e versioni successive.mlkem768x25519-sha256: un ibrido di ML-KEM-768 standardizzato dal NIST (in precedenza CRYSTALS-Kyber) e X25519. Supportato in OpenSSH 10.0 e versioni successive e PuTTY 0.83 e versioni successive.mlkem768x25519-sha256è l'algoritmo di scambio di chiavi post-quantistico preferito attuale per SSH.
Comprendere l'ambito della protezione post-quantistica in SSH
Una connessione SSH prevede tre fasi crittografiche:
- Scambio di chiavi (
KexAlgorithms): il client e il server stabiliscono un segreto simmetrico condiviso. Quando utilizzi un algoritmo di scambio di chiavi post-quantistico, questo segreto condiviso è protetto dalla decrittografia da parte dei computer quantistici. - Autenticazione di utenti e host: il client verifica la chiave host del server e il server verifica la chiave o il certificato SSH dell'utente. Standard OpenSSH non utilizza ancora algoritmi di firma post-quantistici per l'autenticazione dell'utente, ma poiché l'autenticazione avviene all'interno del canale criptato stabilito dallo scambio di chiavi, le tue credenziali e le chiavi host sono protette dalla decrittografia retroattiva.
- Crittografia dei dati di sessione (
Ciphers): una volta scambiate le chiavi, la sessione viene criptata utilizzando una cifratura simmetrica (ad esempioaes256-gcm@openssh.comochacha20-poly1305@openssh.com). Le cifrature simmetriche non sono vulnerabili agli attacchi di quantum computing come le cifrature asimmetriche (scambio di chiavi).
Come funziona la negoziazione algoritmica
Durante l'handshake della connessione SSH, il client invia un elenco ordinato di algoritmi di scambio di chiavi che supporta. Il server confronta l'elenco del client con i propri algoritmi supportati e seleziona il primo algoritmo nell'elenco del client supportato anche dal server.
Poiché il client determina l'ordine di preferenza, la configurazione del client della workstation in modo che preferisca gli algoritmi post-quantistici garantisce che lo scambio di chiavi post-quantistico venga utilizzato ogni volta che la VM di destinazione lo supporta.
Configura il client SSH
Configura il client SSH sulla workstation per dare la priorità o applicare gli algoritmi di scambio di chiavi post-quantistici. Completa i passaggi per lo strumento client che preferisci.
Console
SSH nel browser (integrato nella console Google Cloud ) supporta e preferisce automaticamente gli algoritmi di scambio di chiavi post-quantistici.
Se ti connetti alla VM utilizzando SSH nel browser, non devi configurare alcuna impostazione sulla workstation. Quando la VM di destinazione supporta gli algoritmi post-quantistici, SSH nel browser negozia automaticamente uno scambio di chiavi post-quantistico.
Per connetterti utilizzando SSH nel browser:
Nella console Google Cloud , vai alla pagina Istanze VM.
Nell'elenco delle istanze VM, fai clic su SSH nella riga della VM a cui vuoi connetterti.
gcloud
gcloud CLI (gcloud compute ssh) utilizza il client OpenSSH
installato sulla tua workstation locale.
Verifica che sulla workstation sia installato OpenSSH 9.0 o versioni successive:
ssh -VSe la tua versione di OpenSSH è precedente alla 9.0, esegui l'upgrade di OpenSSH utilizzando il gestore di pacchetti del sistema operativo.
Quando la workstation esegue OpenSSH 9.0 o versioni successive, OpenSSH include lo scambio di chiavi post-quantistico nell'elenco degli algoritmi predefiniti. Quando ti connetti a una VM compatibile, la connessione negozia uno scambio di chiavi post-quantistico senza flag aggiuntivi:
gcloud compute ssh <var>VM_NAME</var> --zone=<var>ZONE</var>Sostituisci quanto segue:
<var>VM_NAME</var>: il nome della VM a cui vuoi connetterti.<var>ZONE</var>: la zona in cui si trova la VM.
Client OpenSSH
Se utilizzi il client OpenSSH standard (ssh) su Linux, macOS o Windows:
Verifica che la versione del client OpenSSH locale sia 9.0 o successiva:
ssh -VApri o crea il file di configurazione SSH dell'utente (
~/.ssh/configsu Linux e macOS o%USERPROFILE%\.ssh\configsu Windows).Aggiungi o aggiorna la direttiva
KexAlgorithms.Per dare la priorità agli algoritmi post-quantistici consentendo il fallback classico (consigliato), aggiungi la seguente configurazione:
KexAlgorithms ^mlkem768x25519-sha256,sntrup761x25519-sha512@openssh.com,diffie-hellman-group-exchange-sha256Per applicare rigorosamente gli algoritmi post-quantistici e rifiutare le connessioni classiche, specifica solo gli algoritmi post-quantistici:
KexAlgorithms mlkem768x25519-sha256,sntrup761x25519-sha512@openssh.com
Connettiti alla VM utilizzando SSH:
ssh -i <var>PATH_TO_PRIVATE_KEY</var> <var>USERNAME</var>@<var>EXTERNAL_IP</var>Sostituisci quanto segue:
<var>PATH_TO_PRIVATE_KEY</var>: il percorso della chiave SSH privata.<var>USERNAME</var>: il tuo nome utente (ad esempio il nome utente OS Login).<var>EXTERNAL_IP</var>: l'indirizzo IP esterno della VM.
App PuTTY
Se ti connetti alle VM utilizzando PuTTY su Windows:
Assicurati di eseguire PuTTY versione 0.78 o successive (o versione 0.83 o successive per il supporto di ML-KEM). Per controllare la versione, apri PuTTY e fai clic su Informazioni. Se necessario, scarica l'ultima versione dalla pagina di download di PuTTY.
Apri PuTTY.
Nel riquadro Categoria, vai a Connessione > SSH > Kex.
Nell'elenco Policy di selezione dell'algoritmo, individua l'algoritmo post-quantistico:
- NTRU Prime / Curve25519 hybrid kex (disponibile in PuTTY 0.78+)
- Scambio di chiavi ibrido ML-KEM / Curve25519 (disponibile in PuTTY 0.83 e versioni successive)
Seleziona l'algoritmo post-quantistico e fai clic su Su finché non si trova all'inizio dell'elenco, sopra gli algoritmi Diffie-Hellman e ECDH classici.
(Facoltativo) Per applicare rigorosamente gli algoritmi post-quantistici, seleziona ciascun algoritmo classico e fai clic su Giù finché non si trova sotto il separatore -- Avviso sotto questa riga -- o -- Non utilizzare sotto questa riga --.
Nel riquadro Categoria, fai clic su Sessione.
In Sessioni salvate, seleziona il nome della sessione e fai clic su Salva per mantenere la preferenza dell'algoritmo.
Fai clic su Apri per connetterti alla VM.
Configura la VM
Per utilizzare gli algoritmi di scambio di chiavi post-quantistici, il sistema operativo della VM e il daemon SSH devono supportarli. Esamina i sistemi operativi compatibili e comprendi il comportamento predefinito prima di apportare modifiche alla configurazione.
Sistemi operativi compatibili
Per supportare lo scambio di chiavi post-quantistiche, la VM deve eseguire un sistema operativo che includa OpenSSH 9.0 o versioni successive. Le seguenti immagini Linux pubbliche disponibili su Compute Engine includono OpenSSH 9.0 o versioni successive:
- Debian: Debian 12 (Bookworm) e versioni successive
- Ubuntu: Ubuntu 24.04 LTS (Noble Numbat) e versioni successive
- Fedora: Fedora 39 e versioni successive
- Container-Optimized OS: Milestone 109 e versioni successive
- Rocky Linux / AlmaLinux: versione 10 e successive
Le versioni precedenti del sistema operativo (come Ubuntu 22.04 LTS, Debian 11 o RHEL 9) includono per impostazione predefinita versioni di OpenSSH precedenti alla 9.0 e non supportano lo scambio di chiavi post-quantistico.
Comportamento predefinito
Se la tua VM esegue un sistema operativo con OpenSSH 9.0 o versioni successive, il server OpenSSH (sshd) supporta sntrup761x25519-sha512@openssh.com per impostazione predefinita. Le VM
che eseguono OpenSSH 10.0 o versioni successive supportano anche mlkem768x25519-sha256 per impostazione predefinita.
Per impostazione predefinita, non sono necessarie modifiche alla configurazione della VM. Quando si connette un client in grado di eseguire operazioni post-quantistiche, la VM negozia automaticamente uno scambio di chiavi post-quantistico. Allo stesso tempo, la VM continua ad accettare connessioni da client che supportano solo algoritmi classici.
Richiedere rigorosamente algoritmi post-quantistici
Se la tua organizzazione richiede lo scambio di chiavi post-quantistico per tutte le sessioni SSH, puoi configurare il daemon SSH della VM in modo che accetti solo algoritmi di scambio di chiavi post-quantistico.
Per richiedere rigorosamente algoritmi post-quantistici sulla tua VM:
Connettiti alla VM utilizzando SSH.
Crea un file di configurazione drop-in in
/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'Testa la configurazione del daemon SSH per verificare la presenza di errori di sintassi:
sudo sshd -tSe il comando genera errori, controlla il file di configurazione prima di procedere.
Ricarica il daemon SSH per applicare la modifica senza interrompere le sessioni attive:
sudo systemctl reload sshdSe la tua distribuzione Linux utilizza
sshcome nome del servizio, eseguisudo systemctl reload ssh.Mantieni aperta la finestra del terminale corrente e aprine una nuova per testare la connessione alla VM. Se la nuova connessione va a buon fine, la VM è configurata correttamente per richiedere algoritmi post-quantistici.
Recuperare l'accesso dopo un blocco SSH
Se configuri la VM in modo che richieda rigorosamente algoritmi post-quantistici e non riesci ad accedere perché il client non supporta gli algoritmi richiesti, utilizza una delle seguenti opzioni di recupero:
- Utilizza SSH nel browser: apri la console Google Cloud e connettiti utilizzando SSH nel browser. SSH nel browser supporta lo scambio di chiavi post-quantistico e può connettersi anche quando gli algoritmi post-quantistici sono strettamente necessari sulla VM.
Una volta connesso, rimuovi o modifica
/etc/ssh/sshd_config.d/99-post-quantum-kex.confe ricaricasshd. - Utilizza la console seriale virtuale: connettiti alla VM utilizzando la
console di amministrazione speciale (SAC) o la console seriale.
Accedi con le tue credenziali, rimuovi il file di configurazione e ricarica
sshd. - Utilizza uno script di avvio: se l'accesso interattivo non è disponibile:
- Nella console Google Cloud , arresta la VM.
- Modifica i metadati della VM per aggiungere uno script di avvio che elimini il file di configurazione
/etc/ssh/sshd_config.d/99-post-quantum-kex.confcreato in precedenza, quindi riavvia il daemon del server SSH:startup-script:rm -f /etc/ssh/sshd_config.d/99-post-quantum-kex.conf && (systemctl reload ssh || systemctl reload sshd) - Avvia la VM. Lo script di avvio viene eseguito come root e ripristina la compatibilità classica.
- Rimuovi lo script di avvio dai metadati dopo aver riacquisito l'accesso.
Verifica l'algoritmo di scambio di chiavi negoziato
Per verificare che una connessione SSH attiva utilizzi un algoritmo di scambio di chiavi post-quantistico, controlla i dettagli della connessione dal client.
Verifica utilizzando OpenSSH o gcloud CLI
Connettiti alla VM con l'output dettagliato attivato utilizzando il flag -v:
Utilizzo di OpenSSH:
ssh -v -i <var>PATH_TO_PRIVATE_KEY</var> <var>USERNAME</var>@<var>EXTERNAL_IP</var>Utilizzo di gcloud CLI:
gcloud compute ssh <var>VM_NAME</var> --zone=<var>ZONE</var> -- -v
Ispeziona l'output del terminale durante la creazione della connessione. Cerca la riga
kex: algorithm:
debug1: kex: algorithm: sntrup761x25519-sha512@openssh.com
oppure:
debug1: kex: algorithm: mlkem768x25519-sha256
Se l'output elenca sntrup761x25519-sha512 o mlkem768x25519-sha256, la
connessione è protetta dallo scambio di chiavi post-quantistico. Se elenca un algoritmo
come curve25519-sha256 o ecdh-sha2-nistp256, la connessione utilizza
lo scambio di chiavi classico ed è ancora vulnerabile agli attacchi"capture now, decrypt later".
Verifica utilizzando PuTTY
- In PuTTY, connettiti alla VM.
- Fai clic con il tasto destro del mouse sulla barra del titolo della finestra di PuTTY e seleziona Event Log (Registro eventi).
- Nella finestra PuTTY Event Log, cerca la riga che indica l'algoritmo di scambio
delle chiavi:
Using NTRU Prime / Curve25519 hybrid key exchangeUsing ML-KEM / Curve25519 hybrid key exchange
Passaggi successivi
- Scopri di più sulle connessioni SSH alle VM Linux.
- Consulta le best practice per la protezione dell'accesso SSH.
- Scopri come proteggere le credenziali SSH con i token di sicurezza.
- Scopri di più sulle funzionalità e sulla configurazione di SSH nel browser.