Domeinsleutels geïdentificeerde e-mail (DKIM) is een e-mailverificatiemethode waarmee een organisatie verantwoordelijkheid kan nemen voor een verzonden bericht. Het maakt gebruik van cryptografie met openbare sleutels om e-mails digitaal te "ondertekenen", waarmee aan ontvangers wordt bewezen dat het bericht is verzonden door de eigenaar van het domein. Ontvangers kunnen de handtekening vergelijken met de gepubliceerde openbare sleutel van hun domein om de handtekening te verifiëren.
Dit artikel gaat in detail in op DKIM en geeft een overzicht van hoe deze e-mailverificatiemethode werkt.
Belangrijkste opmerkingen
- DKIM verbetert de beveiliging van e-mail door domeineigenaren in staat te stellen hun berichten te ondertekenen, wat de authenticiteit garandeert.
- De DKIM handtekening bestaat uit een header en een body en wordt gebruikt om te verifiëren dat er niet met een e-mail is geknoeid tijdens het transport.
- Openbare-sleutelcryptografie wordt in DKIM gebruikt om een sleutelpaar te maken, waarbij de openbare sleutel wordt gepubliceerd in DNS en de privésleutel geheim wordt gehouden.
- Het valideren van DKIM-handtekeningen helpt voorkomen dat e-mails als spam worden gemarkeerd en vermindert het risico op domain spoofing.
- Hoewel DKIM de legitimiteit van e-mail verbetert, moet het worden gecombineerd met DMARC-beleid om fraudeaanvallen op e-mail effectief te bestrijden.
Wat is een DKIM-handtekening?
DKIM handtekening is een cryptografische handtekening die het DKIM protocol aanmaakt voor elk bericht dat naar ontvangers wordt gestuurd, evenals een domein handtekening die wordt toegevoegd aan de header van het bericht.
Deze handtekening wordt door de ontvanger gebruikt om te verifiëren dat het bericht daadwerkelijk door de domeineigenaar is verzonden en niet door iemand anders. Het verifieert ook dat er niet met het bericht is geknoeid tijdens de reis van verzender naar ontvanger.
Als het niet overeenkomt, dan wel:
- Het bericht werd gewijzigd tijdens verzending, of
- Het bericht wordt verzonden namens iemand anders die toegang heeft tot de privésleutel van de verzendende server
In dergelijke gevallen van mismatchte handtekeningen, zal DKIM voorkomen dat deze e-mails worden afgeleverd bij de beoogde ontvangers, omdat ze niet in staat zijn om ze te valideren als legitieme berichten van uw merk.
DKIM-handtekening vereenvoudigen met PowerDMARC!
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 worden geverifieerd door de ontvangende server en worden gebruikt om te bepalen of er wel of niet met een e-mail is geknoeid tijdens het verzenden.
DKIM maakt gebruik van public-key cryptografie, wat gebaseerd is op een paar sleutels: een privé en een publieke. De publieke sleutel wordt verspreid onder iedereen die hem wil hebben, terwijl de privésleutel geheim wordt gehouden (meestal door de eigenaar).
Wanneer u een e-mail ondertekent met DKIM, wordt uw privésleutel gebruikt om een hash te maken van de inhoud van het bericht en deze hash vervolgens te versleutelen met de publieke sleutel van de ontvanger. Deze versleutelde hash wordt dan ingevoegd in de header van je bericht, waar het kan worden gevalideerd door de ontvanger.
De sleutels van DKIM-handtekening
DKIM-handtekeningen worden gegenereerd met behulp van twee cryptografische sleutels, een openbare en een privésleutel. De publieke sleutel wordt gepubliceerd in DNS, terwijl de privé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 privésleutel om de hash te decoderen en te verifiëren dat deze overeenkomt met de originele inhoud van het bericht.
De onderdelen van DKIM-handtekening
Een DKIM handtekening bestaat uit twee delen: een header en de body. De header bevat informatie over de identiteit van de afzender, inclusief het e-mailadres en de publieke sleutel. De body bevat het daadwerkelijke bericht dat is verzonden.
- Om een DKIM handtekening te berekenen, neem je eerst een MD5 hash van je domeinnaam (bijvoorbeeld "example.com"), wat je publieke sleutel is.
- Vervolgens voegt u uw domeinnaam samen met een SHA1 hash (bijvoorbeeld "sha1(example.com)") en voegt u deze toe aan het oorspronkelijke bericht dat is verzonden.
- Vervolgens neem je nog een MD5 hash van deze gecombineerde string (bijvoorbeeld "md5(sha1(example.com))") en voeg je deze toe als header aan het begin van je bericht voordat je het verstuurt voor aflevering.
Stappen voor DKIM-ondertekening
Aan de slag met DKIM:
- De eerste stap is het maken van een privésleutel, die wordt gebruikt om het bericht te ondertekenen.
- De tweede stap is het maken van een publieke sleutel, die wordt gebruikt bij het verifiëren van de handtekening.
- De derde stap is het genereren van twee DNS TXT records: één voor de openbare sleutel en één voor de selectornaam.
- De vierde stap is het publiceren van deze records in je DNS zonebestand.
Stappen voor DKIM-ondertekening:
1. De verzender genereert een bericht met een unieke identificatie die een cryptografische hashfunctie wordt genoemd (meestal SHA-256). Deze unieke identificatie wordt een DKIM-handtekening headerveld genoemd en bevat informatie over wie het bericht heeft ondertekend en wanneer.
2. De verzender voegt extra headervelden toe aan het bericht die informatie bevatten over:
- hoe lang het bericht als geldig moet worden beschouwd
- hoe vaak de geldigheid van de handtekening opnieuw moet worden gecontroleerd
- of handtekeningen moeten worden gevalideerd met een externe service zoals SPF (Sender Policy Framework)
- welke sleutels werden gebruikt om dit bericht te ondertekenen
3. Ten slotte zullen ontvangers die deze handtekeningen willen verifiëren hun kopie van de publieke sleutel van hun afzender uit hun DNS-records of een tussenliggende service zoals SenderID of Mailgun gebruiken om berichten met DKIM-headers te valideren.
De tags begrijpen die worden gebruikt in de DKIM-handtekening
Dit is een voorbeeld van hoe een DKIM handtekeningrecord eruit zou kunnen 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 DKIM.
a= Geeft het algoritme aan dat de ondertekenaar gebruikt om zijn openbare sleutel te genereren. Het kan een van RSA1_5, RSA-SHA1 of RSASSA-PSS zijn. Als deze tag ontbreekt, wordt RSA-SHA1 aangenomen.
c= Specificeert het canonicalisatiealgoritme 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 canonicalisatiealgoritmen (bijvoorbeeld "c=relaxed"). Als deze tag wordt weggelaten, dan wordt ontspannen canonicalisatie aangenomen.
d= Geeft aan 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 selector string, die gebruikt wordt door een ontvangende server om te bepalen welke publieke sleutel gebruikt moet worden om de handtekening te verifiëren.
t= De timestamp tag wordt gebruikt om vast te leggen wanneer de handtekening is gemaakt en wordt meestal weergegeven als een Unix timestamp (het aantal seconden sinds 1 januari 1970).
bh= Deze tag staat voor de hash van de body, een versleutelde versie van de inhoud van je bericht (inclusief headers). Dit helpt voorkomen dat er met berichten wordt geknoeid nadat ze zijn ondertekend door DKIM en voordat ze de beoogde ontvangers bereiken.
h= De hashwaarde van de header bevat alle headers in hun geheel (inclusief de headers die zijn ondertekend door Sender Policy Framework of DomainKeys Identified Mail), behalve de headers die expliciet zijn uitgesloten door ze op te nemen in een uitsluitingslijst. Deze waarde moet worden berekend met SHA-1 of MD5.
b= De tag "b" is de base64-gecodeerde weergave van een cryptografische hashfunctie op de gecanoniseerde inhoud van het bericht (dat wil zeggen, nadat de MIME-codering is verwijderd).
Een DKIM-handtekening genereren
- Genereer een openbare en privésleutel.
- Een DKIM kop- en voettekst genereren.
- Onderteken de e-mailinhoud met je privésleutel met het geselecteerde algoritme, bijvoorbeeld RSA-SHA256 of RSA-SHA512.
- Comprimeer het bericht met het geselecteerde algoritme, bijvoorbeeld deflate of geen.
- Voeg de DKIM-headers in aan het begin van het bericht, vóór alle MIME-headers.
- Voeg de DKIM-voetregel in na eventuele MIME-voetregels.
De geldigheid van DKIM-handtekeningen garanderen
Er kunnen enkele stappen worden genomen om ervoor te zorgen dat de DKIM handtekening geldig is:
- Bepaal of je een traditioneel DKIM ondertekenalgoritme wilt gebruiken of een geoptimaliseerd algoritme.
- Bereken een hashwaarde voor de header en body van je bericht (dit is meestal SHA-256).
- Kies een geschikt ondertekeningsalgoritme (zoals RSA of ECDSA).
- Controleer of uw openbare sleutel overeenkomt met de selector die u eerder in stap 1 hebt opgegeven (dit doet u met behulp van DNS).
- Onderteken je bericht met je privésleutel en sla het op als een ASCII-string in Base64-indeling in de kop van je e-mailbericht (naast het plaatsen in DNS).
Een DKIM-handtekening verifiëren
DKIM Handtekeningverificatie is ingewikkeld. Het vereist veel expertise om het in te stellen en te onderhouden en het wordt vaak gebruikt in combinatie met andere systemen zoals SPF, die ook ingewikkeld zijn.
Daarom gebruiken de meeste e-mailmarketeers een hulpmiddel om DKIM-handtekeningen te verifiëren, zoals een DKIM record checker om hun DKIM handtekeningen te controleren. Deze tool controleert de DKIM-sleutels die zijn toegevoegd aan een e-mail en verifieert deze aan de hand van een openbare database. Als de sleutels geldig en vertrouwd zijn, 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 aangemerkt door ISP's of klanten van ISP's; ten tweede voorkomt het dat uw domein door andere domeinen op een zwarte lijst wordt gezet (dit wordt domain poisoning genoemd); ten slotte helpt het ervoor te zorgen dat uw e-mails niet in een man-in-the-middle-aanval terechtkomen.
Conclusie
DKIM is een veelbelovende oplossing waarmee een organisatie de legitimiteit van e-mails kan valideren, met name e-mails van externe afzenders. Wanneer het consistent wordt toegepast in een berichtenomgeving, biedt 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 genoeg is om bescherming te bieden tegen aanvallen van e-mailfraude, zoals spoofing en phishing. Daarvoor is een DMARC beleid ingesteld op verwerpen verplicht.
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 in de war te raken. Maar met de e-mailverificatieservices van PowerDMARC kunt u ervoor zorgen dat uw e-mails door de juiste mensen worden gezien.
Onze oplossing voor e-mailverificatie zal je helpen:
- Verhoog de bezorgbaarheid van e-mail door uw domeinnaam en DKIM-handtekening te verifiëren
- Verbeter je merkimago door ontvangers te laten zien dat je een legitiem bedrijf bent
- Verbeter de algehele klantervaring door ervoor te zorgen dat ze alleen legitieme berichten van je te zien krijgen
- Hoe Spyware voorkomen? - 25 april 2025
- SPF, DKIM en DMARC instellen voor Customer.io - 22 april 2025
- Wat is QR Phishing? Hoe QR Code Scams detecteren en voorkomen - 15 april 2025