A DKIM pass non significa che ogni intestazione visualizzata sia stata firmata. Ogni firma seleziona i campi di intestazione tramite il proprio tag h e applica un valore specificato canonicalizzazione algoritmo. Per decidere se un oggetto, un campo destinatario o un altro valore è stato protetto, ispezionare la copertura effettiva della firma passata.
Inizia con la firma giusta
Registrare d, s, h e c per ciascuno DKIM-Signature intestazione. Associare il risultato attendibile del destinatario alla firma corrispondente anziché considerare un passaggio a livello di messaggio come prova di tutti essi. Una firma deve includere Da, ma non tutte le altre intestazioni sono obbligatorie. RFC 6376 §5.4 spiega le regole di selezione e consiglia coperture utili.
Se Oggetto non è selezionato, la modifica dell'Oggetto non altera di per sé i dati protetti da quella firma. Questa affermazione riguarda la copertura crittografica, non se il messaggio modificato sia accettabile. Un servizio ricevente può comunque applicare una politica indipendente. Allo stesso modo, la firma di A non vincola il destinatario della busta SMTP : l'intestazione visibile A e l'indirizzo RCPT TO sono dati diversi; RFC 5321 §2.3.1 separa l' SMTP busta da contenuto del messaggio.
Tenere conto dei campi ripetuti
Il tag h non è semplicemente un insieme di nomi univoci. Sotto RFC 6376 §5.4.2, i nomi ripetuti selezionano occorrenze fisiche ripetute, procedendo dalla parte inferiore del blocco di intestazione verso l'alto. Ad esempio, se un messaggio ha tre campi Ricevuto e h elenca Ricevuto due volte, vengono selezionate le ultime due occorrenze. L'aggiunta di più occorrenze di un nome a h di quelle esistenti al momento della firma può rilevare l'inserimento successivo di quel campo. Questa tecnica è spesso chiamata sovrascrittura.
Non concludere che un campo più in alto sia firmato semplicemente perché il suo nome appare una volta in h. Ricostruire la selezione rispetto al blocco di intestazione effettivo. Anche i campi duplicati che normalmente dovrebbero essere singolari sollevano domande sull'analisi e sulla validità del messaggio; un calcolo DKIM non consente di ignorare tali preoccupazioni.
Distinguere le modifiche dei valori dalla formattazione normalizzata
Con la semplice canonicalizzazione dell'intestazione, il campo selezionato deve essere presentato esattamente come firmato. Canonicalizzazione rilassata dell'intestazione rende minuscoli i nomi dei campi, spiega le righe di continuazione e normalizza gli spazi bianchi specificati. Non minuscola i valori dei campi né rende equivalenti testi di oggetti diversi. Leggere l'algoritmo selezionato prima di attribuire un errore alla capitalizzazione o al rewrapping.
Specifica illustrativa del test: una firma controllata seleziona Da e Oggetto. Si prevede che la modifica delle parole dell'oggetto invaliderà quella firma. Una seconda firma seleziona Da ma omette Oggetto; lo stesso cambio di soggetto non invalida necessariamente la seconda firma. Il contrasto spiega la copertura prevista, non un'approvazione dell'omissione del Soggetto.
Migliorare la copertura presso il firmatario
Scegli i campi che influenzano l'interpretazione del destinatario e che possono rimanere stabili attraverso il percorso supportato. Esaminare le raccomandazioni in RFC 6376 §5.4.1 e le capacità del tuo firmatario. Evitare di firmare casualmente campi di traccia che il trasporto legittimo aggiungerà o modificherà. Testa il percorso completo con campi duplicati e casi di formattazione in un ambiente controllato.
Documentare il profilo di copertura previsto insieme alla configurazione della firma. Una revisione utile indica esattamente quali intestazioni ed occorrenze sono protette, quali normalizzazioni sono consentite e quali campi rimangono all'esterno della firma. Ciò è più difendibile che descrivere DKIM come un sigillo sull’intero messaggio.
Traccia una selezione di intestazione sintetica
Immagina tre campi X-Example nell'ordine fisico dall'alto verso il basso: il più recente, il medio, il più vecchio. Un elenco di firme h=From:X-Example:X-Example seleziona la più vecchia e poi quella centrale, non la più recente. Con un solo X-Example presente al momento della firma, elencare X-Example due volte include anche un'occorrenza assente; il successivo inserimento di un altro X-Example modifica l'input selezionato e può invalidare la firma. Questo è un esercizio di selezione, non un test di firma eseguito o una raccomandazione per consentire la duplicazione di campi normalmente singolari.