Un record DKIM è un record TXT DNS specializzato che memorizza la chiave pubblica utilizzata per verificare l'autenticità di un'e-mail.
Dopo aver letto questo articolo sarai in grado di:
Argomenti correlati
Abbonati a theNET, il riepilogo mensile di Cloudflare sulle tematiche più discusse in Internet.
Copia link dell'articolo
DomainKeys Identified Mail (DKIM) è un metodo di autenticazione delle e-mail che consente di impedire agli spammer e ad altri malintenzionati di impersonare un dominio legittimo.
Tutti gli indirizzi e-mail hanno un dominio, la parte dell'indirizzo dopo il simbolo "@". Gli spammer e gli autori di attacchi possono tentare di impersonare un dominio quando inviano e-mail per eseguire attacchi di phishing o altre truffe.
Supponiamo che Carlo voglia ingannare Alice, che lavora per example.com, chiedendole di inviargli informazioni aziendali riservate. Potrebbe inviarle un'e-mail che sembra provenire da "roberto@example.com" per indurla a pensare che anche lui lavori per example.com.
DKIM, insieme a Sender Policy Framework (SPF) e Domain-based Message Authentication Reporting and Conformance (DMARC), rende molto più difficile per gli autori di attacchi impersonare i domini in questo modo. Le e-mail che non superano DKIM e SPF vengono contrassegnate come "spam" o non vengono distribuite dai server di posta elettronica. Se example.com ha DKIM, SPF e DMARC configurati per il proprio dominio, Alice probabilmente non vedrà nemmeno l'e-mail dannosa di Carlo, perché andrà nella sua cartella spam o verrà rifiutata del tutto dal server di posta elettronica.
Esistono due aspetti principali di DKIM: il record DKIM, che viene archiviato nei record Domain Name System (DNS) per il dominio, e l'intestazione DKIM, che è collegata a tutte le e-mail dal dominio.
DKIM utilizza schemi di firma digitale basati sulla crittografia a chiave pubblica per autenticare la provenienza di un'e-mail, che in realtà proveniva da un server che invia e-mail da tale dominio. Vengono utilizzate una coppia di chiavi di crittografia di accesso: una chiave privata per il mittente destinata a firmare i messaggi e una chiave pubblica per verificare le firme da parte del destinatario. Un destinatario non può utilizzare la chiave pubblica per firmare i messaggi e viceversa.
Il provider di posta elettronica genera la chiave pubblica e la chiave privata. Fornisce la chiave pubblica al proprietario del dominio, che memorizza la chiave pubblica in un record DNS disponibile pubblicamente: il record DKIM.
Tutte le e-mail inviate da tale dominio includono un'intestazione DKIM, che contiene una sezione di dati firmata con la chiave privata: questa è chiamata "firma digitale". Un server di posta elettronica può controllare il record DNS DKIM, recuperare la chiave pubblica e utilizzarla per verificare la firma digitale.
Questo processo garantisce inoltre che l'e-mail non sia stata modificata durante il transito. La firma digitale non verrà verificata se le intestazioni o il corpo dell'e-mail sono stati alterati, come un sigillo anti-manomissione su un contenitore di medicinali.
Un record DKIM memorizza la chiave pubblica DKIM, una stringa casuale di caratteri utilizzata per verificare qualsiasi elemento firmato con la chiave privata. I server di posta elettronica interrogano i record DNS del dominio per vedere il record DKIM e visualizzare la chiave pubblica.
Un record DKIM è in realtà un record TXT ("testuale") DNS. I record TXT possono essere utilizzati per archiviare qualsiasi testo che un amministratore di dominio desidera associare al proprio dominio. DKIM è uno dei tanti usi per questo tipo di record DNS. (In alcuni casi, i domini archiviano i loro record DKIM come record CNAME che fanno invece riferimento alla chiave; tuttavia, l'RFC ufficiale richiede che questi record siano di tipo TXT).
Ecco un esempio di record TXT DNS DKIM:
Nome | Tipo | Contenuto | TTL |
---|---|---|---|
big-email._domainkey.example.com |
TXT |
v=DKIM1; p=76E629F05F70 |
6000 |
A differenza della maggior parte dei record TXT DNS, i record DKIM sono archiviati con un nome specializzato, non solo con il nome del dominio. I nomi dei record DKIM seguono questo formato:
[selettore]._domainkey.[dominio]
Il selettore
è un valore specializzato emesso dal provider di servizi di posta elettronica utilizzato dal dominio. È incluso nell'intestazione DKIM per consentire a un server di posta elettronica di eseguire la ricerca DKIM richiesta nel DNS. Il dominio
è il nome del dominio e-mail. ._domainkey.
è incluso in tutti i nomi di record DKIM.
Per cercare il record DKIM, i server di posta elettronica utilizzano il selettore DKIM fornito dal provider del servizio di posta elettronica, non solo il nome di dominio. Supponiamo che example.com utilizzi Big Email come provider di servizi di posta elettronica e supponiamo che Big Email utilizzi il selettore DKIM big-email
. La maggior parte dei record DNS di example.com dovrebbero essere denominati example.com
, ma il loro record DNS DKIM avrebbe il nome big-email._domainkey.example.com
, che è elencato nell'esempio precedente.
Questa è la parte del record DNS DKIM che elenca la chiave pubblica. Nell'esempio precedente, v=DKIM1
indica che questo record TXT deve essere interpretato come DKIM e che la chiave pubblica è tutto quello che segue p=
.
Questi sono campi standard nei record DNS. TXT
indica che si tratta di un record TXT DNS. "TTL" sta per Time To Live (misurato in secondi) e indica per quanto tempo questo record deve essere considerato valido prima che debba essere aggiornato. I record DKIM hanno generalmente un TTL di diversi minuti.
Il server di posta elettronica di invio crea la propria firma digitale utilizzando le intestazioni dell'e-mail, il corpo dell'e-mail (in realtà un hash del corpo dell'e-mail - leggi di più sotto) e la sua chiave privata. Questa firma digitale è collegata all'e-mail come parte dell'intestazione DKIM.
L'intestazione DKIM è una delle tante intestazioni collegate a un'e-mail. La maggior parte delle applicazioni di posta elettronica non mostra l'intestazione durante la visualizzazione di un'e-mail a meno che l'utente non selezioni determinate opzioni. In Gmail, ad esempio, gli utenti possono visualizzare l'intestazione di un'e-mail facendo clic sui tre punti verticali in alto a destra dell'e-mail, quindi facendo clic su "Mostra originale".
Ecco un esempio di intestazione DKIM:
v=1; a=rsa-sha256; d=example.com; s=big-email; h=from:to:subject; bh=uMixy0BsCqhbru4fqPZQdeZY5Pq865sNAnOAxNgUS0s=; b=LiIvJeRyqMo0gngiCygwpiKphJjYezb5kXBKCNj8DqRVcCk7obK6OUg4o+EufEbB tRYQfQhgIkx5m70IqA6dP+DBZUcsJyS9C+vm2xRK7qyHi2hUFpYS5pkeiNVoQk/Wk4w ZG4tu/g+OA49mS7VX+64FXr79MPwOMRRmJ3lNwJU=
v=
mostra quale versione di DKIM è in uso.d=
è il nome di dominio del mittente.s=
è il selettore che il server ricevente deve utilizzare per cercare il record DNS.h=
elenca i campi di intestazione utilizzati per creare la firma digitale, oppure b
. In questo caso, vengono utilizzate le intestazioni da, a e oggetto. Se Roberto inviasse un'e-mail ad Alice utilizzando il dominio example.com e la riga dell'oggetto fosse "Ricetta per cheesecake", il contenuto utilizzato in questo caso sarebbe "roberto@example.com" + "alice@example.com" + "Ricetta per cheesecake". (Anche questo contenuto verrebbe canonizzato, inserito in un formato standardizzato).bh=
è l'hash del corpo dell'e-mail. Un hash è il risultato di una funzione matematica specializzata denominata funzione hash. Questo è incluso in modo che il server di posta elettronica ricevente possa calcolare la firma prima che l'intero corpo dell'e-mail venga caricato, poiché i corpi delle e-mail possono essere di qualsiasi lunghezza e il caricamento può richiedere molto tempo in alcuni casi.a=
è l'algoritmo utilizzato per calcolare la firma digitale, o b
, nonché per generare l'hash del corpo dell'e-mail, o bh
. In questo esempio, è in uso RSA-SHA-256 (RSA utilizza SHA-256 come funzione hash per la firma digitale e SHA-256 per l'hash del corpo).b=
è la firma digitale, generata da h
bh
e firmata con la chiave privata.La firma digitale (b=
) consente al server ricevente di 1. autenticare il server di invio e 2. garantire l'integrità, ovvero che l'e-mail non sia stata manomessa.
Il server ricevente lo fa recuperando lo stesso contenuto elencato in h=
più l'hash del corpo (bh=
) e utilizzando la chiave pubblica dal record DKIM per verificare se la firma digitale è valida. Se è stata utilizzata la chiave privata corretta e se il contenuto (intestazioni e corpo) non è stato modificato, l'e-mail supera il controllo DKIM.
DMARC è un metodo di autenticazione e-mail basato su DKIM e SPF. DMARC descrive cosa fare con un'e-mail che non supera SPF e DKIM. Insieme, SPF, DKIM e DMARC consentono di prevenire lo spam e lo spoofing delle e-mail. Come i record DKIM, i criteri DMARC vengono archiviati come record TXT DNS.
Per impostare rapidamente questo record in Cloudflare, utilizza la procedura guidata DNS di protezione della posta elettronica.
Scopri di più sui record DNS per la posta elettronica:
Per ulteriori informazioni su DKIM, consulta RFC 6376.