Wer einen Mailserver betreibt, sollte heutzutage unbedingt auch DKIM signieren. Der übliche RSA Standard erzeugt mit zunehmender Bitlänge sehr unhandlich große Keys, zudem definiert RFC6376 nur eine Keylänge von 512-2048 bit als Standard (https://tools.ietf.org/html/rfc6376).
Abhilfe kann ED25519 schaffen: ohne auf die technischen Details an dieser Stelle eingehen zu wollen: der Algorithmus erzeugt deutlich kürzere Keys, ohne Einbußen in Punkto Sicherheit zu erfordern. Er wird als fortschrittlichster verfügbarer Algorithmus beschrieben (u.A. https://medium.com/risan/upgrade-your-ssh-key-to-ed25519-c6e8d60d3c54).
Einziger Nachteil: die Verbreitung
Da momentan viele Mailboxprovider noch ausschließlich auf RSA setzen, ist es nicht ratsam, den Algorithmus einfach nur auszutauschen und nur auf ED25519 zu setzen. Aber: RSA und ED25519 lassen sich mittels double-Signing parallel verwenden.
Wenn ihr Postfix und rspamd benutzt, zeige ich Euch im folgenden, wie ihr es konfiguriert und aktiviert.
ED25519 Key erzeugen
Zunächst erstellt ihr den Key mit dem rspamd-eigenen Befehl (siehe https://rspamd.com/doc/modules/dkim_signing.html):
rspamadm dkim_keygen -s 'oct22ed' -d bodici.de -t ed25519 -k oct22ed.key > oct22ed.txt
Der Key wird im aktuellen Verzeichnis erzeugt. Der Defaultpfad für die rspamd Keys ist:
/var/lib/rspamd/dkim/
Es empfiehlt sich also, die Keys dort zu erzeugen oder dort hin zu verschieben.
Im oben genannten Beispiel wähle ich den Selektor „oct22ed“. Somit kodiere ich sowohl das Erstelldatum als auch den Typ (ed) direkt im Key. Das ist für die spätere Wartung sehr praktisch.
Der Befehl erzeugt 2 Dateien:
- oct22ed.key ist der private key, der NIEMALS weitergegeben werden sollte. Er ist ausschließlich zum signieren ausgehender Nachrichten durch Euren rspamd gedacht.
- oct22ed.txt beinhaltet den kompletten DNS Eintrag mit public key, eignet sich also durchaus auch gut zum automatisieren
RSA Key erzeugen (wenn nicht bereits vorhanden)
Vermutlich habt ihr bereits einen RSA-Key. Falls noch nicht, läßt sich das schnell mit dem folgenden Befehl erledigen. Im Beispiel erzeuge ich einen 2048 bit key:
rspamadm dkim_keygen -s 'nov22rsa' -b 2048 -d bodici.de -k nov22rsa.key > nov22rsa.txt
Erforderliche DNS Einträge setzen
Wir erzeugen nun an der Stelle <Selektor>._domainkey jeweils einen DNS Eintrag vom Typ TXT mit dem öffentlichen Teil des Schlüssels:
oct22ed._domainkey.bodici.de. 3600 IN TXT "v=DKIM1; k=ed25519; p=9jM5LNke1LqNRe8O0vffMSPS6rTgZi1U+3XYAAHaSMs="
nov22rsa._domainkey.bodici.de. 3600 IN TXT "v=DKIM1; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAn9FAps+hosNIUxqoExPpoum6Ps4CoqPW13vmRLkJTaahYkhjoczyKSjRiAiQw3LmbTiPKWAVB0MD4vIHVrSsWKjGR3ESKrYvHS/5mAdSYLxcqCykfp6Fbt6zHtx75aOckSM9c0Q/yBeGFG5HZUKnQ5y6WjXjXNkoiLFTlMMfYS0F9loK4OCaWq5aNkbZFqQO22cAVIUp66xS3hCPcebF3Pgar3d8qqEM4yoclVgvNF4bNZhf/LDuOVTDRLBnLiY1lW6oi9FmiDa/08sopPapCrBF6ZFnWfojymcekIrlwZl7jXkvpneTz/jCKJHYuySGhpShsl6lA1C7b4KX6NAFtQIDAQAB"
Man sieht deutlich, wie viel kürzer der Ed25519-Eintrag gegenüber dem RSA Eintrag ist.
rspamd konfigurieren
Als ich nur einen Key verwendet habe, konnte ich eine bequeme selector_map verwenden, um Domains und Keys zuzuordnen. Beim Double-Signing bleibt und diese Option verwehrt. Wir müssen also in die
/etc/rspamd/local.d/dkim_signing.conf
gehen, und dort jede Domain wie folgt eingeben:
domain {
bodici.de {
selectors [
{
path: "/var/lib/rspamd/dkim/nov22rsa.key";
selector: "nov22rsa";
},
{
path: "/var/lib/rspamd/dkim/oct22ed.key";
selector: "oct22ed";
}
]
}, [..weitere Domains..]
}
Sobald dies erfolgt ist, testen wir die Konfiguration:
# rspamadm configtest
syntax OK
und starten den Service neu:
# systemctl reload rspamd.service
Hello World Email
Nun senden wir eine Testmail:
Leider ist das Resultat bei allen großen Providern Stand heute noch dasselbe: Der Key wird im Header angezeigt, aber die Validierung gelingt nur bei dem RSA Key:
Und nun?
Implementiert ED25519! Je mehr Leute es nutzen und anbieten, umso höher wird auch das Interesse der Gegenseite, entsprechende Checks für ED25519 zu implementieren.
Wann die ersten Mailboxprovider ED25519 DKIM Signaturen unterstützen werden läßt sich aktuell noch nicht genau vorhersehen. Im Bereich privater Server hingegen gibt es durchaus bereits einige Implementierungen, wie z.B. auch unser guter, alter Freund rspamd.