Ist man im Internet auf der Suche nach Schutzmechanismen für die E-Mail, so stößt man schnell auf DKIM. Dieses Identifikationsprotokoll wurde entworfen, um unerwünschten E-Mails wie Spam oder Phishing entgegenzuwirken.
Doch was hat es mit diesem Protokoll auf sich? Wie funktioniert es und wie kann ich es selbst benutzen, um meine E-Mails sicherer zu gestalten?
Wie funktioniert DKIM?
Jede E-Mail besteht aus verschiedenen Teilen, den Headern mit verschiedenen Metadaten der E-Mail und dem Body, der den eigentlichen Inhalt enthält. DKIM, was für DomainKeys Identified Mail steht, fügt zu diesen Headern den sogenannten “DomainKey-Signature-Header” hinzu. Dieser Header enthält die digitale Signatur, die über bestimmte Felder in der E-Mail gebildet wird. Wie genau digitale Signaturen funktionieren, haben wir uns in einem eigenen Artikel angeschaut. Der Absender kann hier entscheiden, welche Header er signieren will. Auf jeden Fall signiert werden muss der “From”-Header, also der Header, der die Informationen des Absenders enthält. Ebenso wird immer der Inhalt der Nachricht signiert.
Der Empfänger ruft beim Empfang einer DKIM-signierten E-Mail die DNS-Records des angegebenen Absenders ab. Der Absender hat hier seinen öffentlichen Schlüssel hinterlegt, mit dem die Signatur verifiziert werden kann. Ist die Signatur gültig, so ist bewiesen, dass die E-Mail nicht modifiziert wurde und alle signierten Header nicht verändert wurden.
Wie signiere ich meine E-Mails mit DKIM?
Die gute Nachricht: Viele E-Mail-Provider bieten DKIM standardmäßig an. Darunter zählen Apple, GMX & Web.de, Google, Posteo, Tutanota sowie Yahoo. Die schlechte Nachricht: Bietet ein E-Mail-Provider DKIM nicht an, so hat man praktisch keine Möglichkeit, DKIM zu benutzen. Werden eigene E-Mail-Server betrieben, so richtet sich der Aufwand der Einrichtung hauptsächlich nach der verwenden Software, die für die E-Mail-Verwaltung benutzt wird. Entweder unterstützt die Software die Erzeugung von DKIM-Schlüsseln von Haus aus oder man muss Tools wie den EasyDMARC – DKIM Record Generator verwenden. Hier trägt man seine Domain, einen selbst gewählten Namen als sogenannten Selector und die gewünschte Schlüssellänge ein. Das Tool zeigt einem dann den DNS Record an, der hinterlegt werden muss.
Wir haben uns beispielsweise einen DNS-Eintrag für die Domain “aware7.com” und den Selector “blog” generieren lassen. Wie uns das Tool anzeigt, müsste der Eintrag als TXT-Record für “blog._domainkey.aware7.com” hinterlegt werden. Um zu überprüfen, ob der Eintrag korrekt ist, können wir das Tool von dmaranalyzer verwenden, den DKIM Record Check.
Des Weiteren wird ein private Key ausgegeben. Diesen müssen wir uns unbedingt speichern! Mit ihm sind wir in der Lage, DKIM-Signaturen zu erzeugen. Der private Key muss in unserem SMTP-Server oder Mail Transfer Agent hinterlegt werden.
Schlüsselgenerierung ohne Drittanbieter
Will man keine closed-source Tools von Drittanbietern verwenden, bietet sich OpenSSL an, mit der wir uns auch Schlüssel generieren können. Dazu verwenden wir den Befehl “openssl genrsa -out dkim_private.pem 2048“, um einen 2048 Bit langen RSA Schlüssel zu generieren und in der Datei “dkim_private.pem” abzulegen. Um nun den öffentlichen Schlüssel abzuleiten, verwenden wir den Befehl “openssl rsa -in dkim_private.pem -pubout -outform der 2>/dev/null | openssl base64 -A“. Wir erhalten einen Eintrag mit einem “p=” als erste Zeichenfolge. Vor diese Zeichenfolge setzen wir noch “v=DKIM1; ” und können ihn nun als TXT-Record im DNS hinterlegen.
Fazit
DKIM ist ein sehr sinnvolles Protokoll und ermöglicht es, eine Veränderung von E-Mail-Absenderadressen zu erkennen. Gleichzeitig bedeutet das nicht, dass durch DKIM Phishing-E-Mails der Vergangenheit angehören. Absender von Phishing E-Mails können nämlich für ihre versandten E-Mails DKIM-Signaturen verwenden, nur die Verschleierung der Absenderadresse wird hierdurch erschwert. Trotzdem ist es möglich, z. B. einen sehr ähnlich klingenden Domänennamen zu registrieren, sich dafür DKIM-Einträge zu generieren und diesen legitim zu verwenden. Dennoch ist es ein weiterer Baustein für eine bessere Sicherheit im E-Mail-Verkehr und sollte unterstützt werden, vor allem, da der Aufwand zur Implementierung gering ist.