Aller au contenu principal

3.5 The DKIM-Signature Header Field (Le champ d'en-tête DKIM-Signature)

3.5. The DKIM-Signature Header Field (Le champ d'en-tête DKIM-Signature)

La signature du champ d'en-tête DKIM-Signature est un champ d'en-tête [RFC5322] standard. Comme tout champ d'en-tête RFC5322, il se compose d'un nom de champ d'en-tête, d'un deux-points, d'une valeur de champ d'en-tête et d'un CRLF de fin. La valeur du champ d'en-tête utilise la syntaxe tag=value définie dans la Section 3.2.

La signature est appliquée à la limite de sortie de l'ADMD du Signer et est vérifiée à la limite d'entrée de l'ADMD du Verifier. Un seul message peut contenir plusieurs champs d'en-tête DKIM-Signature, créés par le même Signer ou par différents Signers (voir Section 4).

Les tags suivants sont définis dans le champ d'en-tête DKIM-Signature:

v= Version (texte brut; recommandé, par défaut "1"). Ce tag doit être le premier tag dans le champ d'en-tête et sa valeur doit être "1". Ce tag doit être interprété pour déterminer la version de DKIM. Les champs d'en-tête qui ne commencent pas par un tag "v=" ou dont la valeur n'est pas "1" seront ignorés.

a= Algorithme utilisé pour générer la signature (texte brut; requis). Les signataires et les vérificateurs doivent prendre en charge les algorithmes "rsa-sha1" et "rsa-sha256". Voir Section 3.3 pour les algorithmes que les implémenteurs et les vérificateurs doivent prendre en charge.

b= Données de signature (base64; requis). Après conversion de la valeur de signature en base64, elle est placée dans ce tag. Les espaces blancs dans la chaîne base64 sont ignorés et peuvent être utilisés pour diviser les longues valeurs de signature en plusieurs lignes.

bh= Hachage du corps (body hash) (base64; requis). Le hachage du corps est la valeur obtenue en hachant le corps canonisé à l'aide de l'algorithme de hachage défini dans la Section 3.7, encodée en base64.

c= Algorithme de canonisation des messages (texte brut; facultatif, par défaut "simple/simple"). Ce tag indique au vérificateur quel algorithme de canonisation utiliser. Voir Section 3.4.

d= Signing Domain Identifier (Identifiant de domaine de signature, SDID) (texte brut; requis). Le domaine de signature revendique la responsabilité de ce message. Les enregistrements DNS de ce domaine seront interrogés pour obtenir la clé publique nécessaire à la vérification de la signature. Le domaine "d=" doit être identique au domaine du selector "s=" ou être son domaine parent.

h= Champs d'en-tête signés (texte brut; requis). Liste séparée par des deux-points de noms de champs d'en-tête identifiant les champs d'en-tête inclus dans la signature lors de la génération de la signature, triés du bas vers le haut. Les noms de champs d'en-tête doivent être en minuscules.

i= Agent or User Identifier (Identifiant d'agent ou d'utilisateur, AUID) (dkim-quoted-printable; facultatif, par défaut "@d"). L'identifiant d'agent ou d'utilisateur fournit un identifiant qui fait référence à l'agent ou à l'utilisateur au nom duquel le SDID assume la responsabilité. Le domaine "i=" doit être identique au domaine "d=" ou être son sous-domaine.

l= Compteur de longueur du corps (décimal en texte brut; facultatif, par défaut le corps entier). Ce tag indique au vérificateur combien d'octets du corps utiliser lors du calcul du hachage du corps.

q= Méthode de requête (texte brut; facultatif, par défaut "dns/txt"). Liste séparée par des deux-points de méthodes de requête utilisées pour récupérer la clé publique. La méthode "dns/txt" doit être prise en charge.

s= Selector (Sélecteur) (texte brut; requis). Le selector subdivise l'espace de noms du domaine "d=" pour permettre le stockage de plusieurs clés. Voir Section 3.1 pour une discussion de ce mécanisme.

t= Horodatage de la signature (décimal en texte brut; recommandé). L'heure de création de la signature, en secondes depuis le 1er janvier 1970 00:00:00 UTC (temps Unix).

x= Expiration de la signature (décimal en texte brut; recommandé). L'heure absolue d'expiration de la signature, en secondes depuis le 1er janvier 1970 00:00:00 UTC. Si ce tag est présent, sa valeur doit être supérieure à la valeur du tag "t=".

z= Champs d'en-tête copiés (dkim-quoted-printable; facultatif). Ce tag contient une copie des champs d'en-tête sélectionnés utilisés lors de la signature, en utilisant l'encodage DKIM-Quoted-Printable. Cela permet de détecter les modifications des champs d'en-tête pendant le processus de transfert.

Syntaxe ABNF:

sig-tag-list  =  sig-tag *( ";" sig-tag ) [ ";" ]
sig-tag = [FWS] sig-tag-name [FWS] "=" [FWS]
sig-tag-value [FWS]
sig-tag-name = %x61 / %x62.68 / %x63 / %x64 / %x68 /
%x69 / %x6c / %x71 / %x73 / %x74 /
%x76 / %x78 / %x7a
; a, bh, c, d, h, i, l, q, s, t, v, x, z
sig-tag-value = tval / sig-a-tag-value / sig-b-tag-value /
sig-c-tag-value / sig-d-tag-value /
sig-h-tag-value / sig-i-tag-value /
sig-l-tag-value / sig-q-tag-value /
sig-s-tag-value / sig-t-tag-value /
sig-x-tag-value / sig-z-tag-value