DKIM
Wat betekent DKIM?
DKIM staat voor DomainKeys Identified Mail. DKIM is een techniek waarmee een verzendende mailserver een digitale handtekening aan een e-mail toevoegt.
Met deze handtekening kan de ontvangende mailserver controleren of de e-mail daadwerkelijk door een geautoriseerde mailserver van het betreffende domein is ondertekend en of de inhoud van het bericht na verzending niet is gewijzigd.
DKIM helpt daarmee tegen het vervalsen en manipuleren van e-mail.
Hoe werkt DKIM?
Bij DKIM wordt de e-mail door de verzendende mailserver voorzien van een digitale handtekening. Deze handtekening wordt als een extra header aan het bericht toegevoegd, bijvoorbeeld:
DKIM-Signature: v=1; a=rsa-sha256; d=voorbeeld.nl; s=mail; ...
Belangrijke onderdelen hiervan zijn:
d=– het domein namens welke de handtekening is geplaatst.s=– de selector waarmee de gebruikte sleutel kan worden gevonden.a=– het algoritme waarmee de handtekening is gemaakt.
De ontvangende mailserver kan de publieke sleutel van de verzendende server opzoeken in DNS. De publieke sleutel staat in een TXT-record op een adres dat is opgebouwd uit de selector en het domein.
Bijvoorbeeld:
mail._domainkey.voorbeeld.nl
De DNS-record bevat de publieke sleutel die nodig is om de DKIM-handtekening te controleren.
De verzendende mailserver gebruikt een private key om de handtekening te maken. De ontvangende mailserver gebruikt de bijbehorende public key om deze te controleren.
De private key wordt niet in DNS gepubliceerd en moet geheim blijven.
Wat controleert DKIM?
DKIM controleert onder andere of de onderdelen van het bericht die in de handtekening zijn opgenomen na verzending niet zijn gewijzigd.
Een DKIM-handtekening bewijst echter niet automatisch dat het zichtbare From:-adres betrouwbaar is. Een aanvaller kan bijvoorbeeld een eigen domein gebruiken om een bericht te ondertekenen en vervolgens een ander domein als zichtbaar afzenderadres gebruiken.
Daarom wordt DKIM meestal gecombineerd met DMARC.
DMARC
Wat betekent DMARC?
DMARC staat voor Domain-based Message Authentication, Reporting and Conformance.
DMARC bouwt voort op SPF en DKIM. Het geeft een ontvangende mailserver informatie over hoe om te gaan met e-mail die namens een domein wordt verzonden maar niet correct door SPF en/of DKIM kan worden geauthenticeerd.
DMARC helpt daarmee voorkomen dat anderen een domeinnaam gebruiken om zich voor te doen als een legitieme afzender.
Hoe werkt DMARC?
Een DMARC-record wordt in DNS gepubliceerd als TXT-record op:
_dmarc.voorbeeld.nl
Een eenvoudig voorbeeld:
_dmarc.voorbeeld.nl. IN TXT "v=DMARC1; p=reject"
Hiermee wordt aangegeven dat berichten die niet aan het DMARC-beleid voldoen, door de ontvangende mailserver mogen worden geweigerd.
Een DMARC-record begint met:
v=DMARC1
Daarna volgen één of meer beleidsinstellingen.
De belangrijkste is:
p=none– alleen controleren en rapporteren. Er wordt geen specifiek beleid opgelegd voor berichten die niet aan DMARC voldoen.p=quarantine– berichten die niet aan DMARC voldoen, moeten bij voorkeur als verdacht worden behandeld, bijvoorbeeld door ze in de spammap te plaatsen.p=reject– berichten die niet aan DMARC voldoen, moeten bij voorkeur worden geweigerd.
SPF en DKIM bij DMARC
DMARC controleert niet alleen of SPF of DKIM succesvol is. Er wordt ook gekeken of het domein dat door SPF of DKIM wordt geauthenticeerd, overeenkomt met het domein in het zichtbare From:-adres.
Dit wordt alignment genoemd.
Bij SPF wordt bijvoorbeeld gekeken naar het domein van de SMTP MAIL FROM en of dit overeenkomt met het domein in het zichtbare From:-adres.
Bij DKIM wordt gekeken naar het domein in de d=-parameter van de DKIM-handtekening.
Een bericht kan daardoor bijvoorbeeld succesvol door SPF komen, maar toch niet aan DMARC voldoen als het SPF-domein niet overeenkomt met het zichtbare From:-domein.
Rapportages
DMARC kan ook rapportages naar de domeineigenaar sturen.
Hiervoor kunnen bijvoorbeeld de volgende instellingen worden gebruikt:
rua=mailto:dmarc@voorbeeld.nl
Hiermee kunnen ontvangende mailservers aggregate reports naar dit adres sturen. Deze rapportages bevatten statistische informatie over e-mail die namens het domein is verzonden en hoe SPF, DKIM en DMARC daarbij zijn beoordeeld.
Een uitgebreider DMARC-record kan er bijvoorbeeld zo uitzien:
_dmarc.voorbeeld.nl. IN TXT "v=DMARC1; p=quarantine; rua=mailto:dmarc@voorbeeld.nl"
SPF, DKIM en DMARC samen
SPF, DKIM en DMARC vullen elkaar aan:
SPF controleert of de verzendende server gemachtigd is om namens een domein e-mail te versturen.
DKIM controleert met een digitale handtekening of een bericht door een geautoriseerde partij is ondertekend en of ondertekende onderdelen van het bericht niet zijn gewijzigd.
DMARC controleert vervolgens of SPF en/of DKIM voldoende betrouwbaar zijn én aansluiten bij het domein in het zichtbare From:-adres. Daarnaast bepaalt DMARC welk beleid moet worden toegepast wanneer dat niet het geval is.
Schematisch:
E-mail
│
┌─────────┴─────────┐
│ │
SPF DKIM
│ │
└─────────┬─────────┘
│
DMARC
│
┌─────────┼─────────┐
│ │ │
none quarantine reject
Voor een goede bescherming tegen misbruik van een domeinnaam zijn SPF, DKIM en DMARC gezamenlijk het meest effectief.