Eine signierte Nachricht kann trotzdem Spam sein. Ihre Signierungsdomain kann sich auch von der Adresse unterscheiden, die dem Empfänger angezeigt wird.
Was deckt eine DKIM-Signatur ab?
Eine DKIM-Signatur schützt ausgewählte Header-Felder und einen Hash des Bodys.
Das h=-Tag listet die signierten Header-Felder auf. Das bh=-Tag enthält den Body-Hash. Der sendende Server erzeugt die Signatur mit seinem privaten Schlüssel. Empfänger verifizieren sie mit dem zugehörigen öffentlichen Schlüssel.
Ein Empfänger berechnet den Body-Hash neu. Er verifiziert außerdem die Signatur über die ausgewählten Header und den Signatur-Header, der diesen Hash enthält.
RFC 6376 verlangt die Signierung des From-Headers. Andere Header-Felder können unsigniert bleiben. Das Hinzufügen eines unsignierten Reply-To kann daher DKIM gültig lassen.
Wiederholte Header erfordern eine separate Behandlung. Der Signierer kann einen Header-Namen öfter auflisten, als er vorkommt, um das unbemerkte Hinzufügen eines weiteren Vorkommens zu verhindern.
Wo findet der Empfänger den öffentlichen Schlüssel?
Der Empfänger lokalisiert den öffentlichen Schlüssel anhand der Signierungsdomain und des Selektors, dem Namen, der diesen Schlüssel identifiziert. Das d=-Tag gibt die Domain an. Das s=-Tag gibt den Selektor an.
Für d=example.com und s=foo.bar lautet der Lookup-Name foo.bar._domainkey.example.com. Der Selektor ermöglicht verschiedene Schlüssel unter derselben Signierungsdomain.
Veröffentlichen Sie bei einer Rotation den neuen Schlüssel, bevor Sie damit signieren. Halten Sie den alten Verifizierungsschlüssel verfügbar, solange damit signierte Nachrichten noch unterwegs sind. Ein vorzeitiges Entfernen verhindert, dass Empfänger diese Nachrichten verifizieren können.
Warum können Formatierungsänderungen eine Signatur ungültig machen?
Kanonisierung, die vor Signierung und Verifizierung angewandte Normalisierung, bestimmt, welche Formatierungsänderungen DKIM toleriert.
Das c=-Tag wählt separate Algorithmen für Header und Body. In relaxed/relaxed verwenden beide die Relaxed-Normalisierung.
| Algorithmus | Header-Verhalten | Body-Verhalten |
|---|---|---|
simple | Bewahrt die Header-Formatierung | Ignoriert leere Zeilen am Ende |
relaxed | Normalisiert Groß-/Kleinschreibung, Faltung und Leerzeichen im Header-Namen | Normalisiert Leerzeichen und abschließende leere Zeilen |
Ein gefalteter Header wird in der nächsten Zeile fortgesetzt. Die Relaxed-Header-Verarbeitung toleriert diese Faltung. Die Simple-Verarbeitung kann fehlschlagen, nachdem ein Server denselben Header neu gefaltet hat.
Vergleichen Sie den signierten Inhalt vor und nach dem fehlschlagenden Relay, denn eine unsichtbare Formatierungsänderung kann das Ergebnis erklären.
Welche Signierungsalgorithmen unterstützt DKIM?
DKIM unterstützt die Signierungsalgorithmen RSA und Ed25519, beide kombiniert mit SHA-256.
RSA hat eine Mindestschlüssellänge von 1024 Bit gemäß RFC 8301. Kürzere Schlüssel bieten unzureichenden Schutz gegen Schlüsselkompromittierung.
Die empfohlene RSA-Größe beträgt mindestens 2048 Bit und bietet mehr Schutz gegen Schlüsselkompromittierung. Wählen Sie diese Größe, wenn Ihr Signiersystem sie unterstützt. Die Spezifikation verbietet rsa-sha1 für Signierung und Verifizierung.
RFC 8463 ergänzt ed25519-sha256. Eine Nachricht kann sowohl RSA- als auch Ed25519-Signaturen tragen, um Kompatibilität mit Empfängern zu gewährleisten, die unterschiedliche Algorithmen unterstützen.
Yahoos Leitfaden verlangt ebenfalls einen DKIM-Schlüssel mit mindestens 1024 Bit.
Was passiert, wenn eine Mailingliste die Nachricht bearbeitet?
Eine Bearbeitung kann DKIM ungültig machen, wenn sie von der Signatur abgedeckte Inhalte ändert.
Weiterleitung allein ändert den signierten Inhalt nicht. Eine intakte Signatur kann sie überstehen. Ein angehängter Footer kann den Body-Hash verändern. Ein umgeschriebener signierter Subject-Header kann die Header-Signatur ungültig machen.
Das optionale l=-Tag begrenzt die Body-Abdeckung auf eine angegebene Anzahl von Bytes. Mit l=100 ist Inhalt nach den ersten 100 normalisierten Bytes ungeschützt. Das Anhängen irreführenden Texts kann die Signatur daher gültig lassen.
Vermeiden Sie dieses Limit, wenn Sie den gesamten Body schützen müssen. ARC ermöglicht Vermittlern, signierte Authentifizierungsnachweise vor ihren Bearbeitungen zu bewahren.
Wie konfigurieren Sie DKIM mit Bird?
Sie veröffentlichen den DKIM-Eintrag, der bei der Registrierung Ihrer Sendedomain zurückgegeben wird.
Das dkim.mode-Feld von API hat den Standardwert txt. In diesem Modus veröffentlichen Sie den öffentlichen Schlüssel in einem TXT-Eintrag. Das Schema listet außerdem delegated auf. Dieser Wert gibt HTTP 422 zurück, wenn Sie eine Sendedomain registrieren, verwenden Sie also txt.
Bird erstellt einen separaten Schlüssel und Selektor für jede Organisation, die eine Sendedomain nutzt. Organisationen, die dieselbe Domain verwenden, müssen keinen Signierschlüssel teilen.
Der Authentifizierungsleitfaden erklärt den zurückgegebenen Eintrag.
Beweist eine bestandene Signatur, dass die Nachricht sicher ist?
Eine bestandene Signatur stellt die Verantwortlichkeit für den signierten Inhalt fest. Sie stellt nicht fest, ob die Nachricht erwünscht oder vertrauenswürdig ist.
Sie verlangt auch nicht, dass die Signierungsdomain mit der sichtbaren From-Domain übereinstimmt. DMARC liefert diese Übereinstimmungsregel durch Alignment. Sender-Reputation, die Bewertung des Datenverkehrs eines Absenders durch den Empfänger, bleibt eine separate Betrachtung.
Kurz gesagt
Nur ausgewählte Inhalte sind geschützt.
DKIM deckt die aufgelisteten Header-Felder und einen Body-Hash ab. Ungeschützte Inhalte können sich ändern, ohne die Signatur ungültig zu machen.
Selektoren lokalisieren Verifizierungsschlüssel.
Der Selektor und die Signierungsdomain identifizieren den DNS-Eintrag, der den öffentlichen Schlüssel enthält.
Normalisierung beeinflusst die Verifizierung.
Die Algorithmen Simple und Relaxed behandeln Formatierungsänderungen unterschiedlich.
Weiterleitung garantiert kein Bestehen.
Eine intakte Signatur kann die Weiterleitung überstehen, aber Änderungen am signierten Inhalt können sie ungültig machen.