Beiträge

Domain Keys Identified Mail (DKIM) ist eine E-Mail-Authentifizierungsmethode, mit der eine Organisation die Verantwortung für eine gesendete Nachricht übernehmen kann. Es verwendet Public-Key-Kryptographie, um E-Mails digital zu "signieren" und den Empfängern zu beweisen, dass die Nachricht vom Domäneninhaber gesendet wurde. Die Empfänger können die Signatur mit dem veröffentlichten öffentlichen Schlüssel ihrer Domäne abgleichen, um die Signatur zu überprüfen.

Dieser Artikel befasst sich ausführlich mit DKIM und gibt Ihnen einen Überblick über die Funktionsweise dieser E-Mail-Authentifizierungsmethode.

Was ist eine DKIM-Signatur?

DKIM steht für DomainKeys Identified Mail. Es handelt sich um ein E-Mail-Authentifizierungssystem, das mit Hilfe von kryptografischen Signaturen Integrität und Unleugbarkeit gewährleistet. Es wird zusammen mit DMARC kann es helfen, eine robuste Infrastruktur zum Schutz vor Spoofing für Ihre E-Mails aufzubauen.

Das DKIM-Protokoll erstellt eine kryptografische Signatur für jede Nachricht, die an die Empfänger gesendet wird, sowie eine Domänensignatur, die dem Nachrichtenkopf hinzugefügt wird.

Anhand dieser Signatur kann der Empfänger überprüfen, ob die Nachricht tatsächlich von dem Inhaber der Domäne und nicht von einer anderen Person gesendet wurde. Sie verifiziert auch, dass die Nachricht auf ihrem Weg vom Absender zum Empfänger nicht manipuliert wurde.

Wenn sie nicht übereinstimmt, dann entweder:

  1. Die Nachricht wurde während der Übertragung verändert, oder
  2. Die Nachricht wird im Namen einer anderen Person gesendet, die Zugang zum privaten Schlüssel des sendenden Servers hat

In solchen Fällen von nicht übereinstimmenden Signaturen verhindert DKIM, dass diese E-Mails an die vorgesehenen Empfänger zugestellt werden, da diese nicht in der Lage sind, sie als legitime Nachrichten von Ihrer Marke zu validieren.

Wie funktioniert eine DKIM-Signatur?

DKIM-Signaturen fügen eine digitale Signatur in die Kopfzeile einer E-Mail ein. Diese Signatur kann vom empfangenden Server überprüft werden, um festzustellen, ob eine E-Mail während der Übertragung manipuliert wurde oder nicht.

DKIM verwendet die Public-Key-Kryptographie, die sich auf ein Schlüsselpaar stützt: einen privaten und einen öffentlichen Schlüssel. Der öffentliche Schlüssel wird an jeden verteilt, der ihn haben möchte, während der private Schlüssel geheim gehalten wird (normalerweise vom Eigentümer).

Wenn Sie eine E-Mail mit DKIM signieren, wird Ihr privater Schlüssel verwendet, um einen Hash des Nachrichteninhalts zu erstellen und diesen Hash dann mit dem öffentlichen Schlüssel des Empfängers zu verschlüsseln. Dieser verschlüsselte Hash wird dann in die Kopfzeile Ihrer Nachricht eingefügt, wo er vom Empfänger validiert werden kann.

Die Schlüssel der DKIM-Signatur

DKIM-Signaturen werden mit zwei kryptografischen Schlüsseln erzeugt, einem öffentlichen und einem privaten. Der öffentliche Schlüssel wird im DNS veröffentlicht, während der private Schlüssel geheim gehalten wird.

Wenn eine E-Mail signiert wird, wird der private Schlüssel verwendet, um einen Hash der Nachricht zu erzeugen. Dieser Hash wird dann mit dem öffentlichen Schlüssel verschlüsselt und zusammen mit der eigentlichen Nachricht versandt.

Wenn der Empfänger diese Informationen erhält, verwendet er seinen privaten Schlüssel, um den Hash zu entschlüsseln und zu überprüfen, ob er mit dem ursprünglichen Inhalt der Nachricht übereinstimmt.

Die Teile der DKIM-Signatur

Eine DKIM-Signatur besteht aus zwei Teilen: einem Header und dem Body. Die Kopfzeile enthält Informationen über die Identität des Absenders, einschließlich seiner E-Mail-Adresse und seines öffentlichen Schlüssels. Der Textkörper enthält die eigentliche Nachricht, die gesendet wurde.

  1. Um eine DKIM-Signatur zu berechnen, nehmen Sie zunächst einen MD5-Hash Ihres Domänennamens (z. B. "example.com"), der Ihr öffentlicher Schlüssel ist.
  2. Dann verketten Sie Ihren Domänennamen mit einem SHA1-Hash (z. B. "sha1(example.com)") und fügen ihn an die ursprünglich gesendete Nachricht an.
  3. Dann nehmen Sie einen weiteren MD5-Hash dieser kombinierten Zeichenfolge (z. B. "md5(sha1(example.com))") und fügen ihn als Kopfzeile am Anfang Ihrer Nachricht an, bevor Sie sie zur Übermittlung abschicken.

Schritte bei der DKIM-Signierung

Erste Schritte mit DKIM:

  1. Der erste Schritt besteht darin, einen privaten Schlüssel zu erstellen, mit dem die Nachricht signiert wird.
  2. Der zweite Schritt ist die Erstellung eines öffentlichen Schlüssels, der bei der Überprüfung der Signatur verwendet wird.
  3. Der dritte Schritt besteht darin, zwei DNS-TXT-Einträge zu erstellen: einen für den öffentlichen Schlüssel und einen für den Selektornamen.
  4. Der vierte Schritt besteht darin, diese Einträge in Ihrer DNS-Zonendatei zu veröffentlichen.

Schritte bei der DKIM-Signierung:

1. Der Absender generiert eine Nachricht mit einem eindeutigen Bezeichner, der als kryptografische Hash-Funktion bezeichnet wird (normalerweise SHA-256). Dieser eindeutige Bezeichner wird als DKIM-Signatur-Header-Feld bezeichnet und enthält Informationen darüber, wer die Nachricht signiert hat und wann er dies getan hat.

2. Der Absender fügt der Nachricht zusätzliche Header-Felder hinzu, die Informationen über:

  • wie lange die Nachricht als gültig betrachtet werden soll
  • wie oft die Unterschrift erneut auf ihre Gültigkeit geprüft werden soll
  • ob die Signaturen über einen externen Dienst wie SPF (Sender Policy Framework) validiert werden sollen
  • welche Schlüssel zum Signieren dieser Nachricht verwendet wurden

3. Schließlich verwenden Empfänger, die diese Signaturen überprüfen wollen, ihre Kopie des öffentlichen Schlüssels ihres Absenders aus ihren DNS-Einträgen oder einem Zwischendienst wie SenderID oder Mailgun und validieren damit alle Nachrichten mit angehängten DKIM-Kopfzeilen.

Verstehen der in der DKIM-Signatur verwendeten Tags

Dies ist ein Beispiel dafür, wie ein DKIM-Signatursatz aussehen könnte:

DKIM-Signatur: v=1;

a=rsa-sha256;

s=jun2005.eng;

c=entspannt/entspannt;

d=example.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= Dieses Tag gibt die Version des DKIM an.

a= Hier wird der Algorithmus angegeben, den der Unterzeichner zur Erzeugung seines öffentlichen Schlüssels verwendet. Es kann einer der Algorithmen RSA1_5, RSA-SHA1 oder RSASSA-PSS sein. Fehlt diese Angabe, so wird RSA-SHA1 angenommen.

c= Gibt den Kanonisierungsalgorithmus an, der zur Erzeugung von Hashes aus Header-Feldern verwendet wird, wie in [BCP14] gefordert. Es folgt eine durch Komma getrennte Liste von 1 oder mehreren Kanonisierungsalgorithmen (z. B. "c=relaxed"). Wird dieses Tag weggelassen, wird eine entspannte Kanonisierung angenommen.

d= Gibt an, welcher Domänenname bei der Erstellung von Signaturen für Nachrichten, die von diesem Server (oder einem anderen Empfänger) gesendet werden, verwendet werden soll.

s= Das "s"-Tag ist der Selektorstring, der von einem empfangenden Server verwendet wird, um zu bestimmen, welcher öffentliche Schlüssel zur Überprüfung der Signatur verwendet werden soll.

t= Das Zeitstempel-Tag wird verwendet, um aufzuzeichnen, wann die Signatur erstellt wurde, und wird normalerweise als Unix-Zeitstempel dargestellt (die Anzahl der Sekunden seit dem 1. Januar 1970).

bh= Dieses Tag steht für den Body-Hash, eine verschlüsselte Version des Inhalts Ihrer Nachricht (einschließlich der Kopfzeilen). Dies hilft, Manipulationen an Nachrichten zu verhindern, nachdem sie von DKIM signiert wurden und bevor sie die vorgesehenen Empfänger erreichen.

h= Der Header-Hash-Wert enthält alle Header in ihrer Gesamtheit (einschließlich der von Sender Policy Framework oder DomainKeys Identified Mail signierten), mit Ausnahme derjenigen, die ausdrücklich ausgeschlossen wurden, indem sie in eine Ausschlussliste aufgenommen wurden. Dieser Wert muss mit SHA-1 oder MD5 berechnet werden.

b= Das "b"-Tag ist die base64-kodierte Darstellung einer kryptografischen Hash-Funktion auf dem kanonisierten Körper der Nachricht (d. h. nachdem die MIME-Kodierung entfernt wurde).

Generierung einer DKIM-Signatur

  1. Generieren Sie einen öffentlichen und einen privaten Schlüssel.
  2. Generieren Sie eine DKIM-Kopf- und Fußzeile.
  3. Signieren Sie den E-Mail-Inhalt mit Ihrem privaten Schlüssel unter Verwendung des ausgewählten Algorithmus, z. B. RSA-SHA256 oder RSA-SHA512
  4. Komprimieren Sie die Nachricht mit dem ausgewählten Algorithmus, z. B. deflate oder none.
  5. Fügen Sie die DKIM-Header am Anfang der Nachricht vor allen MIME-Headern ein.
  6. Fügen Sie die DKIM-Fußzeile nach allen MIME-Fußzeilen ein.

Sicherstellung der Gültigkeit der DKIM-Signatur

Es können einige Schritte unternommen werden, um sicherzustellen, dass die DKIM-Signatur gültig ist:

  1. Legen Sie fest, ob Sie einen herkömmlichen DKIM-Signieralgorithmus oder einen optimierten Algorithmus verwenden möchten.
  2. Berechnen Sie einen Hash-Wert für den Header und den Body Ihrer Nachricht (in der Regel ist dies SHA-256).
  3. Wählen Sie einen geeigneten Signieralgorithmus (wie RSA oder ECDSA).
  4. Überprüfen Sie, ob Ihr öffentlicher Schlüssel mit dem in Schritt 1 angegebenen Selektor übereinstimmt (dies geschieht über DNS).
  5. Signieren Sie Ihre Nachricht mit Ihrem privaten Schlüssel und speichern Sie ihn als ASCII-Zeichenfolge im Base64-Format in der Kopfzeile Ihrer E-Mail-Nachricht (zusätzlich zu seiner Platzierung im DNS).

Überprüfen einer DKIM-Signatur

Die DKIM-Signaturprüfung ist kompliziert. Es erfordert viel Fachwissen, um es einzurichten und zu pflegen, und es wird oft in Verbindung mit anderen Systemen wie SPF verwendet, die ebenfalls kompliziert sind.

Daher verwenden die meisten E-Mail-Vermarkter ein Tool zur Überprüfung der DKIM-Signatur, z. B. einen DKIM-Datensatz-Prüfer um ihre DKIM-Signaturen zu überprüfen. Dieses Tool überprüft die DKIM-Schlüssel, die einer E-Mail hinzugefügt wurden, und gleicht sie mit einer öffentlichen Datenbank ab. Wenn die Schlüssel gültig und vertrauenswürdig sind, kann die E-Mail als legitim angesehen werden.

Dies ist aus mehreren Gründen wichtig: Erstens wird so sichergestellt, dass Ihre E-Mails von Internetdienstleistern oder deren Kunden nicht als Spam eingestuft werden; zweitens können Sie so vermeiden, dass Ihre Domäne von anderen Domänen auf eine schwarze Liste gesetzt wird (dies wird als Domänenvergiftung bezeichnet); und drittens wird so sichergestellt, dass Ihre E-Mails nicht in irgendeine Art von Man-in-the-Middle-Angriff verwickelt werden.

Schlussfolgerung

DKIM ist eine vielversprechende Lösung, die es einem Unternehmen ermöglicht, die Legitimität von E-Mails zu überprüfen, insbesondere von solchen, die von externen Absendern stammen. Bei konsequenter Anwendung in einer Messaging-Umgebung bietet es den Empfängern ein hohes Maß an Vertrauen, dass eine E-Mail von einem autorisierten Vertreter der Domäne des Absenders gesendet wurde. Es ist jedoch wichtig zu beachten, dass DKIM zwar einen Verifizierungsmechanismus bietet, aber nicht ausreicht, um vor E-Mail-Betrugsangriffen wie Spoofing und Phishing zu schützen. Dazu muss eine DMARC-Richtlinie als Ablehnung zwingend erforderlich.

Brauchen Sie Hilfe?

Die E-Mail-Authentifizierung ist ein wichtiger Bestandteil der digitalen Marketingstrategie eines jeden Unternehmens. Bei der Vielzahl von E-Mails, die täglich versendet und empfangen werden, kann Ihre Marke leicht in der Masse untergehen. Mit den E-Mail-Authentifizierungsdiensten von PowerDMARC können Sie jedoch sicherstellen, dass Ihre E-Mails von den richtigen Personen gesehen werden. 

Unsere E-Mail-Authentifizierungslösung wird Ihnen dabei helfen:

  • Erhöhen Sie die Zustellbarkeit von E-Mails durch Überprüfung Ihres Domainnamens und Ihrer DKIM-Signatur
  • Verbessern Sie Ihr Markenimage, indem Sie den Empfängern zeigen, dass Sie ein seriöses Unternehmen sind.
  • Verbessern Sie die allgemeine Kundenerfahrung, indem Sie sicherstellen, dass sie nur legitime Nachrichten von Ihnen sehen.