Lorsqu' OpenPGP encode des données dans une armure ASCII, il encapsule les données grâce à des entêtes spécifiques, dans l'optique de leur reconstruction ultérieure. OpenPGP informe l'utilisateur du type de donnée encodé dans l'armure ASCII par l'intermédiaire de ces entêtes.
La concaténation des données suivantes permet de créer l'armure ASCII :
Une ligne d'en-tête d'armure appropriée au type de donnée à encoder,
Les en-têtes de l'armure,
Une ligne vide (de taille nulle ou ne contenant que des espacements),
Les données encodées,
Un checksum spécifique à l'armure,
La ligne de fin d'armure, dépendant de la première ligne.
La ligne d'en-tête d'armure se débute et se termine par cinq tirets ('-', 0x2D) encadrant le contenu approprié. Elle est choisie en fonction du type de donnée à encoder et de la méthode d'encodage.
Elle contient les chaînes de caractères suivantes :
Utilisé pour les fichiers signés, cryptés ou compressés,
Utilisé pour protéger par l'armure les clés publiques,
Utilisé pour protéger par l'armure les clés privées,
Utilisé pour les messages composites, lorsque l'armure est séparée en Y morceaux et que le fichier est le Xième sur Y,
Utilisé pour les messages composites, lorsque l'armure est séparée en un nombre de morceaux inconnu et que le fichier est le Xième. Nécessite l'en-tête d'armure MESSAGE-ID pour être utilisé,
Utilisé pour les signatures détachées, les signatures OpenPGP/MIME, et les signatures qui suivent des messages signés en clair. Remarque: PGP en version 2.x utilise BEGIN PGP MESSAGE pour les signatures détachées.
Les entêtes de l'armure sont des pairs de chaînes de caractère permettant à l'utilisateur ou à l'implémentation OpenPGP de réception d'obtenir des renseignements sur la manière de décoder ou d'utiliser le message. Ces entêtes font partie de l'armure et non pas du message. Par conséquent, elle ne sont protégées par aucune des signatures appliquées au message.
Le format d'une entête d'armure est est constitué d'une paire clé-valeur. La clé et sa valeur sont séparés par ': '(0x38) et le caractère d'espacement simple ' ' (0x20). OpenPGP considérera une entête d'armure mal formatée comme une altération de l'armure ASCII. Un cas de clé non reconnue sera signalé à l'utilisateur sans que le processus OpenPGP appliqué au message soit arrêté.
Les clés actuellement définies d'une entête d'armure sont :
"Version", qui précise la version d'OpenPGP utilisé pour encoder le message,
"Comment", commentaire pouvant être défini par l'utilisateur,
"MessageID", chaîne composée de 32 caractères imprimables. Elle doit être identique pour tous les morceaux d'un message composite utilisant l'entête d'armure "PART X". Elle doit être unique (dans la mesure du possible) pour que le bénéficiaire du message puisse associer les différentes parties du message à sa réception. Un checksum fiable ou une fonction de hachage cryptographique suffisent,
"Hash", listes d'algorithmes de hachage séparés par des virgules qui sont utilisés dans le message. Utilisé seulement dans les messages non signé,
"Charset", description du jeu de caractères utilisé dans le texte non codé.
Il est à noter qu'OpenPGP défini par défaut le texte comme étant en UTF-8. Le résultat d'un codage sera meilleur si les données sont au préalable traduites en UTF-8 puis retranscrite après décodage. Cependant, il est possible que cela soit plus facile à dire quà faire. Par ailleurs, certains groupes d'utilisateurs n'ont pas besoin de UTF-8 parce qu'un jeu de caractère japonais ou encore ISO Latin-5 leur suffit. Dans ce cas, l'implémentation peut redéfinir la description du jeu de caractères en utilisant cette clé. Une implémentation peut utilisée cette clé et tous les jeux de caractère à sa guise; ou encore l'ignorer et supposer que le texte suit la norme UTF-8.
La clé MessageID NE DOIT PAS apparaître à moins que le message soit un message composite. Au cas où il apparaîtrait, il DOIT IMPERATIVEMENT être calculé à partir du message terminé(crypté, signé, etc) et non pas initialisé à une valeur purement aléatoire. Ceci permet de prouver au bénéficiaire légitime du message que ce champ de donnée n'est pas un moyen caché de provoquer des fuites d'information, permettant d'accéder à des clés cryptographiques.
La ligne de fin d'armure est construite de la même manière que la ligne d'en-tête d'armure à l'exception de la chaîne "BEGIN" qui est remplacée par "END".
Précédent | Sommaire | Suivant |
Conversions Radix-64 | Niveau supérieur | Encoder des données binaires en Radix-64 |