Re: [ietf-dkim] [dmarc-ietf] a slightly less kludge alternative to draft-kucherawy-dmarc-rcpts

Michael Storz <Michael.Storz@lrz.de> Tue, 22 November 2016 15:47 UTC

Return-Path: <ietf-dkim-bounces@mipassoc.org>
X-Original-To: ietfarch-ietf-dkim-archive@ietfa.amsl.com
Delivered-To: ietfarch-ietf-dkim-archive@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 2D90F1294B8 for <ietfarch-ietf-dkim-archive@ietfa.amsl.com>; Tue, 22 Nov 2016 07:47:08 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.791
X-Spam-Level:
X-Spam-Status: No, score=-1.791 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001, T_DKIM_INVALID=0.01] autolearn=no autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=fail (2048-bit key) reason="fail (message has been altered)" header.d=lrz.de
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id TqBgFt_csONu for <ietfarch-ietf-dkim-archive@ietfa.amsl.com>; Tue, 22 Nov 2016 07:47:06 -0800 (PST)
Received: from simon.songbird.com (simon.songbird.com [72.52.113.5]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 50EF2129476 for <ietf-dkim-archive@ietf.org>; Tue, 22 Nov 2016 07:47:06 -0800 (PST)
Received: from simon.songbird.com (simon.songbird.com [127.0.0.1]) by simon.songbird.com (8.14.4/8.14.4/Debian-4.1ubuntu1) with ESMTP id uAMFl1mL014291; Tue, 22 Nov 2016 07:47:03 -0800
Authentication-Results: simon.songbird.com; dkim=fail reason="verification failed; unprotected key" header.d=lrz.de header.i=@lrz.de header.b=QdWNuv0u; dkim-adsp=none (unprotected policy); dkim-atps=neutral
Received: from postout2.mail.lrz.de (postout2.mail.lrz.de [129.187.255.138]) by simon.songbird.com (8.14.4/8.14.4/Debian-4.1ubuntu1) with ESMTP id uAMFkui3014282 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT) for <ietf-dkim@mipassoc.org>; Tue, 22 Nov 2016 07:46:58 -0800
Received: from lxmhs52.srv.lrz.de (localhost [127.0.0.1]) by postout2.mail.lrz.de (Postfix) with ESMTP id 3tNVDh5qnwzykw for <ietf-dkim@mipassoc.org>; Tue, 22 Nov 2016 16:45:56 +0100 (CET)
Authentication-Results: postout.lrz.de (amavisd-new); dkim=pass (2048-bit key) reason="pass (just generated, assumed good)" header.d=lrz.de
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=lrz.de; h= user-agent:message-id:references:in-reply-to:subject:subject :from:from:date:date:content-transfer-encoding:content-type :content-type:mime-version:received:received:received; s= postout; t=1479829556; bh=XgFE30I5RslPPruBaWbdp81waT1iTVcLxAstaJ 7SGTs=; b=QdWNuv0uRyy8qtrbJvuFQ8Ni1KbJ8C2j7gE4hfVxiPKI+d0DJF/9MK 0oDbRUEiAR93lMETcjkJbQhOknoez3sEUnSWI1uMuWf+ekaOkpXV9QAdI1Bq2GgB R62mK3x12RFvY1V6OGz6HzzAx9cKwwiErZjJJ0gmVeA27FQBdgfTaZIeetzedosr 0Bg/UbvzTFfctrAxGx2usUUcoqSiSUkPuBmRrologHNOw+tsSGbgn0241g+2Idt3 Ecd1PNS8TIjkanwFV5pxBPTqVQuXKg+9FWSu+EC4W58HNqa7WhLxLnte3FagR9Ox v8/4fOgcvS3Zlv/JcJQdcwPGltkJLKTg==
X-Virus-Scanned: by amavisd-new at lrz.de in lxmhs52.srv.lrz.de
Received: from postout2.mail.lrz.de ([127.0.0.1]) by lxmhs52.srv.lrz.de (lxmhs52.srv.lrz.de [127.0.0.1]) (amavisd-new, port 20024) with LMTP id R4mFvwUeRhbH for <ietf-dkim@mipassoc.org>; Tue, 22 Nov 2016 16:45:56 +0100 (CET)
Received: from roundcube.lrz.de (roundcube.lrz.de [IPv6:2001:4ca0:0:103::81bb:ff93]) (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by postout2.mail.lrz.de (Postfix) with ESMTPSA id 3tNVDh0F9bzyks for <ietf-dkim@mipassoc.org>; Tue, 22 Nov 2016 16:45:56 +0100 (CET)
Received: from 2001:4ca0:0:f000:e18f:9aec:57b:6ef9 by roundcube.lrz.de with HTTP (HTTP/1.1 POST); Tue, 22 Nov 2016 16:45:55 +0100
MIME-Version: 1.0
Date: Tue, 22 Nov 2016 16:45:55 +0100
From: Michael Storz <Michael.Storz@lrz.de>
To: Ietf Dkim <ietf-dkim@mipassoc.org>
In-Reply-To: <CAL0qLwb4SDWk0K+iLppnA5L66dac1s4JjEUwF5-Te2ba+JkHCg@mail.gmail.com>
References: <alpine.OSX.2.11.1611142158000.21738@ary.local> <01Q7ASDZFS6C011WUX@mauve.mrochek.com> <CAL0qLwazAg2UJvGAr+nx8R_xEbc4xV0ttPEWFKUD69u6xXaMhA@mail.gmail.com> <CAL0qLwaMzy=qeW5XYZ_txPaiYE27Oof+C5V1uRANvv-_cayOcQ@mail.gmail.com> <CY1PR00MB0107389F8FE73F140849A19996BE0@CY1PR00MB0107.namprd00.prod.outlook.com> <2736ea21-69e6-83b1-3b59-377c032290b5@dcrocker.net> <CY1PR00MB01072F4EB32969888104C45196BE0@CY1PR00MB0107.namprd00.prod.outlook.com> <CAL0qLwbdNVwT-xiCmxyhSqKcp4-hCA1COHKh0wdYrYEekzZ=XA@mail.gmail.com> <3009defcc6dc9043823618dbc338460d@xmail.mwn.de> <CAL0qLwbvqABZGsm2Hp20y8wgvQTKvPn+EBKiS37eMrp+9NemjA@mail.gmail.com> <da2e49df90980fe460d1effd7734ef42@xmail.mwn.de> <CAL0qLwbA6Vjqpi5hGOtbpLV9FwgDO3VVA=Q5GgAU9F0qOsQCNQ@mail.gmail.com> <63a2bfc52a81eb569a0af5e1699390d9@xmail.mwn.de> <CAL0qLwZ42=GFDRm7H0qQ_7bczY8CPQaEuSUfgFEbO_Y5+5YvqA@mail.gmail.com> <b92d042d6be905ffd4bc43ea510571c2@xmail.mwn.de> <CAL0qLwb4SDWk0K+iLppnA5L66dac1s4JjEUwF5-Te2ba+JkHCg@mail.gmail.com>
Message-ID: <ddedacca04d4114472b70e13528081ae@xmail.mwn.de>
X-Sender: Michael.Storz@lrz.de
User-Agent: Roundcube Webmail/1.2.0
Subject: Re: [ietf-dkim] [dmarc-ietf] a slightly less kludge alternative to draft-kucherawy-dmarc-rcpts
X-BeenThere: ietf-dkim@mipassoc.org
X-Mailman-Version: 2.1.16
Precedence: list
List-Id: IETF DKIM Discussion List <ietf-dkim.mipassoc.org>
List-Unsubscribe: <http://mipassoc.org/mailman/options/ietf-dkim>, <mailto:ietf-dkim-request@mipassoc.org?subject=unsubscribe>
List-Archive: <http://mipassoc.org/pipermail/ietf-dkim/>
List-Post: <mailto:ietf-dkim@mipassoc.org>
List-Help: <mailto:ietf-dkim-request@mipassoc.org?subject=help>
List-Subscribe: <http://mipassoc.org/mailman/listinfo/ietf-dkim>, <mailto:ietf-dkim-request@mipassoc.org?subject=subscribe>
Content-Transfer-Encoding: base64
Content-Type: text/plain; charset="utf-8"; Format="flowed"
Errors-To: ietf-dkim-bounces@mipassoc.org
Sender: ietf-dkim <ietf-dkim-bounces@mipassoc.org>

Am 2016-11-18 22:53, schrieb Murray S. Kucherawy:
> On Fri, Nov 18, 2016 at 3:47 AM, Michael Storz <Michael.Storz@lrz.de>
> wrote:
> 
>> Normal DKIM-Signatures give us a way to check if the body and/or
>> header of an email has been changed on the way from the signer to
>> the verifier. The new extension extends this to the recipients of
>> the email. A change means the email was either relayed (now indirect
>> mail) or replayed. I think this is a new valuable information for an
>> anti-spam-system. However, we have not discussed how this gets
>> propagated from the verifier to the consumer of the information.
> 
> That's certainly possible to do if it's useful.  The pseudo-API
> described by RFC6376 is vague; it just says the signature has to fail.
>  Whatever reporting mechanism you want to provide in an actual
> implementation is fine as long as it complies just to that.  A
> specific error code, or sub-code (a la enhanced status codes) is
> certainly a valid choice.  OpenDKIM has a large number of them.

I meant how the Authentication-Results header field would be changed to 
transport the result of this extension.

> 
>> The negative side of the proposal is the requirement to split all
>> multi-recipient-emails to single-recipient-emails, which is a show
>> stopper for me.
> 
> That's curious; why?

Because SMTP is defined as a multi-recipient transport. If this 
extension would require a mandatory split of every message, then this 
has to be discussed at IETF-SMTP because the semantics of SMTP are 
changed. It is a big difference if the implementation of a mta decides 
to split all messages on arrival or if some ISPs decide to send only 
singe-recipient emails, or if a protocol extension requires mandatory 
splitting.

If a sender splits all emails because of some local advantage the sender 
forces the receiver to waist a lot of ressources for nothing. Instead of 
one message going through anti-spam several messages must be processed. 
For example, we are runnig amavisd+spamassassin in pre-queue mode to be 
able to reject spam on arrival (legal reasons). Splitting means we have 
to provide more ressources for parallel connections and/or to limit the 
number of connections per ip address or network which results in delayed 
messages.

> 
>> But I don't think this requirement is needed. I would allow a list
>> of recipients and have a paragraph which states:
> 
>> ===
>> Every compliant implementation of this extension MUST check if the
>> signing of the message as is would result in the leakage of hidden
>> BCC recipients. The check has to be done in the following way:
>> 
>> - Collect the set of visible recipients from the header fields
>> 
>> * From
>> * Sender
>> * Reply-To
>> * To
>> * CC
>> * Resent-From
>> * Resent-Sender
>> * Resent-To
>> * Resent-CC
>> 
>> - For each address from the set of envelope recipients check if the
>> address is included in the set of visible recipients.
>> 
>> If not, then either
>> 
>> * refuse to sign with this extension or
>> * split the message and sign and send a single-recipient-copy of
>> the message with this recipient
> 
> We discussed the idea of tying it directly to To and Cc.  The downside
> of doing so is that participating DKIM implementations would have to
> know the syntax and semantics of RFC5322 header fields; right now it
> needs only very basic syntax information about them, just enough to
> run canonicalization.  It adds a whole lot of code complexity we'd
> rather avoid.  On top of that, if someone were to later register some
> other sender or recipient header field that should be included in this
> list, we'd have to update everything on the DKIM side by updating this
> list.
> 

I don't buy this argument. I would assume that every program which 
manipulates an email will use a library for this. Normally such a 
library will have a function call to extract the addresses from a header 
field. Using libopendkim you would use

**  DKIM_MAIL_PARSE_MULTI -- extract the local-part and hostname from a 
mail
**                           header field that might contain multiple
**                           values, e.g. "To:", "Cc:"

(BTW, the files dkim_mail_parse_multi.html as well as 
dkim_sig_setdnssec.html are missing in the distribution of OpenDKIM.)

How high is the probability that a new sender or recipient header field 
will be registered? And even if that's the case, that's not a big 
problem. The program would treat the addresses as BCCs until the 
administrator changes the config to use the additional field or an 
update of the program would incorporate this field.

> Simplicity is very desirable here, as is reaching across the layer
> boundary as little as possible.
> 
>> ===
>> 
>> If the submission MTA already enforces the handling of bcc
>> recipients as described in
>> https://tools.ietf.org/search/rfc5322#section-3.6.3 [1] the signing
>> can always be done.
> 
> This sort of thing might work if you also specify the way both ends
> will process this symmetrically.  Any ambiguity will result in
> interoperability problems.
> 

Sure, the algorithm has to be used on both sides otherwise it would make 
no sense.

>> Depending on an underlying policy from the administrator the "refuse
>> to sign with this extension" could mean
>> 
>> - to sign without the extension
>> - wave the message through without signing
>> - to reject the message with an error like "Configuration error:
>> DKIM signing this message would leak BCC recipients"
> 
> These are purely implementation policy choices.  At best a
> specification like this one would lay them out as options in a
> non-normative way.

My specification part ended at '===' These examples should only show 
that more than one implementation is possible for the requirement 
"refuse to sign with this extension".

> 
>> This check and the resulting split action is RFC 5322 compliant.
>> However it would need to use the second variant of the bcc handling
>> with the single-bcc-recipient-email.
>> 
>> In this multi-recipient scenario the hashing of the recipient makes
>> sense. It protects against passive attacks (just looking at the
>> header) but not against active attacks.
>> 
>> How about this?
> 
> It's worth considering further if we were to become convinced that
> this is a problem that needs to be solved in the form of changes to
> DKIM.  Right now I think we should wait for operators to explain why
> going down any of these paths is the best option.  My main worry is
> that it seems to invite a lot of complexity in code and either
> solution would introduce a lot of complexity into the problem space,
> possibly more than they really would solve.
> 

Sure, it must be evaluated, if this extension will give us enough value 
which would justify the additional costs of the implementation.

> -MSK
> 
> 
> 
> Links:
> ------
> [1] https://tools.ietf.org/search/rfc5322#section-3.6.3

Michael
_______________________________________________
NOTE WELL: This list operates according to
http://mipassoc.org/dkim/ietf-list-rules.html