Vulnerabilità di Secure Shells

7

I ssh nel computer di ingegneria della mia scuola per inviare progetti programmmin di grandi dimensioni su base regolare. Ci sono vulnerabilità o preoccupazioni sull'utilizzo di questo canale così frequentemente? Cosa rende un guscio sicuro così sicuro? Che cosa accedo al computer sul quale mi sto connettendo per accedere al mio computer?

    
posta MrWolvwxyz 10.12.2012 - 19:17
fonte

2 risposte

9

Il server remoto non ha accesso alla tua macchina; la sessione SSH è essenzialmente un tunnel in un account di shell sul computer remoto.

Il motivo per cui SSH è sicuro è che utilizza meccanismi simili a TLS , che impongono la riservatezza e l'autenticità. In sostanza, il server SSH ha una chiave pubblica, che viene trasmessa all'utente e archiviata nel computer. Allora ti fidi di quella chiave per tutte le comunicazioni future. Finché la trasmissione originale della chiave pubblica SSH non è stata manomessa, è possibile mantenere la sicurezza per le comunicazioni in futuro.

Quando ci si connette, il client utilizza la chiave pubblica del server per crittografare una chiave di sessione generata in modo casuale e invia tale chiave crittografata al server, che utilizza la chiave privata (che è segreta e conosciuta solo dal server) per decrittografare il messaggio. A quel punto, solo tu e il server conoscete la chiave di sessione e potete usarla per crittografare i messaggi usando un codice simmetrico. La chiave di sessione viene anche utilizzata per rafforzare l'autenticità e l'integrità dei messaggi, tramite un codice di autenticazione dei messaggi , che consente a entrambi i lati di la conversazione per garantire che nessuna parte della trasmissione sia stata modificata da una terza parte.

Una versione semplificata dell'handshake è la seguente:

  1. Il server genera una coppia di chiavi per un codice asimmetrico, ad es. RSA. La chiave privata è tenuta segreta. Questa coppia di chiavi viene utilizzata come identità del server e viene generalmente generata solo una volta, quindi aggiornata di rado.
  2. Il server invia al client la sua chiave pubblica. Questo deve accadere solo una volta, per la prima volta che il client comunica con il server, o se il server cambia la sua chiave pubblica. Successivamente, il client conserva una copia locale della chiave pubblica.
  3. Il client e il server concordano su una suite di crittografia da utilizzare, ad es. AES-128 e SHA256. Questo processo è piuttosto complesso e alquanto fuori dallo scopo di questa risposta.
  4. Il client genera una chiave di sessione casuale per il codice simmetrico scelto (ad esempio una chiave a 128 bit per AES-128) e la crittografa con la chiave pubblica del server.
  5. Il client invia il messaggio al server.
  6. Il server decrittografa il messaggio utilizzando la chiave privata e utilizza la chiave di sessione decrittografata come chiave per il codice simmetrico scelto.
  7. Ogni messaggio viene crittografato utilizzando il codice simmetrico e autenticato tramite un HMAC basato sull'algoritmo hash scelto nel contratto della suite di crittografia. Entrambe le parti ora possono scambiarsi messaggi in sicurezza.

Ovviamente questo spiega alcuni dettagli, ma è una rappresentazione ragionevole di ciò che accade.

    
risposta data 10.12.2012 - 19:28
fonte
2

La risposta di Polynomial copre la parte più difficile della tua domanda. Per il resto:

"Che cosa rende sicura una shell sicura?"

"Secure Shell" era l'alternativa a ciò che esisteva prima. Telnet, FTP, rcp e rsh.

Questi protocolli funzionavano tutti in chiaro e potevano essere banalmente intercettati da chiunque potesse annusare il traffico. Erano inoltre soggetti a attacchi di furto d'identità e attacchi di tipo "uomo medio", in cui il sosia o il MITM potevano raccogliere le tue credenziali o guardare la tua sessione.

"Esistono vulnerabilità o preoccupazioni sull'utilizzo di questo canale così frequentemente?"

Non c'è nulla di particolarmente sbagliato nell'uso frequente di SSH. È prassi comune nei circoli tecnici usare SSH per tutto. I rischi per la sicurezza di SSH sono generalmente legati agli utenti che utilizzano password deboli su server con connessione Internet o amministratori che non riescono a mantenere aggiornato ssh, non bloccano gli account dopo troppi tentativi falliti o utilizzano la limitazione della velocità per mitigare la forzatura bruta.

È meglio disabilitare l'autenticazione basata su password e affidarsi esclusivamente a coppie di chiavi pubbliche-private. Le coppie di chiavi non possono essere realisticamente forzate brute.

L'uso di keypair e trust non centralizzati rende le implementazioni di SSH più affidabili di SSL. Ma richiede un utente più tecnico per capire come usare SSH correttamente.

    
risposta data 12.12.2012 - 20:45
fonte

Leggi altre domande sui tag