Paquet des données cryptées symétriquement (Tag 9)

Les paquets de données cryptées symétriquement contiennent des données cryptées avec un algorithme à clef symétrique. Une fois décrypté, il contient typiquement d'autres paquets (souvent des paquets de données littéraires ou des paquets de données compressées).

Le corps de ce paquet consiste en :

Le chiffrage symétrique utilisé peut être spécifié dans un paquet publique de clef de session crypté par clef symétrique qui précède le paquet de données cryptées symétriquement. Dans ce cas, l'octet d'algorithme de chiffrage est mis en préfixe à la clef de session avant le cryptage. Si aucun paquet de ce type ne précède les données cryptées, l'algorithme IDEA est utilisé avec la session de clef calculée comme hachage MD5 de la phrase mot de passe.

Les données sont cryptées en mode CFB, avec une taille de décalage CFB égale à la taille du bloc de chiffrage. Le vecteur initial (IV) est spécifié étant tout en zéros. Au lieu d'utiliser un IV, OpenPGP met une chaine de 10 octets devant les données avant cryptage. Les huit premiers octets sont aléatoires, et les 9ème et 10ème octets sont des copies des 7ème et 8ème octets, respectivement. Après avoir décrypté les 10 premiers octets, l'état CFB est resynchronisé si la taille de bloc de chiffrage est de 8 octets ou moins. Les 8 derniers octets du texte de chiffrage sont passés a travers le chiffrage et l'enveloppe de bloc est réinitialisée.

La répétition des 16 bits dans les 80 bits de données aléatoires préfixées au message permet au récepteur de vérifier immédiatement si la clef de session est incorrecte.