Aller au contenu principal

6.4. Data Integrity (Intégrité des données)

6.4. Data Integrity (Intégrité des données)

L'intégrité des données est protégée en incluant avec chaque paquet un MAC qui est calculé à partir d'un secret partagé, du numéro de séquence du paquet et du contenu du paquet.

L'algorithme d'authentification de message et la clé sont négociés pendant l'échange de clés. Initialement, aucun MAC ne sera en vigueur, et sa longueur DOIT être zéro. Après l'échange de clés, le mac pour l'algorithme MAC sélectionné sera calculé avant le chiffrement à partir de la concaténation des données du paquet:

mac = MAC(key, sequence_number || unencrypted_packet)

unencrypted_packet est le paquet entier sans mac (les champs de longueur, payload et random padding), et sequence_number est un numéro de séquence de paquet implicite représenté comme uint32. Le sequence_number est initialisé à zéro pour le premier paquet, et est incrémenté après chaque paquet (que le chiffrement ou le MAC soit utilisé ou non). Il n'est jamais réinitialisé, même si les clés/algorithmes sont renégociés plus tard. Il revient à zéro après chaque 2^32 paquets. Le sequence_number du paquet lui-même n'est pas inclus dans le paquet envoyé sur le fil.

Les algorithmes MAC pour chaque direction DOIVENT fonctionner indépendamment, et les implémentations DOIVENT permettre de choisir l'algorithme indépendamment pour les deux directions. En pratique cependant, il est RECOMMANDÉ que le même algorithme soit utilisé dans les deux directions.

La valeur de mac résultant de l'algorithme MAC DOIT être transmise sans chiffrement comme dernière partie du paquet. Le nombre d'octets de mac dépend de l'algorithme choisi.

Les algorithmes MAC actuellement définis sont les suivants:

hmac-sha1    REQUIRED        HMAC-SHA1 (longueur du condensé = longueur de la clé = 20)
hmac-sha1-96 RECOMMENDED premiers 96 bits de HMAC-SHA1 (longueur du condensé = 12, longueur de la clé = 20)
hmac-md5 OPTIONAL HMAC-MD5 (longueur du condensé = longueur de la clé = 16)
hmac-md5-96 OPTIONAL premiers 96 bits de HMAC-MD5 (longueur du condensé = 12, longueur de la clé = 16)
none OPTIONAL pas de MAC; NON RECOMMANDÉ

Les algorithmes "hmac-" sont décrits dans [RFC2104]. Les MAC "-n" utilisent uniquement les n premiers bits de la valeur résultante.

SHA-1 est décrit dans [FIPS-180-2] et MD5 est décrit dans [RFC1321].

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