Re: [dmarc-ietf] WGLC ARC-16 concern on Section 5.1.2 - cv=fail should sign greedily

Hector Santos <hsantos@isdg.net> Mon, 20 August 2018 14:03 UTC

Return-Path: <hsantos@isdg.net>
X-Original-To: dmarc@ietfa.amsl.com
Delivered-To: dmarc@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id CE27A130E41 for <dmarc@ietfa.amsl.com>; Mon, 20 Aug 2018 07:03:03 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.001
X-Spam-Level:
X-Spam-Status: No, score=-2.001 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, SPF_PASS=-0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (1024-bit key) header.d=isdg.net header.b=jvrlJcCg; dkim=pass (1024-bit key) header.d=beta.winserver.com header.b=z0J2qvEb
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 I1S5Tql6X0_y for <dmarc@ietfa.amsl.com>; Mon, 20 Aug 2018 07:03:00 -0700 (PDT)
Received: from mail.santronics.com (groups.winserver.com [76.245.57.69]) by ietfa.amsl.com (Postfix) with ESMTP id A6845126BED for <dmarc@ietf.org>; Mon, 20 Aug 2018 07:02:59 -0700 (PDT)
DKIM-Signature: v=1; d=isdg.net; s=tms1; a=rsa-sha1; c=simple/relaxed; l=6824; t=1534773772; atps=ietf.org; atpsh=sha1; h=Received:Received:Received:Received:Message-ID:Date:From: Organization:To:Subject:List-ID; bh=2dxg8QDPpS/zn+3+uvtAWqrnNJk=; b=jvrlJcCg1D3aEqO6GfEfPYj4nsx6uoOHK19YckTXHjkZdcx/cQU2vWSKeCZuR9 oiBlM71UkTMAR0P15Dw2K6QbcwF/GQ4vKHYUY2DlFoVGkvC2ekPRZyuck+jVRaKR QdgtW9kQXto4+ojOGj8vWewQs00D0Vd30zPwiAJD/Bf8E=
Received: by winserver.com (Wildcat! SMTP Router v7.0.454.6) for dmarc@ietf.org; Mon, 20 Aug 2018 10:02:52 -0400
Authentication-Results: dkim.winserver.com; dkim=pass header.d=beta.winserver.com header.s=tms1 header.i=beta.winserver.com; adsp=pass policy=all author.d=isdg.net asl.d=beta.winserver.com;
Received: from beta.winserver.com ([76.245.57.74]) by winserver.com (Wildcat! SMTP v7.0.454.6) with ESMTP id 3167402158.1.7328; Mon, 20 Aug 2018 10:02:51 -0400
DKIM-Signature: v=1; d=beta.winserver.com; s=tms1; a=rsa-sha256; c=simple/relaxed; l=6824; t=1534773115; h=Received:Received: Message-ID:Date:From:Organization:To:Subject:List-ID; bh=ZWfJRxT dddaRyFDO87MSHD9tajBbtLtfrFtPhZrUIPk=; b=z0J2qvEbb7MvueK2e7ph+BB ikkmIMsgn3JSgBmWqKxkUjhYrYSrehSP6WrhFN9nm55qi5y0gHYlnNs+wkjoV6K5 JHJQIP3JXw92IVKcDgyrKw3QdsUt+ugpARSpby9p509h5ipNzDbX6tA3QFJ3FCxp bVosuvauOhUlgZ0R4kwQ=
Received: by beta.winserver.com (Wildcat! SMTP Router v7.0.454.6) for dmarc@ietf.org; Mon, 20 Aug 2018 09:51:55 -0400
Received: from [192.168.1.68] ([99.121.5.8]) by beta.winserver.com (Wildcat! SMTP v7.0.454.6) with ESMTP id 757458454.9.191264; Mon, 20 Aug 2018 09:51:54 -0400
Message-ID: <5B7ACA08.1010201@isdg.net>
Date: Mon, 20 Aug 2018 10:02:48 -0400
From: Hector Santos <hsantos@isdg.net>
Organization: Santronics Software, Inc.
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:24.0) Gecko/20100101 Thunderbird/24.8.1
MIME-Version: 1.0
To: "Murray S. Kucherawy" <superuser@gmail.com>, Seth Blank <seth@sethblank.com>
CC: IETF DMARC WG <dmarc@ietf.org>
References: <CAD2i3WNSe+of7U8fdTnmUeU3sthUbpEVgdYHT9J6BgLxoeOL3w@mail.gmail.com> <20180730221726.713CE200316625@ary.qy> <CAD2i3WMvCugRm4KZeLx3PFb6f_pKR3rs4mnH2FZO4_X7ZA7GHA@mail.gmail.com> <alpine.OSX.2.21.1807302025420.60501@ary.qy> <CABa8R6sWSu9Q+mozxzaVGab3PE2zxqVmt4L6FERSLC1oDTh1oA@mail.gmail.com> <alpine.OSX.2.21.1808031352460.29088@ary.qy> <CABa8R6u_09D9BNiq3fXDXjPVfFeZxHtRa0NyLamKyj033xO72A@mail.gmail.com> <CAD2i3WNJdQ95drzue17UdKEb_6qkN7DuB7WdMbORTSjWGgwJZA@mail.gmail.com> <CABa8R6sgtcAHGt10GQ85PvhYvEZfv1K1SqiFLe7ozWeZ5+Y30A@mail.gmail.com> <CABuGu1rmxMWhUQvzf=uyNVYSb1zGCgWtiak5+yPKaXGWPV4XUg@mail.gmail.com> <CAL0qLwbjpMH30hD8xKnAgT6kJ9wmN9hm3gwnRGmiqTOxKLiHDw@mail.gmail.com> <a6eb3ab9-0e0f-f3e5-9dd0-8d9e992595a0@gmail.com> <CAD2i3WNBdG2=uC+mx0uaA7z08V1f5t3qz9VZabL4mFO0ZQn2ng@mail.gmail.com> <CAL0qLwZpFGUog9VxxnvwS+gHk9q-tyB85qoNdmQefHO31+SKMg@mail.gmail.com>
In-Reply-To: <CAL0qLwZpFGUog9VxxnvwS+gHk9q-tyB85qoNdmQefHO31+SKMg@mail.gmail.com>
Content-Type: text/plain; charset="UTF-8"; format="flowed"
Content-Transfer-Encoding: 7bit
Archived-At: <https://mailarchive.ietf.org/arch/msg/dmarc/2tauKuoItLTcXqObwQHIvXDvUuA>
Subject: Re: [dmarc-ietf] WGLC ARC-16 concern on Section 5.1.2 - cv=fail should sign greedily
X-BeenThere: dmarc@ietf.org
X-Mailman-Version: 2.1.27
Precedence: list
List-Id: "Domain-based Message Authentication, Reporting, and Compliance \(DMARC\)" <dmarc.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/dmarc>, <mailto:dmarc-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/dmarc/>
List-Post: <mailto:dmarc@ietf.org>
List-Help: <mailto:dmarc-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/dmarc>, <mailto:dmarc-request@ietf.org?subject=subscribe>
X-List-Received-Date: Mon, 20 Aug 2018 14:03:04 -0000

Hi,

I agree with your comments.

My input.

Keep in mind, that ignorant (non-supportive) ARC nodes will continue 
to process all DKIM-signature(s) found, such as what I see with your 
message:

Authentication-Results: dkim.winserver.com;
  dkim=pass header.d=ietf.org header.s=ietf1 header.i=ietf.org;
  adsp=none author.d=gmail.com signer.d=ietf.org;
  dkim=pass header.d=ietf.org header.s=ietf1 header.i=ietf.org;
  adsp=none author.d=gmail.com signer.d=ietf.org;
  dkim=fail (DKIM_BODY_HASH_MISMATCH) header.d=gmail.com 
header.s=20161025 header.i=gmail.com;
  adsp=none author.d=gmail.com signer.d=gmail.com;

That should be the first consideration and understanding in the 
pre-ARC DKIM world, i.e. how things are done now.

The order of the DKIM-signatures is generaly important here since the 
typical scenario (with a list) is:

  1) Good 1st original Author Domain signature is submitted,
  2) 1st signature invalidated at middle ware (LIST),
  3) Good 2nd Signature (resign) for LIST distribution
  4) MDA see failed original AUTHOR ADSP/DMARC Policy.

Overall, the MDA has no explicit 3rd party trust/policy knowledge of 
LIST or signatures beyond the 1st Author Domain (now broken) 
signature.  That's the basic issue and 12+ years old DKIM Policy model 
protocol dilemma.

I suppose there could be more middle ware, nodes, etc during the 
transport, but the First and Final processing nodes should be the 
essential protocol consideration.  If there is an cv=fail at #2, does 
that mean the resigning at #3 is invalidated as well?  We never really 
cared what happens in between during the transport, but with ARC it 
appears to be a major consideration to better understand transport 
paths.  How ARC will turn all this around, it remains to be be seen. I 
wish to understand this complex protocol first before justifying the 
massive overhead and experimentation cost being asked of SMTP/Email 
developers.

Thanks

Hector Santos, CTO
Santronics Software, Inc.


On 8/20/2018 6:28 AM, Murray S. Kucherawy wrote:
> (back from vacation and catching up)
>
> On Tue, Aug 14, 2018 at 8:58 PM, Seth Blank <seth@sethblank.com
> <mailto:seth@sethblank.com>> wrote:
>
>     There are THREE consumers of ARC data (forgive me for the names,
>     they're less specific than I'd like):
>
>     1) The ARC Validator. When the Validator sees a cv=fail,
>     processing stops, the chain is dead, and shall never be less dead.
>     What is Sealed is irrelevant.
>
>
> Right.
>
>     2) The Receiver. An initial design decision inherent in the
>     protocol is that excess trace information will be collected, as
>     it's unclear what will actually be useful to receivers. 11.3.3
>     calls this out in detail. Without Sealing the entire chain when
>     attaching a cv=fail verdict, none of the trace information is
>     authenticatable to a receiver (see earlier message in this thread
>     as to why), which is the exact opposite of the design decision the
>     entire protocol is built on. To guarantee this trace information
>     can be authenticated, the Seal that contains cv=fail must include
>     the entire chain in its scope. This is where this thread started.
>
>
> I see two possible workflows here:
>
> (1) Verifier (to use the DKIM term) detects "cv=fail" and stops,
> because there's nothing more to do.  But the Receiver now has no ARC
> information except a raw "cv=fail" to relay via A-R or whatever.  But
> this, as you point out, flies in the face of the notion of giving
> receivers details about the message.  The Receiver now has to
> implement ARC to get whatever details might be prudent from the message.
>
> (2) Verifier sees "cv=fail" but will still attempt to verify it and
> maybe extract other salient details to add to an A-R.
>
> When you say "you see cv=fail and stop", I think of the first thing,
> which is alarming layer mush, and is also ambiguous in that if the
> Verifier stops dead at seeing "cv=fail", it doesn't matter at all what
> content got sealed.
>
> So if you mean the second thing, part of my issue goes away.
>
>     3) The receiver of reports that provide ARC data. For a domain
>     owner to get a report with ARC information in it, there needs to
>     be some level of trust in the information reported back. When a
>     Chain passes, all the intermediaries' header field signatures can
>     be authenticated, and the mailflow can be cleanly reported back.
>     When a Chain fails, that is important information to a domain
>     owner (where is my mailflow failing me, how can I figure this out
>     so I can fix it?). Again, without Sealing over the entire Chain
>     when a failure is detected, this information is unauthenticatable
>     (and worse, totally forgeable now without even needing a valid
>     Chain to replay), and nothing of substance can be reported back.
>     Sealing the Chain when a cv=fail is determined blocks forgery as a
>     vector to report bogus information, and allows authenticatable
>     information to be reported back.
>
>
> I think we're talking about distinct failure modes.  I totally agree
> with you in the case where the chain has failed because content was
> altered.  But doesn't your assertion here presuppose an at least
> syntactically intact chain?  If the chain is damaged to the point
> where it cannot be deterministically interpreted, the sealer adding
> the "cv=fail" might add a seal that a downstream verifier cannot
> correctly interpret.
>
> I understand what you're after but I also understand the intent behind
> 5.1.2, which is to produce something unambiguous.  My problem with
> 5.1.2 as it stands is that a verifier now has to try verifying the
> "cv=fail" two ways (one with everything, one with just the last
> instance), and at least one of them has to work.  We've cornered
> ourselves here by rejecting "cv=invalid".
>
>     And to be even clearer: what is Sealed when cv=fail is reached
>     (itself, the entire chain, or nothing at all) DOES NOT AFFECT
>     INTEROPERABILITY. But it does effect preserving trace information
>     and preventing forged data from being reportable.
>
>
> I disagree, as stated above; a mangled chain cannot be sealed in a way
> guaranteed to interoperate.
>
>     This is my very strong INDIVIDUAL opinion. But I'm fine if the
>     group sees differently, as this could be investigated as part of
>     the experiment (i.e. do any of the above points matter in the real
>     world? I say they do, hence the strong opinion.). As an editor,
>     I'll make sure whatever the consensus of the group is is reflected
>     in the document.
>
>
> I've no objection to collecting superfluous trace information to
> support the experiment.  What I'm concerned about is the introduction
> of weird protocol artifacts or ambiguities that could get baked in and
> hard to remove later.
>
> -MSK
>