DKIM – Was ist das und warum es beim Versand von E-Mails wichtig ist

Die moderne E-Mail-Authentifizierung basiert auf einer Kombination von drei Standards: SPF, DKIM und DMARC. Mit diesen Standards wird sichergestellt, dass eine Nachricht von einem Server stammt, der dazu berechtigt ist, Nachrichten im Namen der Domäne zu versenden. Dies ist ein Einzelbeitrag aus der mehrteiligen Beitragsreihe: E-Mail-Sicherheit und E-Mail Reputation mit DKIM, SPF und DMARC

  1. DKIM - Was ist das und warum es beim Versand von E-Mails wichtig ist
  2. SPF - Was ist das und wie funktioniert es
  3. DMARC - Was ist das und warum wird es mehr und mehr unabkömmlicher?
  4. Statistken, Reports und Auswertungen

Definition: DKIM (DomainKey Identified Mail)

DKIM (DomainKey Identified Mail)[1] ist ein E-Mail-Sicherheitsstandard, mit dem erkannt werden kann, ob Nachrichten während der Übertragung zwischen sendenden und empfangenden Mailservern verändert wurden. Um E-Mails für die DKIM-Authentifizierung mit dem privaten Schlüssel einer verantwortlichen Partei zu signieren, verwenden sendende Server die sogenannte Public-Key-Kryptographie[6]. Empfängerserver verwenden den öffentlichen Schlüssel, der im DNS der Domäne veröffentlicht wird, um die Quelle der Nachricht zu überprüfen und ob sich die in der DKIM-Signatur enthaltenen Teile der Nachricht seit dem Signieren der Nachricht verändert haben. Sobald die Signatur vom Empfängerserver mit dem öffentlichen Schlüssel verifiziert wurde, wird diese als authentisch betrachtet.

Was ist ein DKIM-Rekord?

Ein DKIM-Rekord ist ein speziell formatierter DNS-Eintrag[2] vom Typ TXT. Der Eintrag speichert u.a. den öffentlichen Schlüssel, den der empfangende E-Mail-Server verwendet, um damit die Signatur einer Nachricht zu überprüfen. Ein DKIM-Eintrag wird zumindest

  • aus einem Namen,
  • der (DKIM-)Version,
  • einem Schlüsseltyp und
  • dem öffentlichen Schlüssel selbst,

gebildet. In der Regel werden diese Schlüssel

  • von dem Anbieter zur Verfügung gestellt, über den Ihre E-Mails gesendet werden,
  • von Ihnen selbst, wenn Ihr Hosting-Packet die technischen Möglichkeiten dazu bietet oder wenn Sie selbst einen Mail-Server betreiben.

Eine typische DKIM-Signatur im E-Mail-Header einer Nachricht (Mozilla Thunderbird). ©WDNS.at

Warum DKIM wichtig ist

Während DKIM für die Übermittlung von Nachrichten an sich nicht unbediengt erforderlich ist, erscheinen E-Mails, die mit DKIM signiert sind, für Ihre Empfänger legitimer und werden weniger wahrscheinlich in den Junk- bzw. Spam-Ordner verschoben.

Das Spoofing[3] von E-Mails von vertrauenswürdigen Domains ist eine beliebte Technik bösartiger Spam- und Phishing-Kampagnen. DKIM erschwert das Spoofing von E-Mails, ist generell mit der vorhandenen E-Mail-Infrastruktur kompatibel und arbeitet mit SPF[4] und DMARC[5] zusammen. Dadurch können mehrere Sicherheitsebenen miteinader kombiniert und gemeinsam für einen sicheren E-Mail-Versand genutzt werden. Mailserver, die keine DKIM-Signaturen unterstützen, können weiterhin problemlos signierte Nachrichten empfangen - DKIM ist ein optionales Sicherheitsprotokoll und kein allgemein akzeptierter Standard.

Auch wenn DKIM aus technischer Sicht für die Übermittlung von Nachrichten nicht erforderlich ist, empfehlen wir Ihnen, Ihrem DNS nach Möglichkeit einen DKIM-Eintrag hinzuzufügen, um E-Mails Ihrer Domäne zu authentifizieren. Anbieter wie Yahoo, AOL, Gmail und Microsoft O365 verwenden DKIM, um eingehende Nachrichten auf Authenzität zu überprüfen. In durchgeführten Tests wurde festgestellt, dass Nachrichten mit größerer Wahrscheinlichkeit fehlerfrei übermittelt werden, wenn DKIM zum Einsatz kommt.

Ein zusätzlicher Vorteil von DKIM besteht darin, dass ISPs im Laufe der Zeit eine Reputation Ihrer E-Mail-Domain aufbauen. Wenn Sie E-Mails senden und Ihre Zustellpraktiken verbessern (geringer Spam und geringe Unzustellbarkeiten, hohes Engagement), schaffen Sie die Grundlage einer guten Sendereputation bei ISPs. Dies verbessert wiederum die Zustellbarkeit von E-Mails.

Darüber hinaus muss man sich aber auch im Klaren sein, welche Probleme DKIM nicht lösen kann: Durch dessen Verwendung wird sichergestellt, dass Nachrichten bei der Übermittlung nicht verändert werden, der Inhalt der Nachrichten wird aber weiterhin in plain Text versendet. Auch wenn viele ESPs opportunistisches TLS[7] für die Verschlüsselung von Nachrichten während des Transports vom Absender zum Empfänger verwenden, ist es immer noch möglich, unverschlüsselte Nachrichten zu senden, wenn ein E-Mail-Server eine TLS-Verbindung ablehnt.

Sobald eine Nachricht zugestellt wurde, verbleibt die DKIM-Signatur in den E-Mail-Headern, verschlüsselt jedoch den Inhalt der Nachricht in keiner Weise.

Wie DKIM funktioniert

Flussdiagram DKIM ©by WDNS.at

Um eine Nachrichten zu überprüfen, sind zwei Aktionen erforderlich: Die erste Aktion findet auf dem Server statt, der (DKIM-signierte) E-Mails versendet, während die zweite Aktion auf einem Empfängerserver stattfindet, der DKIM-Signaturen in den eingehenden Nachrichten überprüft. Der gesamte Prozess wird durch ein privates/öffentliches Schlüsselpaar ermöglicht. Der private Schlüssel wird geheim und sicher aufbewahrt (auf dem eigenen Server), der öffentliche Schlüssel wird in einem DNS-Eintrag der Domäne hinzugefügt.

Senden einer signierten DKIM-Nachricht

Um eine einfache Vorstellung davon zu geben, wie DKIM funktioniert, lassen Sie mich den Prozess erklären, wie er auf den Servern von WDNS.at stattfindet:

  • zu allerserst wird bei der Einrichtung einer E-Mail-Domain das Schlüsselpaar erstellt
  • der private Schlüssel der gehosteten Domain wird sicher verwahrt (der Mailerdaemon muss allerdings Zugriff darauf haben)
  • jede ausgehende Nachricht der entsprechenden Domain wird signiert: dabei wird beim Senden einer Nachricht ein Hash aus dem Inhalt der Nachrichtenkopfzeilen erstellt und mit dem privaten Schlüssel der Domäne signiert.

Diese Signatur enthält alle Informationen, die ein empfangender Server zum Überprüfen der Nachricht benötigt.

Die Signatur im Detail

DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=wdns.at; s=24032022; t=1656442989;
h=from:from:reply-to:subject:subject:date:date:message-id:message-id:to:to:cc:mime-version:mime-version:content-type:content-type:content-transfer-encoding:content-transfer-encoding;
bh=uCxxx5skk2TLgeTVSCIRofV6IyFpRnpA1HLiJn5y4Pg=;
b=rvbxh/T9DUQBCs67uQavRZC6EKBzPlUBY6UdJ6SBtv4xLq3aMYoZ7z9h2u/52xSYfVpZfNe+qkc3X3Vy9sRzD031TdYga8yz8MbptAhKZiCIuWJG53XNDsyM2trzLM813VO94hHAr7ZtkvqxCnWKtfjSN0XxZf6vgsB+l0sMLBpDnQXatBxZLoD2ywEfoh42rRxG0apdTROkZlehas/KpjOpp5Mnk20R5umCtM6nSK6ElzWA7zGWXXMZ+Fk91HWWpj45dQKQxrbzneMj3/vka8mLd5U45R1DFahXZfeGlxbf84x7mZbmnpPTj2GGHbWwo6EFCTjwQ2/rFUWTBoCQ==

Die Bedeutung der einzelnen Einträge

  • DKIM-Signature: Der Header, der für DKIM-signierte Nachrichten registriert ist.
  • v=1; Die Version von DKIM, die vom sendenden Server verwendet wird.
  • a=rsa-sha256; Der Algorithmus, der verwendet wird, um den Hash für den privaten/öffentlichen Schlüssel zu generieren. Es gibt zwei offiziell unterstützte Signaturalgorithmen für diesen Hash, rsa-sha1 und rsa-sha256.
  • c=relaxed/relaxed; Legt die Kanonisierungshaltung für die sendende Domäne fest. Dadurch werden Änderungen an Leerzeichen und Textumbrüchen in einer Nachricht geregelt. Es gibt zwei kanonisierte Haltungen. "simple" (einfach) erlaubt keine Änderungen, und "releaxed" (entspannt) ermöglicht häufige Änderungen an Leerzeichen und Kopfzeilenumbruch. Die Kanonisierung im Header und Body kann individuell verwaltet werden und verwendet ein Header/Body-Format.
  • s=24032022; Wird als DKIM-Selektor für den öffentlichen DKIM-Schlüssel zur Überprüfung verwendet. Domänen können über mehrere öffentliche DKIM-Schlüssel verfügen, und der Selektorwert stellt sicher, dass Empfängerserver den richtigen öffentlichen Schlüssel verwenden.
  • d=wdns.at; Die E-Mail-Domäne, in der die Nachricht signiert wurde. Es ist wichtig, dass Ihre DKIM-Signatur hier Ihren Domainnamen verwendet, da dies den Ruf Ihrer Domain bei ISPs stärkt, wenn Sie gültige E-Mails senden, unabhängig davon, welchen E-Mail-Dienstanbieter Sie verwenden.
  • t=[...] gibt an, dass die Domäne DKIM testet oder eine Domänenübereinstimmung im Signaturheader zwischen den Tags "i=" und "d=" erzwingt.
    • t=y gibt an, dass die Domäne DKIM testet. Absender verwenden dieses Tag beim ersten Einrichten von DKIM, um sicherzustellen, dass die DKIM-Signatur ordnungsgemäß überprüft wird. Einige Postfachanbieter ignorieren eine DKIM-Signatur im Testmodus, daher sollte dieses Tag vor der vollständigen Bereitstellung entfernt oder in t=s geändert werden, wenn das Tag "i=" im DKIM-Signaturheader verwendet wird.
    • t=s gibt an, dass jeder DKIM-Signaturheader, der das Tag "i=" verwendet, denselben Domänenwert auf der rechten Seite des @-Zeichens im Tag "i=" und im Tag "d=" (i= local-part@domain.com) haben muss. Die Tag-Domäne "i=" darf keine Unterdomäne des Tags "d=" sein. Fügen Sie dieses Tag nicht hinzu, wenn die Verwendung einer Subdomain erforderlich ist.
  • h=from:from:reply-to:subject:subject:date:date:message-id:message-id:to:to:cc:mime-version:mime-version:content-type:content-type:content-transfer-encoding:content-transfer-encoding; Die Header, die in der Nachricht enthalten waren, als sie kryptografisch signiert war.
  • bh=uCxxx5skk2TLgeTVSCIRofV6IyFpRnpA1HLiJn5y4Pg=; Der Wert eines Körperhashs, der generiert wird, bevor die Nachrichtenheader signiert werden.
  • b=[...] Die kryptografische Signatur aller vorhergehenden Informationen aus dem Feld DKIM-Signatur. Dieser Eintrag wird während des Überprüfungsprozesses als leere Zeichenfolge behandelt.

Diese Signatur wird vor dem Versand berechnet und dem Header ausgehender Nachrichten hinzugefügt. Die Nachricht ist nun derart manipuliert, dass ein Empfängerserver überprüfen kann, ob diese Nachricht während der Übertragung verändert wurde.

Überprüfen einer signierten DKIM-Nachricht

E-Mail-Systeme starten die DKIM-Überprüfung, indem sie sicherstellen

  • dass die Versionsnummer der DKIM-Spezifikation entspricht,
  • die Identität der Domäne des Absenders mit der in der Signatur festgelegten Domäne übereinstimmt und
  • das Tag "h=" das Von-Header-Feld enthält.

Nachdem die Signatur überprüft wurde, versucht der Empfängerserver, den öffentlichen Schlüssel für die sendende Domäne vom DNS abzurufen.

  • Der Server verwendet das Tag "d=", um die DNS-Einträge für die sendende Domäne nachzuschlagen, und
  • das Tag "s=", um den richtigen DKIM-Schlüssel auszuwählen.

So sieht der öffentliche Schlüssel für dieDomäne WDNS.at aus:

Im DNS hinterlegter öffentlicher DKIM-Schlüssel eingetragen als TXT-Record. ©by WDNS.at

Mit dem öffentlichen Schlüssel wird der gesendete verschlüsselte Hash entschlüsselt . Der empfangende Mailserver berechnet dann seinen eigenen Hash. Wenn die beiden übereinstimmen, wird die Nachricht durchgelassen.

FAQ

Kann DKIM Domain-Spoofing verhindern?

DKIM allein verhindert Domain-Spoofing nicht. Es ist möglich, eine Nachricht mit einem DKIM-Schlüssel zu signieren, der mit einer anderen Domäne als der im Header "From" angegebenen verknüpft ist. Wenn Sie jedoch eine DMARC-Richtlinie für Ihre Domäne festgelegt haben, überprüft der empfangende E-Mail-Server, ob der DKIM-Schlüssel, der zum Signieren der Nachricht verwendet wird, mit der From-Domäne übereinstimmt, wenn die DMARC-Kompatibilität bestimmt wird.

Kann DKIM die Zustellbarkeit von E-Mails verbessern?

ISPs wie Gmail, Yahoo, Microsoft und AOL verwenden DKIM als einen Hinweis, um festzustellen, ob eine Nachricht legitim ist oder nicht. Unsere Tests haben ergeben, dass die Verwendung von E-Mail-Authentifizierungsmethoden wie SPF und DKIM für eine gute Zustellbarkeit entscheidend sind.

Was haben SPF und DMARC mit DKIM zu tun?

Während DKIM sicherstellt, dass Nachrichten während der Übertragung zwischen dem sendenden und dem Empfängerserver nicht geändert werden, überprüft SPF, ob der sendende Server berechtigt ist, Nachrichten über die entsprechende Domäne zu senden. DMARC bietet einem Domäneninhaber einen Mechanismus, mit dem er vereinbaren kann, wie nicht authentifizierte Nachrichten von Empfängern verarbeitet werden sollen. DMARC verwendet DKIM und SPF, um zu bestimmen, ob eine Nachricht legitim ist und ob sie an den Empfänger zugestellt oder blockiert werden soll.

Wie füge ich meiner Domain einen DKIM-Eintrag hinzu?

Unabhängig davon, welchen ESP oder welchen Mailserver Sie verwenden, ist das allgemeine Setup für DKIM immer das gleiche:

  1. sie benötigen einen privaten Schlüssel, der an einem sicheren Ort gespeichert ist, und
  2. einen in den DNS-Einträgen der Domain hinterlegten öffentlichen Schlüssel

Ähnlich wie SPF verwendet auch DKIM DNS-TXT-Einträge mit einem speziellen Format. Als Best Practice gilt, Ihre DKIM-Schlüssel regelmäßig zu rotieren. Der DKIM-Standard empfiehlt einen vierteljährlichen Zeitraum und dass Sie Ihre alten DKIM-Schlüssel als Teil dieser Rotation widerrufen. Der beste Weg, dies zu verwalten, besteht darin, Ihre neuen Schlüssel hinzuzufügen und einige Tage später den alten Schlüssel (DNS-Eintrag) für Ihre Domäne zu entfernen.

Wie kann ich testen, ob ich DKIM richtig eingerichtet habe?

Nachdem Sie DKIM für Ihren E-Mail-Dienst/Domain eingerichtet haben, senden Sie eine Nachricht an eine von Ihnen verwaltete E-Mail-Adresse. Um sicherzustellen, dass DKIM erfolgreich angewandt wurde. untersuchen die Kopfzeilen der Nachrict auf  die DKIM-Signatur und die Authentifizierungsergebnisse.

Wie kann ich die Nachrichtenkopfzeilen besser/verständlicher lesen?

Sie können DMARC-Berichte verwenden, um zu überprüfen, ob die mit Ihrer Domäne gesendeten Nachrichten korrekt mit DKIM und SPF authentifiziert sind. Ein DMARC-Überwachungsdienst, so wie der WDNS DMARC Digests (Anm.d.R.: wird gerade eingerichtet) verarbeitet diese Berichte für Sie und stellt eine nützliche Zusammenfassung der DKIM-, SPF- und DMARC-Ergebnisse für Nachrichten bereit, die von allen von Ihnen verwendeten Postfachanbietern gesendet werden.

Dies ist der erste Beitrag aus der Reihe E-Mail-Sicherheit mit DKIM, SPF und DMAC. Dieser Beitrag wird derzeit überarbeitet.

Quellennachweis:
[1] https://www.rfc-editor.org/rfc/rfc7001.txt
[2] https://de.wikipedia.org/wiki/Domain_Name_System
[3] https://de.wikipedia.org/wiki/Spoofing
[4] https://wdns.at/spf-was-ist-das-und-wie-funktioniert-es/
[5] ...folgt
[6] https://en.wikipedia.org/wiki/Public-key_cryptography
[7] https://en.wikipedia.org/wiki/Opportunistic_TLS

Changelog:
14.07.2022 - Links 6, 7 ergänzt
18.07.2022 - Link 4 ergänzt
31.05.2023 - einige Textpassagen überarbeitet