Belangrijke waarschuwing: Google en Yahoo stellen DMARC verplicht vanaf april 2024.
PowerDMARC

DKIM Handtekening: Een inleiding over wat het is, waarom je het nodig hebt, en hoe het werkt?

DKIM-handtekening

DKIM-handtekening

Leestijd: 6 min

Domeinsleutels Identified Mail (DKIM) is een e-mailverificatiemethode waarmee een organisatie verantwoordelijkheid kan nemen voor een verzonden bericht. Het gebruikt public-key cryptografie om emails digitaal te "ondertekenen", wat voor de ontvangers bewijst dat het bericht door de domeineigenaar is verzonden. Ontvangers kunnen de handtekening controleren met de gepubliceerde publieke sleutel van hun domein om de handtekening te verifiëren.

Dit artikel gaat dieper in op DKIM en geeft een overzicht van hoe deze e-mailverificatiemethode werkt.

Wat is DKIM-handtekening?

DKIM staat voor DomainKeys Identified Mail. Het is een e-mail authenticatiesysteem dat integriteit en onweerlegbaarheid biedt door gebruik te maken van cryptografische handtekeningen. Het is samen met DMARC kunt u een robuuste spoof-protection infrastructuur voor uw emails opbouwen.

Het DKIM-protocol creëert een cryptografische handtekening voor elk bericht dat naar de ontvangers wordt gestuurd, alsmede een domeinhandtekening die aan de koptekst van het bericht wordt toegevoegd.

Deze handtekening wordt door de ontvanger gebruikt om na te gaan of het bericht wel degelijk door de domeineigenaar is verzonden en niet door iemand anders. Zij controleert ook of er niet met het bericht is geknoeid op zijn weg van verzender naar ontvanger.

Als het niet overeenkomt, dan ofwel:

  1. Het bericht werd tijdens de transmissie gewijzigd, of
  2. Het bericht wordt verzonden namens iemand anders die toegang heeft tot de privé-sleutel van de verzendende server

Als de handtekeningen niet overeenkomen, zorgt DKIM ervoor dat de e-mails niet worden afgeleverd bij de beoogde ontvangers, omdat deze de e-mails niet kunnen valideren als legitieme berichten van uw merk.

Hoe werkt een DKIM handtekening?

DKIM handtekeningen werken door het invoegen van een digitale handtekening in de header van een e-mail. Deze handtekening kan door de ontvangende server worden geverifieerd en worden gebruikt om vast te stellen of er tijdens het verzenden met een e-mail is geknoeid of niet.

DKIM maakt gebruik van public-key cryptografie, die berust op een paar sleutels: een private en een public. De publieke sleutel wordt verspreid onder iedereen die hem wil hebben, terwijl de private sleutel geheim wordt gehouden (meestal door de eigenaar).

Wanneer u een e-mail ondertekent met DKIM, wordt uw privésleutel gebruikt om een hash van de inhoud van het bericht te maken en die hash vervolgens te versleutelen met de openbare sleutel van de ontvanger. Deze versleutelde hash wordt vervolgens in de header van uw bericht opgenomen, waar hij door de ontvanger kan worden gevalideerd.

De sleutels van DKIM-handtekeningen

DKIM handtekeningen worden gegenereerd met twee cryptografische sleutels, een publieke en een private. De publieke sleutel wordt gepubliceerd in DNS, terwijl de private sleutel geheim wordt gehouden.

Wanneer een e-mail wordt ondertekend, wordt de privésleutel gebruikt om een hash van het bericht te genereren. Deze hash wordt vervolgens versleuteld met de openbare sleutel en samen met het bericht zelf verzonden.

Wanneer de ontvanger deze informatie ontvangt, gebruikt hij zijn particuliere sleutel om de hash te ontcijferen en na te gaan of deze overeenkomt met de oorspronkelijke inhoud van het bericht.

De onderdelen van DKIM handtekeningen

Een DKIM handtekening bestaat uit twee delen: een header en de body. De header bevat informatie over de identiteit van de afzender, waaronder zijn e-mail adres en publieke sleutel. De body bevat het daadwerkelijke bericht dat is verzonden.

  1. Om een DKIM handtekening te berekenen, neemt u eerst een MD5 hash van uw domeinnaam (bijvoorbeeld "example.com"), die uw publieke sleutel is.
  2. Dan voeg je je domeinnaam samen met een SHA1 hash (bijvoorbeeld "sha1(example.com)") en voegt die toe aan het oorspronkelijke bericht dat werd verzonden.
  3. Vervolgens neemt u een andere MD5 hash van deze gecombineerde string (bijvoorbeeld "md5(sha1(example.com))") en voegt die toe als header aan het begin van uw bericht voordat u het verstuurt voor aflevering.

Stappen voor DKIM ondertekening

Aan de slag met DKIM:

  1. De eerste stap is het maken van een private sleutel, die wordt gebruikt om het bericht te ondertekenen.
  2. De tweede stap is het aanmaken van een publieke sleutel, die wordt gebruikt bij het verifiëren van de handtekening.
  3. De derde stap is het genereren van twee DNS TXT-records: één voor de publieke sleutel, en één voor de selectornaam.
  4. De vierde stap is het publiceren van deze records in uw DNS zonebestand.

Stappen die betrokken zijn bij DKIM ondertekening:

1. De verzender genereert een bericht met een unieke identificatiecode die een cryptografische hashfunctie wordt genoemd (meestal SHA-256). Deze unieke identificatie wordt een DKIM-Signature header veld genoemd en bevat informatie over wie het bericht heeft ondertekend en wanneer hij/zij dat heeft gedaan.

2. De verzender voegt extra headervelden aan het bericht toe die informatie bevatten over:

3. Ontvangers die deze handtekeningen willen verifiëren, gebruiken hun kopie van de publieke sleutel van de afzender uit hun DNS records of een tussenliggende dienst zoals SenderID of Mailgun, en valideren daarmee berichten met DKIM headers.

De tags in de DKIM handtekening begrijpen

Dit is een voorbeeld van hoe een DKIM signature record eruit kan zien:

DKIM-handtekening: v=1;

a=rsa-sha256;

s=jun2005.eng;

c=ontspannen/ontspannen;

d=voorbeeld.com;

s=dkim;

t=1526555738;

bh=mhU6OJb5ldZf+z/pX9+0Nc4tj/lmyYHWbR8LgI2Q=;

h=To:From:Subject:Date:Message-ID:MIME-Version:Content-Type:Content-Transfer-Encoding;

b=s1sdZCzdX9vxocsMSlT7cOrYixl1g8wfkdzrVe7BGN6ZdPV9xu2A

v= Deze tag vertelt ons de versie van de DKIM.

a= Dit specificeert het algoritme dat door de ondertekenaar wordt gebruikt om zijn publieke sleutel te genereren. Het kan één van RSA1_5, RSA-SHA1, of RSASSA-PSS zijn. Als deze tag ontbreekt, wordt RSA-SHA1 verondersteld.

c= Dit specificeert het canonicalisatie-algoritme dat wordt gebruikt om hashes te genereren van headervelden, zoals vereist door [BCP14]. Dit wordt gevolgd door een door komma's gescheiden lijst van 1 of meer canonicalisatie algoritmen (bijv. "c=relaxed"). Als deze tag wordt weggelaten, dan wordt relaxte canonicalisatie aangenomen.

d= Het specificeert welke domeinnaam moet worden gebruikt bij het genereren van handtekeningen voor berichten die door deze server (of een andere ontvanger) worden verzonden.

s= De "s"-tag is de selectiestring, die door een ontvangende server gebruikt wordt om te bepalen welke openbare sleutel gebruikt moet worden om de handtekening te verifiëren.

t= Het tijdstempeltag wordt gebruikt om aan te geven wanneer de handtekening is aangemaakt en wordt meestal weergegeven als een Unix-tijdstempel (het aantal seconden sinds 1 januari 1970).

bh= Deze tag staat voor de body hash, dat is een versleutelde versie van de inhoud van uw bericht (inclusief headers). Dit helpt voorkomen dat er met berichten wordt geknoeid nadat ze door DKIM zijn ondertekend en voordat ze bij de beoogde ontvangers zijn aangekomen.

h= De header hash waarde bevat alle headers in hun geheel (inclusief diegene die ondertekend zijn door Sender Policy Framework of DomainKeys Identified Mail) behalve diegene die expliciet uitgesloten zijn door ze op te nemen in een uitsluitingslijst. Deze waarde moet worden berekend met SHA-1 of MD5.

b= De "b"-tag is de base64-gecodeerde weergave van een cryptografische hashfunctie op de gecanoniseerde body van het bericht (d.w.z., nadat de MIME-codering is verwijderd).

Een DKIM handtekening genereren

  1. Genereer een publieke en een private sleutel.
  2. Genereer een DKIM header en footer.
  3. Onderteken de inhoud van de e-mail met uw privésleutel met het geselecteerde algoritme, bijvoorbeeld RSA-SHA256 of RSA-SHA512
  4. Comprimeer het bericht met het geselecteerde algoritme, bijvoorbeeld deflate of geen.
  5. Zet de DKIM headers aan het begin van het bericht, vóór de MIME headers.
  6. Voeg de DKIM voettekst toe na eventuele MIME voetteksten.

Waarborgen van de geldigheid van DKIM handtekeningen

Er kunnen enkele stappen worden ondernomen om er zeker van te zijn dat de DKIM handtekening geldig is:

  1. Bepaal of u een traditioneel DKIM ondertekeningsalgoritme wilt gebruiken of een geoptimaliseerd algoritme.
  2. Bereken een hash waarde voor de header en body van uw bericht (dit zou typisch SHA-256 zijn).
  3. Kies een geschikt ondertekenalgoritme (zoals RSA of ECDSA).
  4. Controleer of je publieke sleutel overeenkomt met de selector die je eerder in stap 1 hebt opgegeven (dit wordt gedaan met behulp van DNS).
  5. Onderteken uw bericht met uw privésleutel en sla deze op als een ASCII-string in Base64-formaat in de header van uw e-mailbericht (naast plaatsing in DNS).

Een DKIM handtekening verifiëren

DKIM handtekeningverificatie is ingewikkeld. Het vergt veel expertise om het op te zetten en te onderhouden, en het wordt vaak gebruikt in combinatie met andere systemen zoals SPF, die ook ingewikkeld zijn.

Daarom gebruiken de meeste email marketeers een DKIM signature verification tool zoals een DKIM record checker om hun DKIM handtekeningen te controleren. Deze tool controleert de DKIM sleutels die aan een e-mail zijn toegevoegd en verifieert deze met een openbare database. Als de sleutels geldig zijn en vertrouwd worden, dan kan de e-mail als legitiem worden beschouwd.

Dit is om verschillende redenen belangrijk: ten eerste zorgt het ervoor dat uw e-mails niet als spam worden gemarkeerd door ISP's of klanten van ISP's; ten tweede kunt u zo voorkomen dat uw domein op de zwarte lijst van andere domeinen komt te staan (dit wordt domain poisoning genoemd); ten slotte helpt het ervoor te zorgen dat uw e-mails niet terechtkomen in een soort man-in-the-middle-aanval.

Conclusie

DKIM is een veelbelovende oplossing waarmee een organisatie de legitimiteit van e-mails kan valideren, met name e-mails van externe afzenders. Wanneer dit consequent wordt toegepast in een berichtenomgeving, geeft het ontvangers een hoge mate van vertrouwen dat een e-mail is verzonden door een geautoriseerde vertegenwoordiger van het domein van de afzender. Het is echter belangrijk op te merken dat DKIM weliswaar een verificatiemechanisme biedt, maar niet voldoende is om bescherming te bieden tegen e-mailfraude zoals spoofing en phishing. Daarvoor is een DMARC beleid als afwijzing verplicht is.

Hulp nodig?

E-mailverificatie is een noodzakelijk onderdeel van de digitale marketingstrategie van elk bedrijf. Met zo veel e-mails die elke dag worden verzonden en ontvangen, is het gemakkelijk voor uw merk om verloren te gaan in de shuffle. Maar met e-mailverificatiediensten van PowerDMARC kunt u ervoor zorgen dat uw e-mails door de juiste mensen worden gezien. 

Onze e-mailverificatie-oplossing zal u helpen:

Mobiele versie afsluiten