3.5 The DKIM-Signature Header Field (Il campo di intestazione DKIM-Signature)
3.5. The DKIM-Signature Header Field (Il campo di intestazione DKIM-Signature)
La firma del campo di intestazione DKIM-Signature è un campo di intestazione [RFC5322] standard. Come qualsiasi campo di intestazione RFC5322, consiste in un nome di campo di intestazione, due punti, un valore di campo di intestazione e un CRLF finale. Il valore del campo di intestazione utilizza la sintassi tag=valore definita nella Sezione 3.2.
La firma viene applicata al confine di uscita dell'ADMD del Signer e viene verificata al confine di ingresso dell'ADMD del Verifier. Un singolo messaggio può contenere più campi di intestazione DKIM-Signature, creati dallo stesso Signer o da Signer diversi (vedere Sezione 4).
I seguenti tag sono definiti nel campo di intestazione DKIM-Signature:
v= Versione (testo semplice; raccomandato, predefinito "1"). Questo tag deve essere il primo tag nel campo di intestazione e il suo valore deve essere "1". Questo tag deve essere interpretato per determinare la versione DKIM. I campi di intestazione che non iniziano con un tag "v=" o il cui valore non è "1" verranno ignorati.
a= Algoritmo utilizzato per generare la firma (testo semplice; richiesto). I firmatari e i verificatori devono supportare gli algoritmi "rsa-sha1" e "rsa-sha256". Vedere Sezione 3.3 per gli algoritmi che gli implementatori e i verificatori devono supportare.
b= Dati della firma (base64; richiesto). Dopo la conversione del valore della firma in base64, viene inserito in questo tag. Gli spazi bianchi nella stringa base64 vengono ignorati e possono essere utilizzati per dividere i valori di firma lunghi in più righe.
bh= Hash del corpo (body hash) (base64; richiesto). L'hash del corpo è il valore ottenuto eseguendo l'hash del corpo canonicalizzato utilizzando l'algoritmo di hash definito nella Sezione 3.7, codificato in base64.
c= Algoritmo di canonicalizzazione del messaggio (testo semplice; opzionale, predefinito "simple/simple"). Questo tag indica al verificatore quale algoritmo di canonicalizzazione utilizzare. Vedere Sezione 3.4.
d= Signing Domain Identifier (Identificatore di dominio di firma, SDID) (testo semplice; richiesto). Il dominio di firma rivendica la responsabilità per questo messaggio. I record DNS di questo dominio verranno interrogati per ottenere la chiave pubblica necessaria per verificare la firma. Il dominio "d=" deve essere uguale al dominio del selettore "s=" o essere il suo dominio genitore.
h= Campi di intestazione firmati (testo semplice; richiesto). Elenco separato da due punti di nomi di campi di intestazione che identificano i campi di intestazione inclusi nella firma durante la generazione della firma, ordinati dal basso verso l'alto. I nomi dei campi di intestazione devono essere in minuscolo.
i= Agent or User Identifier (Identificatore di agente o utente, AUID) (dkim-quoted-printable; opzionale, predefinito "@d"). L'identificatore di agente o utente fornisce un identificatore che fa riferimento all'agente o all'utente per conto del quale l'SDID assume la responsabilità. Il dominio "i=" deve essere uguale al dominio "d=" o essere il suo sottodominio.
l= Contatore di lunghezza del corpo (decimale in testo semplice; opzionale, predefinito è l'intero corpo). Questo tag indica al verificatore quanti byte del corpo utilizzare durante il calcolo dell'hash del corpo.
q= Metodo di query (testo semplice; opzionale, predefinito "dns/txt"). Elenco separato da due punti di metodi di query utilizzati per recuperare la chiave pubblica. Il metodo "dns/txt" deve essere supportato.
s= Selector (Selettore) (testo semplice; richiesto). Il selettore suddivide lo spazio dei nomi del dominio "d=" per consentire l'archiviazione di più chiavi. Vedere Sezione 3.1 per una discussione di questo meccanismo.
t= Timestamp della firma (decimale in testo semplice; raccomandato). Il momento della creazione della firma, in secondi dal 1° gennaio 1970 00:00:00 UTC (tempo Unix).
x= Scadenza della firma (decimale in testo semplice; raccomandato). Il tempo assoluto di scadenza della firma, in secondi dal 1° gennaio 1970 00:00:00 UTC. Se questo tag è presente, il suo valore deve essere maggiore del valore del tag "t=".
z= Campi di intestazione copiati (dkim-quoted-printable; opzionale). Questo tag contiene una copia dei campi di intestazione selezionati utilizzati durante la firma, utilizzando la codifica DKIM-Quoted-Printable. Questo consente di rilevare le modifiche ai campi di intestazione durante il processo di trasferimento.
Sintassi 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