So findet DKIM den Schlüssel
Eine DKIM-Signatur in einer Nachricht nennt eine Domain (d=) und einen Selektor (s=). Der Empfänger setzt daraus selector._domainkey.domain zusammen, liest dort den TXT-Record und verwendet den öffentlichen Schlüssel im Tag p=, um die Signatur zu verifizieren. Eine Domain kann beliebig viele Selektoren veröffentlichen. Dadurch kann jeder Versanddienst einen eigenen Schlüssel verwenden, und Schlüssel lassen sich ohne Ausfallzeit austauschen.
Die Prüfung benötigt den Selektor, da DNS keine Möglichkeit bietet, die Selektoren einer Domain aufzulisten. Es gibt nichts zu durchsuchen. Der Selektor stammt aus der Signatur einer echten Nachricht.
Wann ein Schlüssel schwach oder fehlerhaft ist
RFC 8301 schreibt vor, dass RSA-Schlüssel mindestens 1024 Bit lang sein müssen und 2048 Bit lang sein sollten. Ein Prüfer darf einen kürzeren Schlüssel ignorieren, und unser Prüfer tut das. Daher zählt ein 512-Bit-Schlüssel so, als wäre überhaupt keine Signatur vorhanden. Ed25519-Schlüssel (RFC 8463) sind absichtlich kurz und sicher, aber noch nicht jeder Empfänger prüft sie. Deshalb werden sie normalerweise zusätzlich zu einem RSA-Schlüssel veröffentlicht und nicht an dessen Stelle.
Der Prüfer dekodiert den Schlüssel vollständig, denn ein Record, der fehlerhaft auf mehrere TXT-Strings verteilt ist, oder base64, das sich nicht dekodieren lässt, ergibt einen Schlüssel, den kein Empfänger verwenden kann. Ein leeres p= bedeutet, dass der Schlüssel absichtlich widerrufen wurde. t=y kennzeichnet eine Domain, die noch getestet wird, und RFC 6376 §3.6.1 weist Prüfer an, ihre E-Mails genauso wie unsignierte E-Mails zu behandeln.
Fragen
Wie finde ich meinen DKIM-Selektor und ist DKIM überhaupt aktiviert?
Senden Sie sich selbst eine Nachricht und öffnen Sie die Header der empfangenen Kopie. Ein DKIM-Signature-Header bedeutet, dass die Nachricht signiert wurde: Der Selektor ist der Wert von s= und die Domain steht unter d=. Fehlt dieser Header, signiert der verwendete Versanddienst nicht. Jeder Versanddienst signiert mit einem eigenen Selektor. Daher können ein Newsletter und eine Nachricht aus Ihrem Postfach unterschiedliche Selektoren haben.
Der Schlüssel ist in Ordnung, aber DKIM schlägt mit „body hash did not verify“ fehl. Warum?
Normalerweise wurde die Nachricht nach dem Signieren verändert, zum Beispiel durch eine von einer Mailingliste hinzugefügte Fußzeile oder einen von einem Sicherheits-Gateway umgeschriebenen Link. Der Schlüssel kann nur bestätigen, was signiert wurde. Der vollständige Test zeigt das tatsächliche Prüfergebnis für Ihre Nachricht.
Vollständige Anleitung: DKIM fail
DKIM-Schlüssellänge: 1024 oder 2048 Bit?
Ein 1024-Bit-Schlüssel wird überall verifiziert und ist laut RFC 8301 zulässig. Er entspricht jedoch nur dem Minimum. Wechseln Sie daher bei der nächsten Schlüsselrotation zu 2048 Bit.
Kann eine Domain mehr als einen DKIM-Record haben?
Ja, einen pro Selektor. Viele Domains haben mehrere: einen für den Postfachanbieter und jeweils einen für jeden Newsletter- oder Abrechnungsdienst. Prüfen Sie sie einzeln. Wenn ein Schlüssel aus DNS gelöscht wurde, schlägt jede weiterhin damit signierte Nachricht fehl.
Wie oft sollte ich DKIM-Schlüssel rotieren?
M3AAWG empfiehlt eine Rotation mindestens alle sechs Monate und sofort, wenn ein privater Schlüssel möglicherweise offengelegt wurde. Veröffentlichen Sie den neuen Schlüssel unter einem neuen Selector, stellen Sie die Signierung darauf um und löschen Sie den alten Record erst, wenn keine mit dem alten Schlüssel signierten E-Mails mehr eingehen. Absender versuchen die Zustellung vier bis fünf Tage lang erneut, warten Sie daher etwa eine Woche.