# DMARC

DMARC, acronimo di Domain-based Message Authentication, Reporting & Conformance, è un complesso sistema di validazione dei messaggi di posta elettronica. È stato sviluppato principalmente per contrastare l'email spoofing, una tecnica di attacco informatico ampiamente utilizzata nello spam e nel phishing. Le caratteristiche di DMARC sono state definite nella RFC 7489 del marzo 2015.

## Storia

I protocolli base utilizzati per l'invio e la ricezione della posta elettronica non consentono di verificare l'autenticità del mittente. È quindi relativamente semplice fare in modo che una email appaia proveniente da un certo indirizzo anziché dal mittente reale. Questa debolezza del sistema è stata ampiamente utilizzata per l'invio di spam confezionando i messaggi in modo che appaiano inviati da aziende o da mittenti noti al destinatario. La stessa tecnica è utilizzata anche nel phishing in modo da conferire maggiore autorevolezza al messaggio. In entrambi i casi il tentativo di attacco informatico si concretizza attraverso l'alterazione di alcune parti dell'intestazione della email ed in particolare del campo del mittente From:.
Lo sviluppo del protocollo DMARC è partito nel 2010 ed ha visto la collaborazione di diversi soggetti interessati ad offrire sistemi di validazione della posta elettronica. Allo sviluppo del protocollo hanno partecipato alcuni tra i maggiori fornitori di caselle di posta elettronica come AOL, GMail, Hotmail e Yahoo! Mail interessati a proteggere i propri utenti da spam e phishing. Al progetto hanno partecipato anche istituti bancari, servizi di pagamento come Paypal e servizi internet come Facebook e LinkedIn i cui domini sono spesso abusivamente utilizzati nell'email spoofing.
Le specifiche del protocollo DMARC sono state pubblicate per la prima volta il 30 gennaio 2012 e sotto forma di RFC il 18 marzo 2015. Il lavoro tecnico si è concentrato nel definire una serie di criteri condivisi per l'uso di due tecnologie già esistenti:
* Sender Policy Framework (SPF): consente di verificare che una email inviata da un dato dominio arrivi effettivamente da uno degli host abilitati dai gestori del dominio stesso . Questo elenco viene reso pubblico attraverso un record DNS.
* DomainKeys Identified Mail (DKIM): permette ai gestori di un dominio di aggiungere una firma digitale tramite chiave privata ai messaggi di posta elettronica. DKIM aggiunge quindi un ulteriore strumento per verificare la corrispondenza tra mittente e relativo dominio di appartenenza.
Combinando opportunamente questi due sistemi diventa possibile validare il mittente di una email, garantire cioè che il messaggio provenga realmente dal dominio e dall'utente specifico. Per simmetria la mancata validazione può consentire una immediata individuazione di messaggi di spam, di phishing o in cui comunque il mittente reale sia stato mascherato. Ovviamente perché la validazione tramite DMARC sia efficace è necessario che questo protocollo sia implementato sia sul server del destinatario che sul server del mittente.

## Funzionamento

Le policy di DMARC vengono pubblicate attraverso un record DNS.
Per comprendere il funzionamento di DMARC poniamoci in una condizione semplificata in cui l'indirizzo mitt@example-mitt.com invii una email all'indirizzo dest@example-dest.org. Durante l'invio il server example-mitt.com aggiunge al messaggio l'intestazione (header) DKIM generata con un sistema di crittografia a doppia chiave. Quando l'email arriva sul server example-dest.org il protocollo DMARC consente di effettuare una serie di controlli di validità prima che il messaggio venga scaricato dal destinatario. Utilizzando la chiave pubblica DKIM di example-mitt.com il server example-dest.org procede anzitutto a verificare che il messaggio arrivi effettivamente dall'indirizzo dichiarato e che non sia stato alterato durante il suo percorso. Successivamente attraverso SPF il server verifica che l'host da cui è partito il messaggio sia tra quelli abilitati.
DMARC quindi, effettua il cosiddetto controllo dell'allineamento su DKIM ed SPF: il dominio contenuto nel campo "From" dell'header deve combaciare esattamente col dominio di firma DKIM (in un allineamento strict) o essere un sottodominio dello stesso (allineamento relaxed). Analogamente deve sussistere l'allineamento del dominio anche per SPF tra "From" e "Mail From". In questo modo viene colmata la lacuna dell'identificazione sicura di un mittente che DKIM ed SPF da soli non riuscirebbero a garantire: una mail infatti può essere firmata da chiunque e riuscire a passare quindi un controllo DKIM, ed SPF effettua il controllo del dominio indicato su "HELO" o su "Mail From" mentre invece il campo "From", ovvero il mittente visibile sulla mail, non è soggetto a controlli.
Una mail supera il check DMARC quando almeno uno dei due controlli supera l'allineamento. E' consentito scegliere il comportamento che il destinatario dovrebbe applicare in caso di fallimento del check: un comportamento neutro (neutral), considerare la mail come sospetta (quarantine) oppure rifiutarla (reject). Il sistema del destinatario può offrirsi di inviare un report che contiene il server sorgente, il dominio di destinazione, il risultato dei controlli DKIM, SPF e relativi allineamenti. Detti report uniti ad una policy neutra permettono di testare la configurazione senza creare disagi. L'obiettivo di DMARC è quello di arrivare ad una policy di quarantine o reject.
DMARC offre quindi un enorme valore aggiunto rispetto al solo controllo SPF o DKIM.