Aller au contenu principal

6.2. Compression

6.2. Compression

Si la compression a été négociée, le champ payload (et seulement lui) sera compressé en utilisant l'algorithme négocié. Le champ packet_length et mac seront calculés à partir de la charge utile compressée. Le chiffrement sera effectué après la compression.

La compression PEUT être avec état, selon la méthode. La compression DOIT être indépendante pour chaque direction, et les implémentations DOIVENT permettre le choix indépendant de l'algorithme pour chaque direction. En pratique cependant, il est RECOMMANDÉ que la méthode de compression soit la même dans les deux directions.

Les méthodes de compression actuellement définies sont les suivantes:

none     REQUIRED        pas de compression
zlib OPTIONAL compression ZLIB (LZ77)

La compression "zlib" est décrite dans [RFC1950] et dans [RFC1951]. Le contexte de compression est initialisé après chaque échange de clés et est transmis d'un paquet à l'autre, avec seulement un vidage partiel effectué à la fin de chaque paquet. Un vidage partiel signifie que le bloc compressé actuel est terminé et toutes les données seront sorties. Si le bloc actuel n'est pas un bloc stocké, un ou plusieurs blocs vides sont ajoutés après le bloc actuel pour s'assurer qu'il y a au moins 8 bits, en comptant du début du code de fin de bloc du bloc actuel jusqu'à la fin de la charge utile du paquet.

Des méthodes supplémentaires peuvent être définies comme spécifié dans [SSH-ARCH] et [SSH-NUMBERS].