Aller au contenu principal

9. Key Re-Exchange (Ré-échange de clés)

9. Key Re-Exchange (Ré-échange de clés)

Le ré-échange de clés est initié en envoyant un paquet SSH_MSG_KEXINIT lorsqu'un échange de clés n'est pas déjà en cours (comme décrit dans la Section 7.1). Lorsque ce message est reçu, une partie DOIT répondre avec son propre message SSH_MSG_KEXINIT, sauf lorsque le SSH_MSG_KEXINIT reçu était déjà une réponse. L'une ou l'autre partie PEUT initier le ré-échange, mais les rôles NE DOIVENT PAS être changés (c'est-à-dire que le serveur reste le serveur et le client reste le client).

Le ré-échange de clés est effectué en utilisant le chiffrement qui était en vigueur lorsque l'échange a été démarré. Les méthodes de chiffrement, de compression et de MAC ne sont pas modifiées avant qu'un nouveau SSH_MSG_NEWKEYS ne soit envoyé après l'échange de clés (comme dans l'échange de clés initial). Le ré-échange est traité de manière identique à l'échange de clés initial, à l'exception de l'identificateur de session qui restera inchangé. Il est permis de changer certains ou tous les algorithmes pendant le ré-échange. Les clés d'hôte peuvent également changer. Toutes les clés et vecteurs d'initialisation sont recalculés après l'échange. Les contextes de compression et de chiffrement sont réinitialisés.

Il est RECOMMANDÉ que les clés soient changées après chaque gigaoctet de données transmises ou après chaque heure de temps de connexion, selon ce qui arrive en premier. Cependant, étant donné que le ré-échange est une opération à clé publique, il nécessite une quantité importante de puissance de traitement et ne devrait pas être effectué trop souvent.

Plus de données d'application peuvent être envoyées après que le paquet SSH_MSG_NEWKEYS a été envoyé, l'échange de clés n'affecte pas les protocoles qui se situent au-dessus de la couche de transport SSH.