# DomainKeys Identified Mail

DomainKeys Identified Mail (DKIM) ist ein Identifikationsprotokoll zur Sicherstellung der Authentizität von E-Mail-Absendern. Es wurde konzipiert, um bei der Eindämmung unerwünschter E-Mails wie Spam oder Phishing zu helfen.

## Funktionsweise

DKIM basiert auf asymmetrischer Kryptographie. Die E-Mail wird vom sendenden Mail Transfer Agent (MTA) mit einer digitalen Signatur versehen, die der empfangende MTA anhand des öffentlichen Schlüssels, der über das Domain Name System (DNS) bei der Absender-Domain abrufbar ist, verifizieren kann. Schlägt dies fehl, hat der empfangende MTA oder der empfangende Mail User Agent die Möglichkeit, die E-Mail zu verweigern oder auszusortieren.
Um eine E-Mail mit DKIM zu signieren, wird der Inhalt zunächst in ein einheitliches Format abgebildet (englisch canonicalization). Mit einer kryptographischen Hashfunktion wird ein Hashwert berechnet, der sich über den vereinheitlichten Inhalt der E-Mail erstreckt (englisch body hash). Über diesen Hashwert, sowie vom Sender ausgewählte Header-Zeilen, die vor einer Modifikation geschützt werden sollen, wird ein weiterer Hashwert berechnet, der mit einem Public-Key-Verfahren signiert wird. Der Body-Hashwert und die Signatur werden mit Base64 kodiert und zusammen mit weiteren Parametern in einem neuen Header namens „DKIM-Signature“ in die E-Mail eingefügt. Der so entstandene Header besteht ausschließlich aus ASCII-Zeichen, was für den E-Mail-Versand über das Simple Mail Transfer Protocol vorausgesetzt wird.
Als Hashfunktion kommt SHA-256 zum Einsatz. Ursprünglich wurde SHA-1 verwendet, was jedoch aufgrund seiner Sicherheitsschwächen seit 2018 nicht mehr mit dem DKIM-Standard konform ist. Als Signaturverfahren kommen RSA (1024–4096 bit) oder Ed25519 zum Einsatz. Beide Signaturverfahren können nebeneinander eingesetzt werden, sodass eine E-Mail mehrere DKIM-Signaturen enthalten kann. Die Signierung mit RSA ist verpflichtend.
Für die Verifikation einer DKIM-Signatur wiederholt der Empfänger die Hashwert-Berechnung über den Inhalt der empfangenen E-Mail und vergleicht ihn mit dem Base64-dekodierten Body-Hashwert aus dem „DKIM-Signature“-Header. Anschließend ruft der Empfänger über das Domain Name System den öffentlichen Schlüssel des Absenders ab. Der Domainname ergibt sich aus den Parametern der „DKIM-Signature“ (Absender-Domain und Selektor). Mit dem öffentlichen Schlüssel wird nun die Signatur verifiziert. Falls die Signaturprüfung erfolgreich ist, stammt die E-Mail tatsächlich von der angegebenen Absender-Domain und wurde auf dem Weg der Zustellung nicht durch Dritte verändert. Das DNS dient bei DKIM als Vertrauensanker und Public-Key-Infrastruktur.

## Abgrenzung

Bei DKIM handelt es sich um einen Authentifizierungsmechanismus, sodass ein Empfänger feststellen kann, ob eine E-Mail tatsächlich von der angegebenen Domain versendet wurde. Dies schützt vor E-Mail-Spoofing.
DKIM dient nicht dazu, Spam zu erkennen. Durch die Nachvollziehbarkeit der Absender-Domain kann es aber verwendet werden, Bewertungssysteme und Filtertechniken von Spamfiltern wirkungsvoller zu gestalten. Zudem kann DKIM den Datendiebstahl durch Phishing begrenzen, da teilnehmende Mailversender ihre E-Mails als authentisch beglaubigen.
Ein Nachteil von DKIM ist die fehlende Aussagekraft bei Fehlen einer Signatur. Es ist für den Empfänger nicht ersichtlich, ob der Absender DKIM nicht einsetzt oder ob es sich um Spoofing handelt. Diese Informationslücke wird mit DMARC geschlossen. Der Absender kann eine Policy definieren, wie der Empfänger mit E-Mails umgehen soll, die keine gültige DKIM-Signatur enthalten.

## Standardisierung

Das Verfahren wurde von Yahoo unter dem Namen DomainKeys entwickelt und bei der IETF zur Standardisierung eingereicht. Die IETF veröffentlichte im Jahr 2007 das historische Verfahren DomainKeys als RFC 4870 und am selben Tag den Nachfolger DomainKeys Identified Mail als RFC 4871. Im Jahr 2009 folgte mit RFC 5672 eine Aktualisierung. Mit der Veröffentlichung von RFC 6376 im Jahr 2011 erhielt DKIM den Status eines Internetstandards.
Derzeit gültig ist die folgende Fassung mit vier Ergänzungen (Updates):
* RFC: <a href='https://datatracker.ietf.org/doc/html/rfc6376' class='extiw' title='rfc:6376'>6376</a> – DomainKeys Identified Mail (DKIM) Signatures. 2011 (englisch).
* RFC: <a href='https://datatracker.ietf.org/doc/html/rfc8301' class='extiw' title='rfc:8301'>8301</a> – Cryptographic Algorithm and Key Usage Update to DomainKeys Identified Mail (DKIM). 2018 (englisch).
* RFC: <a href='https://datatracker.ietf.org/doc/html/rfc8463' class='extiw' title='rfc:8463'>8463</a> – A New Cryptographic Signature Method for DomainKeys Identified Mail (DKIM). 2018 (englisch).
* RFC: <a href='https://datatracker.ietf.org/doc/html/rfc8553' class='extiw' title='rfc:8553'>8553</a> – DNS AttrLeaf Changes: Fixing Specifications That Use Underscored Node Names. 2019 (englisch).
* RFC: <a href='https://datatracker.ietf.org/doc/html/rfc8616' class='extiw' title='rfc:8616'>8616</a> – Email Authentication for Internationalized Mail. 2019 (englisch).
Yahoo hält ein Patent auf das Verfahren und stellt es unter zwei Lizenzen zur kostenlosen Nutzung zur Verfügung. Es kann wahlweise unter den Bedingungen der GPL 2.0 oder den Bedingungen des proprietären „Yahoo DomainKeys Patent License Agreement“ verwendet werden.
Ein zu DKIM alternatives Verfahren war das von Microsoft entwickelte Sender ID, welches ebenfalls patentiert war. Die Standardisierung von Sender ID scheiterte in der IETF, weil die Lizenz von Microsoft keine Nutzung durch freie Software unter einer Open-Source-Lizenz ermöglichte.

## Unterstützung

Eine Herausforderung bei dieser und allen anderen Methoden zur Sicherstellung der Absender-Authentizität ist, dass es einen langen Zeitraum benötigt, um ein solches System zu verbreiten, da zuerst die Software angepasst werden muss und diese dann auch noch auf den Mailservern zum Einsatz kommen muss.
DKIM wurde in gängigen Mail Transfer Agents wie Postfix, Sendmail oder Exim implementiert. Alle größeren E-Mail-Anbieter unterstützen DKIM, neben Yahoo beispielsweise Gmail und Microsoft Office 365.
Laut einer im Oktober 2015 veröffentlichten Studie waren 83 % der E-Mails, die Gmail im April 2015 empfangen hatte, mit DKIM signiert. Von den signierten E-Mails schlug die Verifikation jedoch bei 6 % aus unterschiedlichen Gründen fehl.
Im Januar 2021 veröffentlichte die Zeitschrift c’t einen Test der Verbreitung und Umsetzungsqualität von DKIM bei 37 deutschen Webhosting-Anbietern mit dem Resultat, dass nur 16 davon DKIM anbieten und es nur bei 6 fehlerfrei konfiguriert war (keine falschen Absenderdomains mit DKIM signiert). Einige der Anbieter korrigierten ihre DKIM-Umsetzung umgehend bereits vor Veröffentlichung der Ausgabe.