La firma DKIM, insieme ad altri metodi, come SPF o DMARC, è uno dei metodi più comuni per autenticarsi come mittente di un messaggio e-mail. Di seguito vi spieghiamo perché dovreste usarla e come funziona. Iniziamo!
Che cos’è il DKIM?
DomainKeys Identified Mail (DKIM) è una firma digitale aggiunta a ogni e-mail inviata da un determinato indirizzo e-mail. Non è la tipica firma che ci si aspetta di vedere in calce a un’e-mail aziendale. In effetti, normalmente non si vede nemmeno il DKIM. Si tratta di un insieme apparentemente casuale di caratteri nascosti nel codice sorgente di un’e-mail, un luogo in cui le persone non guardano di solito, ma i server che accettano le e-mail in arrivo sicuramente sì.
Dopo tutto, DKIM è uno standard di settore per l’autenticazione delle e-mail. Naturalmente, l’aggiunta di una firma DKIM non garantisce la consegna, ma aumenta significativamente le probabilità di un esito positivo.
Perché usare il DKIM?
Immaginate il seguente scenario. State inviando un rapido messaggio di follow-up a un potenziale investitore dopo un incontro: “Yvonne, fammi sapere se vuoi procedere con quello che abbiamo discusso prima“. Passa un po’ di tempo e non avete mai ricevuto una risposta da Yvonne, ma la incontrate durante un’altra riunione e le accennate con discrezione a quell’e-mail. Perplessa, Yvonne dice: “Mark, non ti ho più sentito“.
Ci sono molte ragioni potenziali per una scarsa deliverability, ma, come si è scoperto, Mark ha dimenticato di impostare l’autenticazione DKIM per il suo account di posta elettronica. Di conseguenza, il server di Yvonne non era sicuro che fosse davvero Mark a inviarle l’e-mail e ha scartato il messaggio.
Lo scopo principale del DKIM è quello di prevenire lo spoofing. Lo spoofing delle e-mail consiste nel modificare il contenuto del messaggio originale e inviarlo da un mittente alternativo che sembra una fonte affidabile. Questo tipo di attacco informatico è ampiamente utilizzato per le frodi, ad esempio l’invio di messaggi di richiesta di pagamento da un indirizzo e-mail simile al vostro (mark@whatevercompany.io vs. mark@whatever-company.io).
Che aspetto ha un’intestazione DKIM?
Ecco un esempio di record di posta identificata DomainKeys:
DKIM-Signature: v=1; a=rsa-sha256; d=example.net; s=newyork;
c=relaxed/simple; q=dns/txt; t=1117574938; x=1118006938;
h=from:to:subject:date:keywords:keywords;
bh=MTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTI=;
b=dzdVyOfAKCdLXdJOc9G2q8LoXSlEniSbav+yuU4zGeeruD00lszZ
VoG4ZHRNiYzR
DKIM è composto da diversi elementi, descritti con vari tag e valori corrispondenti a ciascuno. Analizziamo il significato di ciascun elemento utilizzato sopra:
Tag e valore | Significato | Obbligatorio/facoltativo |
---|---|---|
v=1 | Versione. È sempre uguale a ‘1’. | Obbligatorio |
a=rsa-sha256 | Algoritmo di firma (quello usato per creare un record DKIM dal mittente). Di solito, è rsa-sha o rsa-sha256. Esistono altri algoritmi, ma non sempre sono supportati dai client di ricezione. | Obbligatorio |
d=example.com | Il dominio del mittente di un messaggio (dove viene firmato il DKIM). | Obbligatorio |
s=news | Selettore – include istruzioni su quale chiave pubblica utilizzare per risolvere un determinato DKIM (maggiori informazioni in seguito). | Obbligatorio |
c=relaxed/relaxed | Algoritmo di canonicalizzazione utilizzato sia per l’intestazione che per il corpo. | Obbligatorio |
q=dns/txt | Metodo di interrogazione utilizzato per recuperare la chiave pubblica. Per impostazione predefinita, è “dns/txt”. | Opzionale (consigliato) |
t=1126524832 | Un timestamp di quando il messaggio è stato firmato. | Obbligatorio |
x=1149015927 | Tempo di scadenza di questo DKIM (se un’e-mail arriva dopo il tempo di scadenza, la verifica fallirà anche se tutto il resto corrisponde perfettamente). | Opzionale (consigliato) |
h=from:to:subject:date:keywords:keywords; | Elenco di intestazioni, separate da due punti. | Obbligatorio |
bh=MHIzKDU2Nzf3MDEyNzR1Njc5OTAyMjM0MUY3ODlqBLP= | Il corpo del messaggio con hash, dopo essere stato canonicalizzato con il metodo del tag “c” e poi passato attraverso la funzione hash del tag “a”. (bh – hash del corpo) | Obbligatorio |
b=hyjCnOfAKDdLZdKIc9G1q7LoDWlEniSbzc+yuU2zGrtruF00ldcFVoG4WTHNiYwG | Infine, questa è la firma digitale di entrambe le intestazioni e del corpo, sottoposta a hash con la stessa funzione. | Obbligatorio |
Come si può notare, la firma vera e propria è solo una piccola parte del DKIM. Tutto ciò che si trova al di sopra di essa sono metadati, che descrivono come sono stati calcolati i valori hash.
Si noti che due dei tag sono stati contrassegnati come opzionali: non sono necessari perché il DKIM sia verificato correttamente, ma aggiungono un ulteriore livello di sicurezza. Ci sono diversi altri tag opzionali che si possono usare: “i” – identità di un utente o di un agente (si consiglia di impostarlo); “l” – lunghezza del corpo del messaggio e “z” – elenco delle intestazioni originali del messaggio (entrambi non si consiglia di impostarli).
Come funziona il DKIM?
La firma e la ricezione di DKIM avvengono in tre fasi:
1. Il mittente decide cosa includere in un record DKIM
Come mittente, è possibile limitarsi solo ad alcune parti dei campi dell’intestazione (“Da”, “A”, “Cc”, “Oggetto”, ecc.), ma anche includere l’intera intestazione e il corpo nel DKIM. Si può anche scegliere di aggiungere alcuni o tutti i campi opzionali menzionati sopra.
Tecnicamente, più dettagli specifici sono inclusi, più affidabile sarà l’autenticazione. Tuttavia, è necessario fare attenzione anche a questo aspetto, poiché anche i più piccoli dettagli modificati dal server SMTP porteranno a un fallimento dell’autenticazione DKIM da parte del destinatario. Si pensi, ad esempio, ai messaggi “inoltrati da…” che vengono aggiunti alle e-mail quando le si inoltra dai client di posta elettronica. Se si include l’intero corpo in DKIM, l’autenticazione fallirà inevitabilmente perché il corpo è stato appena modificato.
Non preoccupatevi, però. Non è necessario decidere la forma del DKIM ogni volta che si invia un’e-mail. Se ne occupa automaticamente un server da configurare una sola volta.
2. Il DKIM viene creato e viene inviato un messaggio che lo include
Una volta che il server sa cosa includere nel DKIM e l’invio dell’e-mail è iniziato, inizia l’hashing del contenuto. Si è già visto come appaiono i tag “b” e “bh” nel nostro esempio. Per fornire un ulteriore esempio, ecco come apparirebbe il passaggio precedente se l’hashing fosse effettuato con il metodo SHA256:
568291DDA7ECE2594254BC8E7D70DA150968D022021081BB6E3FC40DC9C260D6
CE328291830AB02CFB1D8CDEC3C2B35C73F92ADF335BCCF38C6784AC9922A8C1
Anche se può sembrare complesso, questi hash sono estremamente facili da decifrare con vari strumenti online (provate voi stessi!). Per questo motivo, prima di inviare un’e-mail, ogni hash viene crittografato con una cosiddetta chiave privata. È possibile avere una chiave privata separata per ogni selettore utilizzato, anche se si inviano tutte le e-mail dallo stesso dominio. Questo può significare una chiave per le e-mail di marketing, un’altra per le e-mail transazionali e una terza per le e-mail inviate ai venditori. L’uso di chiavi private diverse è importante per ragioni di sicurezza.
Una volta impostato tutto, l’e-mail viene inviata!
3. Viene ricevuto un messaggio e il server convalida le firme DKIM
Nel giro di pochi secondi, il server di posta ricevente riceve un messaggio e deve prendere una decisione importante: accettare o meno l’e-mail. Quando vede che un DKIM è incluso nel messaggio, inizia immediatamente il processo di convalida.
Con i campi dominio (“d”) e selettore (“s”) visibili in DKIM, il server può recuperare la chiave pubblica che corrisponde a questa combinazione eseguendo un’apposita interrogazione DNS (tali dati sono pubblicamente disponibili). Quindi, con la chiave pubblica appena acquisita e i campi cifrati “b” e “h”, il server ricevente costruisce i propri hash e li confronta con quelli ricevuti nel messaggio. Se c’è corrispondenza, l’autenticazione ha successo. In caso contrario, l’autorizzazione DKIM fallisce. Questo non significa che il messaggio verrà scartato, ma riduce le sue possibilità di essere consegnato.
Come si aggiunge la firma DKIM alle e-mail?
L’aggiunta del DKIM richiede la modifica di alcuni dettagli dei record DNS. Molti client di posta elettronica descrivono il processo in dettaglio, quindi non ci concentreremo su di esso in questa sede. Consultate i seguenti link per i dettagli specifici dei provider più diffusi:
Se il vostro client di posta elettronica non offre alcuna assistenza per l’implementazione del DKIM o se state configurando la vostra infrastruttura, consultate la documentazione ufficiale del DKIM. Con Mailtrap Email API, si ottengono i record DKIM con una rotazione automatica trimestrale che aiuta a mantenere sicura l’infrastruttura di posta elettronica.
Come si può verificare se il DKIM è stato configurato correttamente?
Una volta aggiunto il DKIM, assicuratevi di convalidarlo con un analizzatore DKIM online. Utilizzate, ad esempio, MXToolbox o Mail-tester.com – quest’ultimo può essere utilizzato per controllare contemporaneamente i record SPF.
Potete anche inviare un’e-mail di prova al vostro account Gmail o Yahoo e verificare voi stessi se un messaggio è arrivato con la vostra firma DKIM.
Una volta arrivato il messaggio, espandere l’intestazione dell’e-mail con l’icona del triangolo sotto il nome del mittente. Se il dominio del mittente appare sia per “mailed-by” che per “signed-by”, il messaggio è stato verificato con successo con DKIM.
È anche possibile fare clic sui tre punti nell’angolo in alto a destra e su “Mostra originale”. Qui vedrete il risultato dell’autenticazione DKIM. Se c’è scritto “PASS” e il vostro indirizzo di dominio, tutto funziona bene.
Per verificare il record DKIM su Yahoo, cliccate su “Visualizza intestazione completa” e cercate la traccia di DKIM. Se trovate dkim=pass (ok), avete superato il test!
Che cos’è Gappssmtp?
Gappssmtp è una chiave di dominio predefinita per le e-mail inviate attraverso il server SMTP di gmail. Il record di autenticazione DKIM a volte mostrerà gappssmtp. Ad esempio, se si riceve un’e-mail da name@railsware.com, il record DKIM mostrerà railsware-com.20150623.gappssmtp.com.
Per controllare il record di autenticazione DKIM, in caso di sospetto di phishing o altro, individuare il menu a tendina “mostra dettagli” sotto il nome del mittente. La sezione “firmato da” è quella che si cerca per determinare se l’e-mail è stata inviata da un server sicuro. Se c’è scritto “gmail”, il record DKIM includerà gappssmtp, quindi l’e-mail è stata inviata da un server sicuro con una chiave di autenticazione predefinita.
Le e-mail inviate tramite un servizio, come un calendario, un drive, una casella o altro, non hanno un DKIM. Al contrario, sarà possibile individuare solo una firma fornita dal servizio. Queste firme, compresa quella di gappssmtp, vengono assegnate automaticamente e verificano semplicemente la sicurezza dell’e-mail ricevuta. Si tratta di una procedura standard e automatizzata eseguita a scopo di verifica.
Tre principali idee sbagliate sul DKIM
DKIM cripta la posta elettronica
Non è così. L’obiettivo principale di DKIM è verificare e confermare che il messaggio sia intatto. Gli hash sotto i tag “bh” e “b” offrono protezione dalla modifica e dalla riproduzione dei messaggi, compresa una protezione parziale dal furto di identità e dalla contraffazione. Un test di verifica DKIM superato significa sostanzialmente che l’e-mail inviata ha il permesso di essere inviata da questo dominio e che il contenuto del messaggio non è stato alterato durante il transito.
Una firma DKIM può essere falsificata poiché i suoi dettagli sono disponibili nei record DNS.
No, non può essere falsificato. DKIM si basa sulla PKI (Public key infrastructure), il che significa che è coinvolta una coppia di chiavi. Una pubblica e una privata. Mentre è vero che la chiave pubblica è pubblicata nei record DNS (ed è disponibile per tutti), la chiave privata è conservata solo sul server del provider di servizi e-mail. La chiave privata rimane segreta e viene utilizzata per firmare i messaggi. La chiave pubblica non può firmare i messaggi e viene utilizzata solo per la verifica.
DKIM vi salva dallo spam una volta per tutte
Magari. Poiché la firma digitale DKIM consente di dimostrare che il mittente è autorizzato a inviare messaggi dal dominio e che il messaggio non è stato manipolato durante il percorso, DKIM riduce solo le possibilità che gli spammer utilizzino indirizzi e-mail contraffatti o rubati.
Tuttavia, nulla impedisce loro di acquistare un dominio, creare un record DKIM e continuare le loro attività di spamming. Anzi, in un certo senso questo potrebbe addirittura legittimare lo spam.
Tuttavia, l’utilizzo di un nome di dominio reale invece di uno contraffatto può molto probabilmente ridurre al minimo gli attacchi di phishing, come quando si riceve un’e-mail contraffatta dalla propria “banca” che chiede di confermare i dati della carta di credito.
Rotazione delle chiavi DKIM: mantenere aggiornata la sicurezza DKIM
Sebbene le chiavi pubbliche DKIM a 1024 bit siano difficili da decifrare e quelle a 2048 bit quasi impossibili, vengono comunque pubblicate nei record DNS e potrebbero quindi diventare un bersaglio di attacchi. Anche le chiavi private (chiave di firma) potrebbero essere rubate se il sistema in cui sono memorizzate venisse violato.
Per ridurre i rischi di compromissione delle chiavi DKIM, è necessario ridurre al minimo il tempo in cui vengono utilizzate attivamente. Il processo di sostituzione sistematica della vecchia coppia di chiavi DKIM con la nuova è chiamato rotazione delle chiavi DKIM.
In generale, il periodo di rotazione delle chiavi consigliato va dalla sostituzione trimestrale a quella semestrale. La frequenza di rotazione delle chiavi deve essere stabilita individualmente dall’organizzazione, ma sicuramente è un must del flusso di lavoro.
Il processo di rotazione delle chiavi può diventare piuttosto complicato nelle aziende che hanno più flussi di e-mail, sottodomini delegati o flussi inviati per conto di terzi. Pertanto, per mantenere sicuro il flusso di e-mail, il processo di rotazione delle chiavi DKIM deve essere pianificato in anticipo.
Come ruotare le chiavi DKIM?
Il processo di rotazione delle chiavi DKIM si divide in due fasi principali: la preparazione e la rotazione vera e propria.
In primo luogo, nella fase di preparazione, si identificano tutti i flussi di posta inviati dall’organizzazione: dai messaggi transazionali e di conversazione all’interno dell’azienda alle e-mail inviate da fornitori terzi. La preparazione comprende anche l’informazione del processo di rotazione delle chiavi agli stakeholder interni, agli amministratori di posta elettronica, agli amministratori DNS e al personale di supporto tecnico interno responsabile dei flussi di posta elettronica. Dovrebbero anche sapere come comportarsi in caso di rotazione di emergenza delle chiavi, se le chiavi DKIM sono inaspettatamente compromesse.
In secondo luogo, nella fase di implementazione, si definisce lo schema di rotazione dei selettori, si ruotano le chiavi e si esegue la verifica a posteriori.
Il Messaging, Malware, and Mobile Anti-Abuse Working Group (M3AAWG) ha creato una guida passo passo per le migliori pratiche di rotazione delle chiavi DKIM. Ricordate che la sicurezza delle e-mail deve essere sempre al primo posto.
Altre considerazioni
La guida al DKIM si conclude qui, ma non dovrebbe essere la fine dei vostri sforzi per migliorare la deliverability delle e-mail. Consultate la nostra guida sulla deliverability, dove elenchiamo molte altre idee. Assicuratevi anche di autenticarvi con SPF (Sender Policy Framework) e DMARC (Domain-based Message Authentication, Reporting, and Conformance) per rendere il vostro dominio ancora più credibile. Ci vuole solo un po’ di tempo e di impegno, ma i vantaggi possono essere enormi.