Avviso importante: Google e Yahoo richiederanno il DMARC a partire da aprile 2024.
PowerDMARC

Firma DKIM: Cosa è, perché serve e come funziona?

Firma DKIM

Firma DKIM

Tempo di lettura: 6 min

Chiavi di dominio identificate Mail (DKIM) è un metodo di autenticazione delle e-mail che consente a un'organizzazione di assumersi la responsabilità di un messaggio inviato. Utilizza la crittografia a chiave pubblica per "firmare" digitalmente le e-mail, dimostrando ai destinatari che il messaggio è stato inviato dal proprietario del dominio. I destinatari possono verificare la firma con la chiave pubblica pubblicata del loro dominio per verificare la firma.

Questo articolo esaminerà in dettaglio il DKIM e fornirà una panoramica sul funzionamento di questo metodo di autenticazione delle e-mail.

Che cos'è la firma DKIM?

DKIM è l'acronimo di DomainKeys Identified Mail. È un sistema di autenticazione delle e-mail che fornisce integrità e non ripudio utilizzando firme crittografiche. Insieme a DMARC può aiutare a costruire una solida infrastruttura di protezione contro gli spoof per le vostre e-mail.

Il protocollo DKIM crea una firma crittografica per ogni messaggio inviato ai destinatari, nonché una firma di dominio che viene aggiunta all'intestazione del messaggio.

Questa firma viene utilizzata dal destinatario per verificare che il messaggio sia stato effettivamente inviato dal proprietario del dominio e non da qualcun altro. Verifica inoltre che il messaggio non sia stato manomesso durante il suo percorso dal mittente al destinatario.

Se non corrisponde, allora o:

  1. Il messaggio è stato alterato durante la trasmissione, oppure
  2. Il messaggio viene inviato per conto di un'altra persona che ha accesso alla chiave privata del server di invio.

In questi casi di mancata corrispondenza delle firme, il DKIM impedirà che le e-mail vengano consegnate ai destinatari perché questi non saranno in grado di convalidarle come messaggi legittimi del vostro marchio.

Come funziona una firma DKIM?

Le firme DKIM funzionano inserendo una firma digitale nell'intestazione di un'e-mail. Questa firma può essere verificata dal server ricevente e utilizzata per determinare se un'e-mail è stata manomessa o meno durante il trasporto.

DKIM utilizza la crittografia a chiave pubblica, che si basa su una coppia di chiavi: una privata e una pubblica. La chiave pubblica è distribuita a chiunque la desideri, mentre la chiave privata è tenuta segreta (di solito dal proprietario).

Quando si firma un'e-mail utilizzando DKIM, la propria chiave privata viene utilizzata per creare un hash del contenuto del messaggio e quindi crittografare tale hash con la chiave pubblica del destinatario. Questo hash criptato viene quindi inserito nell'intestazione del messaggio, dove può essere convalidato dal destinatario.

Le chiavi della firma DKIM

Le firme DKIM sono generate utilizzando due chiavi crittografiche, una pubblica e una privata. La chiave pubblica viene pubblicata nel DNS, mentre la chiave privata viene tenuta segreta.

Quando un'e-mail viene firmata, la chiave privata viene utilizzata per generare un hash del messaggio. Questo hash viene poi crittografato con la chiave pubblica e inviato insieme al messaggio stesso.

Quando il destinatario riceve queste informazioni, utilizza la propria chiave privata per decifrare l'hash e verificare che corrisponda al contenuto originale del messaggio.

Le parti della firma DKIM

Una firma DKIM è composta da due parti: l'intestazione e il corpo. L'intestazione contiene informazioni sull'identità del mittente, tra cui l'indirizzo e-mail e la chiave pubblica. Il corpo contiene il messaggio effettivamente inviato.

  1. Per calcolare una firma DKIM, si prende innanzitutto un hash MD5 del proprio nome di dominio (ad esempio, "example.com"), che è la propria chiave pubblica.
  2. Quindi, si concatena il nome del dominio con un hash SHA1 (ad esempio, "sha1(example.com)") e lo si aggiunge al messaggio originale inviato.
  3. Si prende quindi un altro hash MD5 di questa stringa combinata (ad esempio, "md5(sha1(example.com))") e lo si allega come intestazione all'inizio del messaggio prima di inviarlo per la consegna.

Fasi coinvolte nella firma DKIM

Come iniziare con DKIM:

  1. Il primo passo consiste nel creare una chiave privata, che viene utilizzata per firmare il messaggio.
  2. Il secondo passo consiste nel creare una chiave pubblica, che viene utilizzata per la verifica della firma.
  3. Il terzo passo consiste nel generare due record DNS TXT: uno per la chiave pubblica e un altro per il nome del selettore.
  4. Il quarto passo consiste nel pubblicare questi record nel file di zona DNS.

Fasi della firma DKIM:

1. Il mittente genera un messaggio con un identificatore unico chiamato funzione di hash crittografico (di solito SHA-256). Questo identificatore unico è chiamato campo di intestazione DKIM-Signature e contiene informazioni su chi ha firmato il messaggio e quando lo ha fatto.

2. Il mittente aggiunge al messaggio campi di intestazione supplementari che contengono informazioni su:

3. Infine, i destinatari che desiderano verificare queste firme utilizzeranno la loro copia della chiave pubblica del mittente dai loro record DNS o da un servizio intermedio come SenderID o Mailgun, quindi la utilizzeranno per convalidare qualsiasi messaggio con intestazioni DKIM allegate.

Capire i tag utilizzati nella firma DKIM

Questo è un esempio di come potrebbe apparire un record di firma DKIM:

Firma DKIM: v=1;

a=rsa-sha256;

s=jun2005.eng;

c=rilassato/rilassante;

d=esempio.com;

s=dkim;

t=1526555738;

bh=mhU6OJb5ldZf+z/pX9+0Nc4tj/lmyYHWbR8LgI2Q=;

h=To:From:Subject:Date:Message-ID:MIME-Version:Content-Type:Content-Transfer-Encoding;

b=s1sdZCzdX9vxocsMSlT7cOrYixl1g8wfkdzrVe7BGN6ZdPV9xu2A

v= Questo tag indica la versione del DKIM.

a= Specifica l'algoritmo utilizzato dal firmatario per generare la sua chiave pubblica. Può essere uno dei seguenti: RSA1_5, RSA-SHA1 o RSASSA-PSS. Se questo tag manca, si assume RSA-SHA1.

c= Specifica l'algoritmo di canonicalizzazione usato per generare hash dai campi dell'intestazione, come richiesto da [BCP14]. È seguito da un elenco separato da virgole di 1 o più algoritmi di canonicalizzazione (ad esempio, "c=relaxed"). Se questo tag viene omesso, si assume una canonicalizzazione rilassata.

d= Specifica quale nome di dominio deve essere usato quando si generano le firme per i messaggi inviati da questo server (o da un altro destinatario).

s= Il tag "s" è la stringa del selettore, utilizzata dal server ricevente per determinare la chiave pubblica da utilizzare per verificare la firma.

t= Il tag timestamp è usato per registrare quando la firma è stata creata ed è tipicamente rappresentato come un timestamp Unix (il numero di secondi dal 1° gennaio 1970).

bh= Questo tag rappresenta l'hash del corpo, che è una versione crittografata del contenuto del messaggio (incluse le intestazioni). Questo aiuta a prevenire la manomissione dei messaggi dopo che sono stati firmati da DKIM e prima che raggiungano i destinatari.

h= Il valore hash dell'intestazione contiene tutte le intestazioni nella loro interezza (comprese quelle firmate da Sender Policy Framework o DomainKeys Identified Mail), tranne quelle che sono state esplicitamente escluse includendole in un elenco di esclusione. Questo valore deve essere calcolato con SHA-1 o MD5.

b= Il tag "b" è la rappresentazione codificata in base64 di una funzione hash crittografica sul corpo canonicalizzato del messaggio (cioè, dopo che la codifica MIME è stata rimossa).

Generazione di una firma DKIM

  1. Generare una chiave pubblica e una privata.
  2. Generare un'intestazione e un piè di pagina DKIM.
  3. Firmare il contenuto dell'e-mail con la propria chiave privata utilizzando l'algoritmo selezionato, ad esempio RSA-SHA256 o RSA-SHA512.
  4. Comprime il messaggio utilizzando l'algoritmo selezionato, ad esempio deflate o nessuno.
  5. Inserire le intestazioni DKIM all'inizio del messaggio, prima di qualsiasi intestazione MIME.
  6. Inserire il piè di pagina DKIM dopo qualsiasi piè di pagina MIME.

Garantire la validità della firma DKIM

È possibile adottare alcune misure per garantire la validità della firma DKIM:

  1. Stabilire se si vuole utilizzare un algoritmo di firma DKIM tradizionale o uno ottimizzato.
  2. Calcolare un valore di hash per l'intestazione e il corpo del messaggio (in genere si tratta di SHA-256).
  3. Scegliere un algoritmo di firma appropriato (come RSA o ECDSA).
  4. Verificate che la vostra chiave pubblica corrisponda al selettore specificato in precedenza al punto 1 (questo si ottiene utilizzando il DNS).
  5. Firmate il messaggio utilizzando la vostra chiave privata e memorizzatela come stringa ASCII in formato Base64 all'interno dell'intestazione del messaggio e-mail (oltre a inserirla nel DNS).

Verifica della firma DKIM

La verifica della firma DKIM è complicata. Richiede molte competenze per essere impostata e mantenuta e spesso viene utilizzata insieme ad altri sistemi come SPF, anch'essi complicati.

Di conseguenza, la maggior parte degli addetti al marketing delle e-mail utilizza uno strumento di verifica delle firme DKIM, come un DKIM record checker per verificare le firme DKIM. Questo strumento controlla le chiavi DKIM aggiunte a un'e-mail e le verifica rispetto a un database pubblico. Se le chiavi sono valide e attendibili, l'e-mail può essere considerata legittima.

Questo è importante per diversi motivi: in primo luogo, assicura che le vostre e-mail non vengano segnalate come spam dagli ISP o dai clienti degli ISP; in secondo luogo, vi permette di evitare che il vostro dominio venga inserito nella lista nera di altri domini (si tratta del cosiddetto domain poisoning); infine, aiuta a garantire che le vostre e-mail non vengano coinvolte in alcun tipo di attacco man-in-the-middle.

Conclusione

DKIM è una soluzione promettente che consente a un'organizzazione di convalidare la legittimità delle e-mail, soprattutto quelle provenienti da mittenti esterni. Se applicato in modo coerente in tutto l'ambiente di messaggistica, fornisce ai destinatari un elevato grado di sicurezza che un'e-mail sia stata inviata da un rappresentante autorizzato del dominio del mittente. Tuttavia, è importante notare che, sebbene DKIM fornisca un meccanismo di verifica, non è sufficiente a proteggere da attacchi di frode via e-mail come spoofing e phishing. Per questo è necessario un politica DMARC come rifiuto è obbligatoria.

Avete bisogno di aiuto?

L'autenticazione delle e-mail è una parte necessaria della strategia di marketing digitale di qualsiasi azienda. Con così tante e-mail inviate e ricevute ogni giorno, è facile che il vostro marchio si perda nella confusione. Ma con i servizi di autenticazione delle e-mail di PowerDMARC, potete assicurarvi che le vostre e-mail siano viste dalle persone giuste. 

La nostra soluzione di autenticazione delle e-mail vi aiuterà:

Uscita dalla versione mobile