ARC - Authenticated Received Chain

Der DMARC-Check beim Empfänger kann nur dann sinnvoll eingesetzt werden, wenn entweder der Absender direkt beim Empfänger einliefert (SPF) oder die Mail bei mehreren Zwischenstationen mit Weiterleitungen unverändert bleibt (DKIM). Zwischenstationen, die Mails modifizieren, können nun ARC benutzen, um dem Empfänger mit ARC-Signaturen kryptografisch gesichert mitzuteilen, wie der Stand von SPF, DKIM und DMARC beim Empfang der Mail ausgesehen hat.

Der Empfänger kann nun diese ARC-Signaturen auswerten und entscheiden, ob er die ursprünglichen SPF-, DKIM- und DMARC-Checkergebnisse der Zwischenstation zur Bewertung heranzieht oder auch nicht.

Problem:

Eine Zwischenstation kann mit ARC-Signaturen beliebig behaupten, sie hätte Checks beim Eingang durchgeführt und damit auch beliebige Absender fälschen.
 

Konsequenzen:

Einsatz-Szenarien

Best Practices für das Weiterleiten von Emails

Vorgang der ARC-Signierung

Für ARC kommt derselbe Signatur-Algorithmus zum Einsatz wie bei DKIM und man veröffentlicht ebenfalls domainkey-DNS-Records. Im Prinzip könnte man auch dasselbe Keypaar verwenden wie für DKIM-Signaturen.

1. Der Mailserver checkt eingehend auf SPF/DKIM/DMARC/ARC und schreibt die Ergebnisse in einen Header namens Authentication-Results:

            Authentication-Results: mgw6-han.srv.dfn.de (amavisd-new);
    dkim=fail (1024-bit key) reason="fail (message has been altered)"
    header.d=redhat.com
        

2. Sobald die Mail weitergeleitet wird, kommt ARC ins Spiel. Der Authentication-Results-Header wird gelöscht und der Inhalt in einen ARC-Authentication-Results-Header übernommen:

            ARC-Authentication-Results: i=1; mx.microsoft.com; spf=pass
    smtp.mailfrom=oracle.com; dmarc=pass action=none header.from=oracle.com;
    dkim=pass header.d=oracle.com; arc=none


        

3. Danach wird eine DKIM-analoge Signatur über die Mail ohne ARC-Header erzeugt und in den ARC-Message-Signature-Header geschrieben:

            ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
    s=arcselector9901;
    h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
    bh=gF9w4nOveA6VSvDyJ9Psfb3QHGTx5bOFK8qBgFuKb78=
    b=H/5v1PF2BD5g7rYHNwcUjrv2ZhbOzmIa71O2jlqX77vqVpYj8V03H4OykBreZayjUkH1XRTj1hdJLBpm63V57f4q+F34+OkiOH0Q7NbCiPXqGx1/zZAMhh71c0unZH8Z7zKaVFOF4pPIczy8gvX1M/zKOfxzT3pTc+BcY1dBjAFVbyNqiHV/Cfl+pjfd0R1MaJMNvlZwPHJPuiMz+BLhInCsHr6DHmZhMPAZZrVBvtYcS7BrtxkzQhK2tgrg02UqfICG477zEYvu6j6Kpffb8dZjW+RbsrFgPC/UDJD/nlyPl+FKaLcbHysmcarpQTC+9pn5+RrEbOtJd2LHD0nOhQ==
        

4. Schließlich werden alle ARC-Header signiert und die Signatur in den ARC-Seal-Header geschrieben:

            ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
    b=d10tTQZdafaYRf4eYzK5JXuRZ8XAhHXwzXBMrCwMCEWLNl+6eBdMj9L6WzYJzAm+TQivD/IFXZnMKbrDLZfFfXwtkH1AKbDamwIi+syoC3Bnsg1ufn6FTqudVEB7w6g9xK/trOQIs7VNJfkI8k78gi7UMKDZJVVb3Tin/irQ3qszZIVcElN04Z1Arqjl09b2FpzdGKfTurqg4AoDZL38NMpe+tmhzrLspSM3SnGWZV4A0QjYK/2WbQ89PQk/ok2uQmFNWXp/AkeG/uR9hzSfqLPO4aZm8KKvlzhgH0Clmt/1zEJ49NFHY5myXsCy8xV0Fr4UH6dDKo99DF+krheEug==
        

5. Geht die Mail durch einen weiteren Hop, kann dieser Server die Prozedur wiederholen und einen weiteren Satz ARC-Header einfügen. Die Sätze werden durch den enthaltenen i= Parameter unterschieden.

Verifikation der ARC-Signaturen

Die ARC-Sätze werden anhand des i-Parameters vom neuesten zum ältesten validiert. Nur wenn alle Sätze gültig sind, gilt die Validierung als bestanden.

Interpretation der Authentication-Results-Header

Der Inhalt der Authentication-Results-Header kann recht vielfältig ausfallen, wir verweisen hier auf die Literatur:

ARC im DFN-MailSupport

ARC-Signaturen werden vom Spamassassin durch das DKIM-Plugin geprüft und je nach Ergebnis folgende Hits in den X-Spam-Report-Header bzw. in die Amavis-Syslogzeile geschrieben:
 

Hit Score Bedeutung
ARC_SIGNED 0.001 Es sind ARC-Signaturen in der Mail enthalten
ARC_VALID -0.1 Die Arc-Signaturen sind gültig
ARC_INVALID 0.1 Die ARC-Signaturen sind ungültig

Eine weitergehende Interpretation der ARC-Authentication-Results:-Header-Inhalte ist vorerst nicht vorgesehen.