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

2018-08-20 Thread Kurt Andersen (b)
Seth and I discussed this topic today and I think that the central problem
that is being debated has to do with *generating* the DMARC report content.
Almost everyone agrees that a broken chain is broken and unredeemable -
whether that breakage is structural or whether it is because of
non-validating signatures. There are three possible levels of processing to
be considered:

   1. validating a particular individual message for delivery to the
   recipient - this is easy: a broken chain conveys no useful information for
   local policy determination
   2. feeding ARC information into some larger reputation/ML system in
   order to provide (what I'll call) a third order policy influence - this one
   depends on whether the reputation system can make any useful conclusions on
   the basis of the broken chain. In some cases (where a signature fails to
   verify) it seems possible, but in many others it seems a bit doubtful
   3. generating the DMARC report data pertinent to this individual message
   - this is where I think that the problem lies. There is a natural desire on
   the part of senders and report processors to want all the data that they
   can possibly get; however, it is easy to devise attack scenarios which
   heavily contaminate the reports if one were to take the content of the
   entire broken ARC chain into the report

My contention to Seth is that in a multi-hop scenario, the *only* report
with meaningful data will be the one from the handler who made the "fail"
determination and any subsequent reports are untrustworthy.

If we are not concerned with "downstream" handlers of a message with a
broken ARC chain, then there is no point in attempting to seal the entirety
of a failed ARC chain.

Do the other folks on this thread agree that our main point of contention
has to do with the ability to generate the DMARC report (or the data
scoping thereof)?

--Kurt
___
dmarc mailing list
dmarc@ietf.org
https://www.ietf.org/mailman/listinfo/dmarc


[dmarc-ietf] Reminder: next ARC interop testing on October 12

2018-08-20 Thread Kurt Andersen
We are planning the next in-person ARC interop day on Friday, 2018-10-12
(the Friday following the Brooklyn M3AAWG meeting). For people attending in
person, the meeting will be hosted at the Empire State Building.

More details are still being finalized, but if you are coming to the M3AAWG
meeting, please plan to stay for Friday's interop.

You can express your interest (yes, no, maybe) at http://bit.ly/arc
-09-interest (thank you to the 12 people who signed up earlier - no need to
re-up).

--Kurt
___
dmarc mailing list
dmarc@ietf.org
https://www.ietf.org/mailman/listinfo/dmarc


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

2018-08-20 Thread John Levine
In article  
you write:
>My contention to Seth is that in a multi-hop scenario, the *only* report
>with meaningful data will be the one from the handler who made the "fail"
>determination and any subsequent reports are untrustworthy.

Assuming that "subsequent" means earlier in the chain, I agree.

>Do the other folks on this thread agree that our main point of contention
>has to do with the ability to generate the DMARC report (or the data
>scoping thereof)?

Yes.  I understand what to do with "here's a valid chain" and "it was
broken when I got it", but not "here's a broken chain you may or may
not be able to reconstruct."

R's,
John

___
dmarc mailing list
dmarc@ietf.org
https://www.ietf.org/mailman/listinfo/dmarc


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

2018-08-20 Thread Kurt Andersen (b)
On Mon, Aug 20, 2018 at 7:18 PM, John Levine  wrote:

> In article  gmail.com> you write:
> >My contention to Seth is that in a multi-hop scenario, the *only* report
> >with meaningful data will be the one from the handler who made the "fail"
> >determination and any subsequent reports are untrustworthy.
>
> Assuming that "subsequent" means earlier in the chain, I agree.
>

No, by subsequent I mean intermediaries who handle the message after the
point of initial "oh, this is broken" determination. So if I'm the 5th
intermediary (let's assume that all are ARC participating for this
discussion), and the chain on the message that I receive does not pass the
validation checks (for any of the three possible reasons), then my report
is meaningful to the sender but reports from 6, 7, 8, etc are not.

--Kurt
___
dmarc mailing list
dmarc@ietf.org
https://www.ietf.org/mailman/listinfo/dmarc


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

2018-08-20 Thread Murray S. Kucherawy
(back from vacation and catching up)

On Tue, Aug 14, 2018 at 8:58 PM, Seth Blank  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
___
dmarc mailing list
dmarc@ietf.org
https://www.ietf.org/mailman/listinfo/dmarc


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

2018-08-20 Thread Hector Santos

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 mailto:s...@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