Cryptology Academy · Lezione

Handshake SSH e autenticazione con chiave host

Segua l'handshake SSH-2: scambio delle versioni, negoziazione degli algoritmi, scambio delle chiavi e autenticazione del servizio.

Lezione 1 di 413 passaggi

Handshake SSH e autenticazione con chiave host è una lezione Cryptology Academy gratuita su CoddyKit. Questa è la lezione 1 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Cryptology Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Cryptology Academy include 4 lezioni in totale.

Connessione TCP sulla porta 22

SSH inizia con una connessione TCP alla porta 22. Una volta stabilita, client e server si scambiano stringhe di versione come SSH-2.0-OpenSSH_9.3, che identificano la versione del protocollo e l'implementazione. Questo scambio consente a entrambe le parti di verificare la compatibilità prima di procedere.

Fase di negoziazione degli algoritmi

Dopo lo scambio della versione, entrambe le parti inviano pacchetti SSH_MSG_KEXINIT che elencano gli algoritmi supportati. Questi elenchi includono i metodi di scambio delle chiavi, i tipi di chiavi host, i cifrari simmetrici, gli algoritmi MAC e la compressione. L'intersezione dei due elenchi determina gli algoritmi scelti per la sessione.

Scambio di chiavi Diffie-Hellman ed ECDH

La chiave di sessione viene stabilita utilizzando un algoritmo di scambio delle chiavi come Diffie-Hellman o ECDH. Il client e il server generano ciascuno una coppia di chiavi effimere, si scambiano i valori pubblici e calcolano indipendentemente lo stesso segreto condiviso. Questo segreto condiviso viene utilizzato come base per la derivazione della chiave di sessione senza essere mai trasmesso direttamente.

Autenticazione della chiave host del server

Il server dimostra la propria identità firmando l'hash dello scambio delle chiavi con la propria chiave privata host. La chiave host può essere RSA, ECDSA o il moderno formato Ed25519. Il client utilizza la chiave pubblica corrispondente per verificare questa firma, confermando di comunicare con il server autentico e non con un impostore.

Trust On First Use (TOFU)

Alla prima connessione a un nuovo server, il client non conosce ancora la chiave pubblica host. SSH mostra l'impronta della chiave e chiede all'utente di accettarla. Questo modello Trust On First Use memorizza la chiave in known_hosts e rileva eventuali modifiche nelle connessioni successive, avvisando di possibili attacchi man-in-the-middle.

Verifica dell'impronta della chiave host

Il modo più sicuro per verificare la chiave host di un nuovo server consiste nell'utilizzare un canale out-of-band. Un amministratore può leggere l'impronta del server di persona o tramite un canale sicuro verificato, quindi confrontarla con quella visualizzata dal client SSH. In questo modo si evita di accettare silenziosamente una chiave fraudolenta alla prima connessione.

Struttura del file known_hosts

Il file known_hosts memorizza righe nel formato: hostname algorithm base64-key. Ogni voce rappresenta l'identità di un server attendibile. Quando ci si connette a un host già presente in known_hosts, SSH verifica che la chiave presentata corrisponda a quella memorizzata e rifiuta la connessione in caso di differenza.

Derivazione della chiave di sessione

Dopo lo scambio delle chiavi, entrambe le parti derivano indipendentemente le chiavi di sessione utilizzando il segreto condiviso, l'hash dello scambio e l'identificatore della sessione. Vengono derivate chiavi separate per ciascuna direzione della comunicazione e per le operazioni di cifratura e MAC. Ciò significa che le chiavi utilizzate per il traffico dal client al server sono diverse da quelle utilizzate dal server al client.

Fase di comunicazione cifrata

Una volta stabilite le chiavi di sessione, tutte le comunicazioni SSH successive sono cifrate e autenticate. Il cifrario negoziato, come AES-256-GCM o ChaCha20-Poly1305, protegge la riservatezza, mentre il MAC garantisce l'integrità. Anche il nome utente e le credenziali di autenticazione vengono inviati all'interno di questo tunnel cifrato.

Confronto tra i tipi di chiavi host SSH

Le chiavi host RSA da 2048 o 4096 bit sono ampiamente supportate, ma più lente. Le chiavi ECDSA basate su curve NIST sono più veloci, ma alcuni utenti non si fidano dei parametri delle curve NIST. Le chiavi Ed25519 basate su Curve25519 sono la raccomandazione moderna: sono piccole, veloci, offrono una sicurezza elevata e non dipendono dai parametri delle curve NIST. La maggior parte dei server SSH moderni offre Ed25519 per impostazione predefinita.

Riepilogo della stabilimento della sessione

Il handshake SSH comprende: connessione TCP, scambio della versione, negoziazione degli algoritmi, scambio delle chiavi che stabilisce le chiavi di sessione, verifica della chiave host del server e autenticazione dell'utente. Tutti i passaggi successivi allo scambio della versione avvengono all'interno di un canale cifrato e protetto contro le alterazioni, stabilito dalla fase di scambio delle chiavi.

Verifica della chiave host

Come verifica un client la chiave host del server SSH nelle connessioni successive alla prima?

Riepilogo dell'handshake SSH

In questa lezione: TCP si connette alla porta 22, vengono scambiate le stringhe di versione, la negoziazione degli algoritmi seleziona i cifrari e i metodi di scambio delle chiavi, ECDH o DH stabilisce un segreto condiviso, le chiavi di sessione vengono derivate separatamente per ciascuna direzione, il server autentica la propria identità con la firma della chiave host e il client verifica la chiave rispetto a known_hosts utilizzando il modello TOFU alla prima connessione.

Gratis per iniziare

Impara Cryptology Academy con un tutor IA — gratis

Scrivi ed esegui vero codice nel tuo browser, ricevi aiuto istantaneo da un tutor IA disponibile 24/7, e riprendi da dove hai lasciato sul web o nell'app.

Corsi
67
Lezioni
261

Domande Frequenti

La lezione «Handshake SSH e autenticazione con chiave host» è gratuita?

Sì — il testo completo di «Handshake SSH e autenticazione con chiave host» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Cryptology Academy, passa a CoddyKit PRO. Il corso Cryptology Academy include 4 lezioni in totale.

Cosa imparerò in «Handshake SSH e autenticazione con chiave host»?

Segua l'handshake SSH-2: scambio delle versioni, negoziazione degli algoritmi, scambio delle chiavi e autenticazione del servizio. Eserciti Cryptology Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare Cryptology Academy?

Non è richiesta alcuna esperienza precedente. Cryptology Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 1 di 4.

Quanto tempo richiede la lezione «Handshake SSH e autenticazione con chiave host»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione Cryptology Academy?

Sì. Ogni lezione Cryptology Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. Handshake SSH e autenticazione con chiave host
  2. Autenticazione a chiave pubblica e agent forwarding
  3. Tecniche di tunneling SSH e port forwarding
  4. Hardening SSH e buone pratiche di audit
← Torna a Cryptology Academy