SSH – secure shell

 

 

Protocollo che implementa una connessione ad un computer remoto rendendo disponibile al client una shell di comandi nel server:

 

Potenzialità

 

·        Autenticazione mutua del nodo client e del nodo server tramite tecniche di crittografia a  chiave pubblica.

·        Comunicazione fra i nodi: crittata con tecnica di crittografia a chiave privata.

 

Analogo al protocollo telnet:

Adatto per reti locali, la modalità di installazione è la seguente:

 

 

Cosa succede ad una connessione fra client e server?

 

Il client farà connect(), sulla porta 22, il server accept, con le modalità consuete di connessione del protocollo TCP. Creerà così un tubo TCP, su di esso si instaura una procedura di autenticazione simile a quella utilizzata in SSL (autenticazione mutua). I due partner si autenticano mutuamente e scelgono la chiave privata per la comunicazione crittata.

 

Nella pratica (simile alla realtà) le cose funzionano nel seguente modo:

 

Il client genera un numero casuale e lo invia crittato con la chiave pubblica del server(challenge). Il server genera anch’egli un numero random (challenge) esegue una operazione al numero ricevuto, solitamente n+1 e invia entrambi i numeri al client, crittati con la chiave pubblica del client. Il client riceve la risposta alla “domanda” (riceve la risposta alla challenge) che aveva posto al server (incrementa n di 1) “solo” il possessore della chiave privata poteva rispondere! E’ sicuro (almeno c’è una forte probabilità) che dall’altra parte ci sia chi ci deve essere. Analogamente risponde al quesito posto dal server:

 

Durante lo scambio si sceglie anche la chiave privata per la crittazione della comunicazione, questa viene scelta un pezzo dal client ed un pezzo dal server come si vede dallo schema.

 

Autenticazione utente

Ci sono diversi tipi di autenticazione possibile, le più significative sono le seguenti:

 

Ogni nodo ha una lista di utenti, se l’utente pippo è un utente sia del client che del server, allora pippo ha accesso.

 

Classica autenticazione username password. Ogni nodo ha una lista di coppie, il lato client deve inviare user-pass. L’invio di user-pass è effettuato a connessione crittata stabilità!

 

Ogni utente ha una coppia chiave pub, chiave privata. Questa non c’entra nulla con la coppia del nodo! Il server deve avere la Kpub dell’utente.

Es: se sul client c’è pippo, il server conosce Kpub-pippo.

Per implementare una simile tecnica di autenticazione si suppone che i PC che custodiscono le Kpriv dei rispettivi utenti siano privata e fisicamente inaccessibili a terzi! Oppure che i sistemi operativi sulle macchine in comune a più utenti, siano in grado di gestire più profili mantenendo le chiavi private inaccessibili ad utenti non legittimi.

 

 

 

DEF: I numeri random, che inviano o che aspettano, si chiamano challenge (sfida).

 

Domanda: Ma l’associazione utente chiave pubblica come si fa?

Per capire il trucco…