Zum Inhalt springen

Schwacher DKIM-Schlüssel

CWE-326CWE-290OWASP A02:2021Aktualisiert 4. September 20264 Min. Lesezeit

DKIM signiert Ihre ausgehende E-Mail, damit Empfänger überprüfen können, dass eine Nachricht von Ihnen stammt. Ist der Schlüssel 1024 Bit oder kürzer, lässt sich diese Signatur mit ausreichender Rechenleistung nachbilden, und die Prüfung verliert ihren Wert. Verwenden Sie 2048 Bit und rotieren Sie den Schlüssel regelmäßig.

DKIM ist das Glied, das einen Empfänger feststellen lässt, dass eine Nachricht wirklich von Ihrer Domain stammt und unterwegs nicht verändert wurde. Diese Gewissheit ruht vollständig auf dem Schlüssel, mit dem signiert wird. Ist dieser Schlüssel zu kurz, besteht die Prüfung zwar weiterhin, doch ihr Ergebnis wird unzuverlässig. Dieser Artikel erklärt, warum das so ist und wie Sie es bereinigen.

Was ist DKIM und wo sitzt der Schlüssel?

DomainKeys Identified Mail (DKIM) fügt jeder ausgehenden Nachricht eine digitale Signatur über den Inhalt und eine Reihe von Headern hinzu. Den zugehörigen öffentlichen Schlüssel veröffentlichen Sie im DNS Ihrer Domain, unter einem selbst gewählten Namen, dem Selector. Der empfangende Server ruft diesen Schlüssel ab und prüft damit die Signatur.

Von einem schwachen DKIM-Schlüssel spricht man, wenn der verwendete Schlüssel zu kurz ist, um diese Prüfung aussagekräftig zu machen. In der Praxis handelt es sich fast immer um einen RSA-Schlüssel von 1024 Bit, mitunter kürzer. Der Standard schreibt mindestens 1024 Bit vor und empfiehlt 2048; die gängige Norm sind inzwischen 2048.

Der Vergleich mit einem Siegel auf einem Brief passt hier gut. Das Siegel ist vorhanden, der Empfänger prüft es, und der Vorgang funktioniert wie vorgesehen. Nur ist das Siegel einfach genug geformt, dass jemand mit der passenden Ausrüstung eine Kopie anfertigen kann. Von diesem Moment an beweist das Siegel nichts mehr, während sich alle weiterhin darauf verlassen.

Wie prüft man die Länge des DKIM-Schlüssels?

Verwundbar:

sel1._domainkey.ihrefirma.de.  TXT  "v=DKIM1; k=rsa; p=MIGfMA0GCSqGSIb3DQEB..."

Die Länge des Schlüssels lässt sich aus dem veröffentlichten Wert ablesen. Ein Schlüssel, der mit MIGfMA0GCSqGSIb3DQEB beginnt und insgesamt rund 216 Zeichen zählt, ist ein RSA-Schlüssel von 1024 Bit. Ein 2048-Bit-Schlüssel beginnt mit MIIBIjANBgkqhkiG9w0B und ist etwa doppelt so lang.

Wird ein solcher Schlüssel gebrochen, kann ein Angreifer Nachrichten signieren, die Ihre DKIM-Prüfung bestehen. Das ist schwerwiegender als ein fehlendes DKIM, denn die Nachricht kommt dann nicht nur an, sondern wird aktiv als echt bestätigt und passiert damit auch Ihre DMARC-Richtlinie. Einem Empfänger, der alles korrekt prüft, wird mitgeteilt, dass die Nachricht in Ordnung ist.

Sicher:

# Neuer Schlüssel mit 2048 Bit, mit einem neuen Selector
openssl genrsa -out dkim-2026a.private 2048
openssl rsa -in dkim-2026a.private -pubout -outform PEM \
  | grep -v '^-----' | tr -d '\n'
; Der Eintrag wird aufgeteilt, da ein Textblock höchstens 255 Zeichen fasst
dkim2026a._domainkey.ihrefirma.de. TXT ( "v=DKIM1; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA"
                                          "7Xk2pQvR8xM1nZ0Yf1yqk8dK1vI0IuqC3dLm9Rt4Wp7Nx2Vb6Hs..." )

Der neue Schlüssel erhält bewusst einen eigenen Selector. Der Wechsel verläuft dadurch nahtlos: Sie veröffentlichen den neuen Schlüssel, stellen Ihren Mailserver auf die Signierung mit diesem Selector um und entfernen den alten erst, nachdem die letzten damit signierten Nachrichten zugestellt sind. Es gibt keinen Moment, in dem die Prüfung fehlschlägt.

Nehmen Sie das Rotieren danach in Ihre regelmäßige Wartung auf. Ein Selector, der das Datum im Namen trägt, macht auf einen Blick sichtbar, wie alt der Schlüssel ist.

Dieser Befund steht selten allein. Ein DKIM-Schlüssel mit 1024 Bit begleitet fast immer eine E-Mail-Konfiguration, die längere Zeit nicht überprüft wurde, häufig zusammen mit einem SPF-Eintrag auf Softfail und einer DMARC-Richtlinie, die noch auf none steht. Beurteilen Sie die drei im Zusammenhang.

Welche Auswirkungen hat ein schwacher DKIM-Schlüssel?

Der Schweregrad ist niedrig bis mittel. Anders als bei einer vollständig fehlenden E-Mail-Konfiguration gibt es hier keinen Angriff, der ohne Weiteres ausführbar wäre: Das Brechen des Schlüssels erfordert beträchtliche Rechenkapazität und damit einen Angreifer mit Mitteln und einem Beweggrund.

Gewicht erhält der Befund bei Organisationen, die ein attraktives Ziel für gezielten Betrug darstellen: Finanzdienstleister, Notariate, Organisationen, die große Zahlungen abwickeln. Dort steht der Aufwand, den ein Angreifer betreiben muss, im Verhältnis zu dem, was eine glaubwürdige, korrekt signierte E-Mail einbringen kann.

Bemerkenswert ist die Umkehrung, die dabei eintritt. Ohne DKIM lässt sich eine gefälschte Nachricht im günstigsten Fall erkennen. Mit einem gebrochenen DKIM-Schlüssel wird eine gefälschte Nachricht aktiv als echt bestätigt: Sie besteht die Signaturprüfung, passiert damit Ihre DMARC-Richtlinie und landet im Postfach des Empfängers als geprüfte Post Ihrer Domain. Die Maßnahme wirkt dann gegen Sie.

Wie spürt man einen schwachen DKIM-Schlüssel auf?

Die Prüfung besteht darin, den DKIM-Eintrag für den verwendeten Selector abzurufen und die Schlüssellänge zu bestimmen. Der Selector lässt sich aus dem DKIM-Signature-Header einer von der Organisation versendeten E-Mail ablesen; er steht dort im Feld s=.

Danach wird geprüft, ob mehrere Selectors im Einsatz sind und ob darunter alte, kurze Schlüssel sind, die nie aufgeräumt wurden. Auch Einträge für Dienste, die die Organisation nicht mehr nutzt, erhalten Aufmerksamkeit, denn ein bei einem früheren Lieferanten zurückgelassener Schlüssel ist ein Risiko für sich. Ferner wird beurteilt, welche Header signiert werden: Eine Signatur, die das From-Feld nicht abdeckt, bietet deutlich weniger, als es scheint. AssistSec beurteilt dies als Teil Ihrer E-Mail-Konfiguration insgesamt, denn die Stärke des Schlüssels erhält erst in Verbindung mit einem durchsetzenden SPF-Eintrag und einer auf Abweisen gestellten DMARC-Richtlinie Bedeutung.

Wie verhindert man einen schwachen DKIM-Schlüssel?

  • Verwenden Sie zum Signieren ausgehender E-Mails einen RSA-Schlüssel von mindestens 2048 Bit.
  • Teilen Sie den DNS-Eintrag in mehrere Textblöcke auf, wenn der Schlüssel nicht in einen passt.
  • Führen Sie einen Schlüsselwechsel mit einem neuen Selector durch, damit es keinen Moment gibt, in dem die Prüfung fehlschlägt.
  • Rotieren Sie den Schlüssel regelmäßig, etwa alle sechs bis zwölf Monate.
  • Entfernen Sie DKIM-Einträge von Selectors und Lieferanten, die Sie nicht mehr nutzen.
  • Sorgen Sie dafür, dass die Signatur mindestens das From-Feld und die wichtigsten Header abdeckt.
  • Bewahren Sie den privaten Schlüssel mit derselben Sorgfalt auf wie andere Geheimnisse, in einem Schlüsseltresor.
  • Beurteilen Sie DKIM zusammen mit Ihrer SPF- und DMARC-Konfiguration; die drei wirken nur als Ganzes.

Quellen

Häufige Fragen

Warum genügen 1024 Bit nicht mehr?

Weil das Brechen eines RSA-Schlüssels dieser Länge in Reichweite ernsthafter Rechenkapazität liegt. Für eine Signatur, die monatelang gültig bleibt, ist das ein reales Risiko. Der DKIM-Standard schreibt deshalb mindestens 1024 Bit vor und empfiehlt 2048; 2048 ist die praktische Norm.

Warum wählen Parteien dann dennoch 1024?

Meist aus einem praktischen Grund: Ein DNS-Eintrag mit einem 2048-Bit-Schlüssel passt nicht in einen Textblock von 255 Zeichen und muss aufgeteilt werden. Manche Verwaltungsoberflächen machten das umständlich, weshalb der kürzere Schlüssel der Weg des geringsten Widerstands war. Praktisch jeder DNS-Anbieter unterstützt das Aufteilen inzwischen.

Wie oft sollte ich den Schlüssel rotieren?

Alle sechs bis zwölf Monate ist üblich. Arbeiten Sie dafür mit mehreren Selectors: Veröffentlichen Sie den neuen Schlüssel, stellen Sie die Signierung um und entfernen Sie den alten erst, nachdem die letzten damit signierten Nachrichten zugestellt sind.

Was geschieht, wenn der Schlüssel gebrochen ist?

Dann kann jemand Nachrichten signieren, die Ihre DKIM-Prüfung bestehen, und damit auch Ihre DMARC-Richtlinie. Die E-Mail wirkt dann vollständig legitim, auch für einen Empfänger, der alles korrekt prüft. Genau das hätte die Signatur verhindern sollen.

Verwandte Artikel

Zum Suchen / drücken · Esc