Cos'è DKIM?
DKIM (DomainKeys Identified Mail) è un metodo di autenticazione e-mail che consente al server di inviare di firmare digitalmente messaggi in uscita. Il server ricevente può quindi verificare questa firma utilizzando una chiave pubblica pubblicata in DNS, confermando che l'e-mail non è stata modificata in transito e realmente originata dal dominio rivendicato.
Come funziona DKIM
1. Traduzione: Il proprietario del dominio genera una coppia chiave pubblica/privata
2. DNS Publication: La chiave pubblica è pubblicata come record TXT
3. Message Signing: Le email in uscita sono firmate con la chiave privata
4. Verifica della situazione Ricezione del server recupera la chiave pubblica e verifica la firma
Il processo di firma
Quando viene inviata una email:
1. Mail server calculates a hash of message headers and body
2. Hash is encrypted with the private key (creating the signature)
3. Signature is added as a DKIM-Signature header
4. Email is transmitted
Il processo di verifica
Quando viene ricevuta una e-mail:
1. Server extracts the DKIM-Signature header
2. Finds selector and domain (s=selector; d=domain.com)
3. Queries DNS for selector._domainkey.domain.com TXT record
4. Uses public key to decrypt the signature
5. Calculates its own hash of the message
6. Compares: match = pass, mismatch = fail
Formato record DKIM
I record DKIM sono record TXT in un sottodominio specifico:
selector._domainkey.example.com. IN TXT "v=DKIM1; k=rsa; p=MIGfMA0..."
Componenti di registrazione
| Tag: | Descrizione | Esempio |
|---|---|---|
| V | Versione | Traduzione: |
| # | Tipo chiave | # |
| P | Chiave pubblica (base64) | p=MIGfMA0GCSqG... |
| t | Bandiere (opzionale) | t=y (modalità di prova) |
| h | Algoritmi Hash | Traduzione: |
Selettori
I selettori permettono più chiavi DKIM per dominio:
google._domainkey.example.com # Google Workspace
s1._domainkey.example.com # Sendgrid
mailchimp._domainkey.example.com # Mailchimp
Ogni servizio di posta elettronica fornisce il proprio selettore e chiave.
Testa di firma DKIM
Una firma DKIM sembra:
DKIM-Signature: v=1; a=rsa-sha256; d=example.com; s=google;
c=relaxed/relaxed; q=dns/txt;
h=from:to:subject:date:message-id;
bh=2jUSOH9NhtVGCQWNr9BrIAPreKQjO6Sn7XIkfJVOzv8=;
b=AuUoFEfDxTDkHlLXSZEpZj79...
Campi chiave:
- Cosa? Dominio di firma
- s=: Selector (utilizzato per trovare record DNS)
- Cosa? Intestazioni incluse nella firma
- Cosa? La firma effettiva
- Cosa? Il corpo ha
Impostazione di DKIM
#### Per Google Workspace
1. Vai ad Admin Console → Apps → Gmail → Autentico email
2. Generare chiave DKIM (2048-bit raccomandato)
3. Aggiungi TXT record fornito da Google
4. Attiva la firma DKIM
Per i servizi di terze parti
La maggior parte dei servizi e-mail (SendGrid, Mailchimp, ecc.) forniscono:
1. Un record CNAME da aggiungere (per la loro chiave gestita)
2. O un record TXT con la chiave pubblica
Esempio (SendGrid):
s1._domainkey.example.com CNAME s1.domainkey.sendgrid.net
Verifica DKIM
Inviare un'email di prova ad un servizio che mostra intestazioni (Gmail mostra risultati di autenticazione). Utilizzando la riga di comando:dig google._domainkey.example.com TXT
# Usando DomScan #
curl "https://domscan.net/v1/health?domain=example.com"
# Reports DKIM status based on common selectors
DKIM Migliori Pratiche
Utilizzare 2048-bit Keys
Le vecchie chiavi a 1024 bit sono sempre più vulnerabili. La maggior parte dei provider ora di default a 2048-bit.
Ruota le chiavi Periodicamente
Ruotare le chiavi DKIM ogni anno o dopo gli incidenti di sicurezza. Pubblica una nuova chiave con il nuovo selettore prima di passare.
Sign Important Heads
Assicurarsi da, a, soggetto, data e messaggio-ID sono inclusi nelle firme.
Non modificare i messaggi firmati
Mailing list o servizi di inoltro che modificano i contenuti romperanno DKIM. Utilizzare ARC (catena autenticata ricevuta) per posta inoltrata.
Limitazioni DKIM
DKIM da solo non impedisce lo spoofing, dimostra solo che un messaggio non è stato modificato. Un dominio può avere DKIM valido mentre gli aggressori inviano e-mail spoofed non firmate. DMARC si rivolge a questo specificando cosa fare con messaggi non firmati.