Re: [Ietf-dkim] DKIM Replay Problem Statement and Scenarios -01 draft posted

2023-02-19 Thread Murray S. Kucherawy
On Sun, Feb 19, 2023 at 11:49 AM Dave Crocker  wrote:

> This is a very basic point about protocols vs. implementations. A
> protocol defines the 4 walls of its sandbox.  It owns that sandbox and
> defines whatever it needs to, within the confines of that space.
>
> [...]
>
> But again, this is protocol and standards 101.  Seems odd to be
> rehashing something this basic, in a forum like this
>

I didn't see this as a rehashing, just a clarification of the nomenclature
being used.  Reviewing the last few posts in this thread have me thinking
we're all otherwise agreeing.

-MSK
___
Ietf-dkim mailing list
Ietf-dkim@ietf.org
https://www.ietf.org/mailman/listinfo/ietf-dkim


Re: [Ietf-dkim] DKIM Replay Problem Statement and Scenarios -01 draft posted

2023-02-19 Thread Dave Crocker


The RFC just talks about returning PERFMAIL when the evaluation fails 
for one reason or another.  It's abstract, of course; the implementer 
is free to decide what that actually means in each case.  In the 
implementation I did, the library receives all the details and returns 
a status (with its own detail) about each signature, and the caller is 
free to do what it wants with that information.



This is a very basic point about protocols vs. implementations. A 
protocol defines the 4 walls of its sandbox.  It owns that sandbox and 
defines whatever it needs to, within the confines of that space.


To be reliable and accurate, it has to be objective and precise. 
Specific inputs, specific outputs.  It might distinguish permanent 
failures, such as a cryptographic value not validating -- the passage of 
time is not going to change that; versus a temporary failure, such as a 
failure to get a DNS response; the passage of time might change that.  
The liberal-vs-strict cliche applies to the interpretation of protocol 
specification details that might legitimately permit alternative 
interpretations, because prose can be ambiguous, in spite of efforts for 
it not to be.


But a protocol spec is not supposed to call on subjective judgement -- 
ie, whim.


An implementation of the protocol, also has no freedom, in terms of 
strict conformance.


However a real-world implementation, in which the protocol 
implementation is incorporated as a part, will tend to demonstrate all 
sorts of programmer and organization whim in deciding what to /do/ with 
the available information.  DKIM is precise.  A filtering engine that 
uses it well might not be.  Heuristics don't belong in a protocol spec 
but usually /do/ belong in a filtering engine.


But again, this is protocol and standards 101.  Seems odd to be 
rehashing something this basic, in a forum like this


d/

--
Dave Crocker
Brandenburg InternetWorking
bbiw.net
mast:@dcrocker@mastodon.social

___
Ietf-dkim mailing list
Ietf-dkim@ietf.org
https://www.ietf.org/mailman/listinfo/ietf-dkim


Re: [Ietf-dkim] DKIM Replay Problem Statement and Scenarios -01 draft posted

2023-02-19 Thread Michael Thomas


On 2/18/23 8:41 PM, Murray S. Kucherawy wrote:

On Sat, Feb 18, 2023 at 8:27 PM Michael Thomas  wrote:




Beyond this SHOULD, I think we need to consider whether the
caller needs to be told specifically when a failure occurs
for this reason.  Right now an implementation might return
just a PERMFAIL without noting that it's because of "x="
versus the signature failing for some other reason.  Should
the caller be given this extra detail to enhance the
decision tree, or will this just complicate things?


Why would it permfail? Does it permfail email without a
signature too?

Absent p=reject, there is nothing wrong with unsigned email.


I'm using the language of the DKIM RFC, so "PERMFAIL" here refers
to evaluation of the signature, not of the message.


But DKIM doesn't return status to anybody. That's completely
internal to the verifier. At most they might want to create an
A-R, but that isn't required and it's definitely not sent back to
the sender.

I think we're talking about different layers here. Otherwise, DKIM has 
to return status someplace, otherwise why do the evaluation?  That 
status might be in the form of an A-R header field, or a recommended 
final action, or a log entry, or whatever that operator wants.


The RFC just talks about returning PERFMAIL when the evaluation fails 
for one reason or another.  It's abstract, of course; the implementer 
is free to decide what that actually means in each case.  In the 
implementation I did, the library receives all the details and returns 
a status (with its own detail) about each signature, and the caller is 
free to do what it wants with that information.


From the standards standpoint a signature either verifies or not 
(modulo DNS glitches), but from a verifier's standpoint signatures and 
the covered parts of the message contains a wealth of other information 
that a filter module could use as inputs to make its decisions. That may 
or may not be distilled into a single status, but that is completely up 
to the receiver so PERMFAIL is just conceptual, not real.  x= in 
particular is rather vague about what a receiver should make of an 
expired signature, and completely silent on what a low value might 
imply. I've always thought of it as "I don't take responsibility for 
this anymore" from the sender's standpoint, but others are free to have 
a different opinion and that's fine (in particular, the HER EMAILS crowd 
certainly wouldn't care).


Mike
___
Ietf-dkim mailing list
Ietf-dkim@ietf.org
https://www.ietf.org/mailman/listinfo/ietf-dkim