9. Key Re-Exchange (Ri-scambio di chiavi)
9. Key Re-Exchange (Ri-scambio di chiavi)
Il ri-scambio di chiavi viene avviato inviando un pacchetto SSH_MSG_KEXINIT quando non è già in corso uno scambio di chiavi (come descritto nella Sezione 7.1). Quando questo messaggio viene ricevuto, una parte DEVE rispondere con il proprio messaggio SSH_MSG_KEXINIT, tranne quando l'SSH_MSG_KEXINIT ricevuto era già una risposta. Entrambe le parti POSSONO avviare il ri-scambio, ma i ruoli NON DEVONO essere cambiati (ovvero, il server rimane il server e il client rimane il client).
Il ri-scambio di chiavi viene eseguito utilizzando la crittografia che era in vigore quando lo scambio è stato avviato. I metodi di crittografia, compressione e MAC non vengono modificati prima che venga inviato un nuovo SSH_MSG_NEWKEYS dopo lo scambio di chiavi (come nello scambio di chiavi iniziale). Il ri-scambio viene elaborato in modo identico allo scambio di chiavi iniziale, ad eccezione dell'identificatore di sessione che rimarrà invariato. È consentito modificare alcuni o tutti gli algoritmi durante il ri-scambio. Anche le chiavi host possono cambiare. Tutte le chiavi e i vettori di inizializzazione vengono ricalcolati dopo lo scambio. I contesti di compressione e crittografia vengono reimpostati.
Si RACCOMANDA di modificare le chiavi dopo ogni gigabyte di dati trasmessi o dopo ogni ora di tempo di connessione, a seconda di quale evento si verifichi prima. Tuttavia, poiché il ri-scambio è un'operazione a chiave pubblica, richiede una notevole potenza di elaborazione e non dovrebbe essere eseguito troppo spesso.
Possono essere inviati ulteriori dati applicativi dopo l'invio del pacchetto SSH_MSG_NEWKEYS. Lo scambio di chiavi non influisce sui protocolli che si trovano sopra il livello di trasporto SSH.