3.5 The DKIM-Signature Header Field (Das DKIM-Signature-Headerfeld)
3.5. The DKIM-Signature Header Field (Das DKIM-Signature-Headerfeld)
Die Signatur des DKIM-Signature-Headerfeldes ist ein Standard-[RFC5322]-Headerfeld. Wie jedes RFC5322-Headerfeld besteht es aus einem Headerfeldnamen, einem Doppelpunkt, einem Headerfeldwert und einem abschließenden CRLF. Der Headerfeldwert verwendet die in Abschnitt 3.2 definierte Tag=Wert-Syntax.
Die Signatur wird an der ausgehenden Grenze der ADMD des Signers angewendet und an der eingehenden Grenze der ADMD des Verifiers überprüft. Eine einzelne Nachricht kann mehrere DKIM-Signature-Headerfelder enthalten, die vom selben oder von verschiedenen Signern erstellt wurden (siehe Abschnitt 4).
Die folgenden Tags sind im DKIM-Signature-Headerfeld definiert:
v= Version (Klartext; empfohlen, Standard ist "1"). Dieses Tag muss das erste Tag im Headerfeld sein und sein Wert muss "1" sein. Dieses Tag muss interpretiert werden, um die DKIM-Version zu bestimmen. Headerfelder, die nicht mit einem "v="-Tag beginnen oder deren Wert nicht "1" ist, werden ignoriert.
a= Algorithmus zur Generierung der Signatur (Klartext; erforderlich). Signierer und Verifizierer müssen die Algorithmen "rsa-sha1" und "rsa-sha256" unterstützen. Siehe Abschnitt 3.3 für Algorithmen, die Implementierer und Verifizierer unterstützen müssen.
b= Signaturdaten (base64; erforderlich). Nach der Konvertierung des Signaturwerts in base64 wird er in dieses Tag eingefügt. Leerzeichen in der base64-Zeichenkette werden ignoriert und können verwendet werden, um lange Signaturwerte in mehrere Zeilen aufzuteilen.
bh= Body-Hash (base64; erforderlich). Der Body-Hash ist der Wert, der durch Hashing des kanonisierten Bodys mit dem in Abschnitt 3.7 definierten Hash-Algorithmus erhalten wird, base64-kodiert.
c= Nachrichten-Kanonisierungsalgorithmus (Klartext; optional, Standard ist "simple/simple"). Dieses Tag teilt dem Verifizierer mit, welchen Kanonisierungsalgorithmus er verwenden soll. Siehe Abschnitt 3.4.
d= Signing Domain Identifier (Signierungsdomänenidentifikator, SDID) (Klartext; erforderlich). Die Signierungsdomäne beansprucht die Verantwortung für diese Nachricht. Die DNS-Einträge dieser Domäne werden abgefragt, um den für die Verifizierung der Signatur erforderlichen öffentlichen Schlüssel zu erhalten. Die "d="-Domäne muss mit der Domäne des "s="-Selektors identisch sein oder deren übergeordnete Domäne sein.
h= Signierte Headerfelder (Klartext; erforderlich). Durch Doppelpunkte getrennte Liste von Headerfeldnamen, die die bei der Generierung der Signatur in die Signatur einbezogenen Headerfelder identifizieren, von unten nach oben sortiert. Headerfeldnamen müssen in Kleinbuchstaben sein.
i= Agent or User Identifier (Agenten- oder Benutzeridentifikator, AUID) (dkim-quoted-printable; optional, Standard ist "@d"). Der Agenten- oder Benutzeridentifikator liefert einen Identifikator, der auf den Agenten oder Benutzer verweist, in dessen Namen die SDID Verantwortung übernimmt. Die "i="-Domäne muss mit der "d="-Domäne identisch sein oder deren Subdomäne sein.
l= Body-Längenzähler (Klartext-Dezimal; optional, Standard ist gesamter Body). Dieses Tag teilt dem Verifizierer mit, wie viele Bytes des Bodys bei der Berechnung des Body-Hashs verwendet werden sollen.
q= Abfragemethode (Klartext; optional, Standard ist "dns/txt"). Durch Doppelpunkte getrennte Liste von Abfragemethoden zur Abrufung des öffentlichen Schlüssels. Die "dns/txt"-Methode muss unterstützt werden.
s= Selector (Selektor) (Klartext; erforderlich). Der Selector unterteilt den Namespace der "d="-Domäne, um die Speicherung mehrerer Schlüssel zu ermöglichen. Siehe Abschnitt 3.1 für eine Diskussion dieses Mechanismus.
t= Signatur-Zeitstempel (Klartext-Dezimal; empfohlen). Die Zeit der Signaturerstellung in Sekunden seit dem 1. Januar 1970 00:00:00 UTC (Unix-Zeit).
x= Signaturablauf (Klartext-Dezimal; empfohlen). Die absolute Zeit des Signaturablaufs in Sekunden seit dem 1. Januar 1970 00:00:00 UTC. Wenn dieses Tag vorhanden ist, muss sein Wert größer als der Wert des "t="-Tags sein.
z= Kopierte Headerfelder (dkim-quoted-printable; optional). Dieses Tag enthält eine Kopie der bei der Signierung verwendeten ausgewählten Headerfelder unter Verwendung der DKIM-Quoted-Printable-Kodierung. Dies ermöglicht die Erkennung von Änderungen an Headerfeldern während des Übertragungsprozesses.
ABNF-Syntax:
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