Re: [ietf-dkim] list expanders (was Re: chained signatures, was l= summary)

2009-06-17 Thread hector
MH Michael Hammer (5304) wrote:

 How does a 3rd party signing a message change the intent of the author
 of a message? One might argue that breaking the original signature does
 that. My response would be to then avoid breaking the original
 signature.

But list servers will naturally do break the message, dkim signed or 
not. no?

I want to minimize issues when adding DKIM considerations to our list 
server - not create more issues.  Today, there is a common practice 
with MLS altering one, all or more of the following:

- Optional Subject List Name Tags, i.e. [ietf-dkim] subject

- Reply-To: change to accommodate the current UI of most
  RFC based mail readers with its default button/menu logic:

[ Reply ]  - Uses Reply-To or From:
[ Reply to All ]   - Uses all Originator fields
 To:, Cc: Reply-To

  Some MLS (like ours) will offer a list option to change
  the Reply-To so that the natural behavior of a user clicking
  Reply will go back to the list and not a direct email to
  the author of the message.

- footers and (headers), with the footers the most common

- Stripping based on content restrictions (no attachments,
  no html content-types), etc.

The question becomes under what conditions should a MLS-based DKIM
signing take place to eliminate downlinks DKIM verification issues,
including damages to domain reputation.

The only thing I can see if to remove all original domain 
considerations. With no Policy, author domains are less important.

 One of the arguments put forward supporting the DKIM effort was that
 unlike SPF it is not hop dependent. 

True, but SPF does have RFC 4405 (SUBMITTER) to help address hop 
transition Domain::IP association issues.

For DKIM, the irony is that it might have similar issues from the 
standpoint of the route path and who was last (re)signed.

   MUA - | MSA/MTA/SIGNS | - MTA/BREAKS

   ROUTE #1 - MTA/RESIGNS - MTA - MDA
   ROUTE #2 - MTA - MDA

We had a support incident last year where the MTA took one of two
routes (for some reason).  Depending on the route, a Date was
added to the original message (because it was missing), the other
did not. When the messages reached the customers server (our product),
the customer was complaining about different mail reader display dates.

This proves its possible that is a DKIM ignorants MTAs can have two or 
more different routes for distribution.  So just like SPF, depending 
on the route it takes, things can break.  Does the new MTAs now need 
to learn to use a special route for DKIM messages only? One with 
minimum hops?

Here's an idea:

Can receivers help the process by adding a special MX record 
specifically for DKIM reception to help MTA take a direct path? Maybe 
special by sub-domain? mx1-dkim-receptor.domain.com

I guess the overall issue is why should any MTA, including a list 
server auto-correct a broken message and it is safer to only consider 
resigning when it going to break a valid dkim message?

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


Re: [ietf-dkim] list expanders (was Re: chained signatures, was l= summary)

2009-06-17 Thread Charles Lindsey
On Tue, 16 Jun 2009 23:05:33 +0100, SM s...@resistor.net wrote:

 -7. His signature did NOT cover the A-R he had added (so we have to  
 assume
 that it was not an artefact by the spammer, although it most certainly
 SHOULD have been removed if it was). So we may well believe the list
 manager had put it there, but it would be nicer to have had some proof.

 At a guess, I'd say that the list manager did not put that header there.

As a matter of interest, could you say why?

AFAICS, this spam actually came from a sleeping member of this list who  
was trying to drum up friends on Facebook, and inadvertently sent it to  
everyone in his address book, including this list (observe the 'whitelist'  
remarks in the X-Greylist header). Indeed, he subsequently apologised on  
this list for his error, and the headers on his apology are exactly  
analagous to those on the spam.

Moreover, if this A-R header HAD been present in the original, it SHOULD  
have been removed by the list manager, according to RFC 5451.

-- 
Charles H. Lindsey -At Home, doing my own thing
Tel: +44 161 436 6131   
   Web: http://www.cs.man.ac.uk/~chl
Email: ...@clerew.man.ac.uk  snail: 5 Clerewood Ave, CHEADLE, SK8 3JU, U.K.
PGP: 2C15F1A9  Fingerprint: 73 6D C2 51 93 A0 01 E7 65 E8 64 7E 14 A4 AB A5
___
NOTE WELL: This list operates according to 
http://mipassoc.org/dkim/ietf-list-rules.html


Re: [ietf-dkim] Modified Introduction text for rfc4871-errata (resend)

2009-06-17 Thread Bill.Oxley
Well it would be nice if i=author.net and d=3rd.party.signer.isp.com but no one 
agreed so I'll shut up now :-)

-Original Message-
From: ietf-dkim-boun...@mipassoc.org [mailto:ietf-dkim-boun...@mipassoc.org] On 
Behalf Of Steve Atkins
Sent: Tuesday, June 16, 2009 6:14 PM
To: DKIM WG
Subject: Re: [ietf-dkim] Modified Introduction text for rfc4871-errata (resend)


On Jun 16, 2009, at 2:35 PM, Michael Thomas wrote:


 1) People saying that d= is THE IDENTIFIER are overloading the
 value: d= a routing
label to a particular DNS subtree. Whether it has anything to do
 with THE
IDENTIFIER is purely coincidental. The assumption that these two
 functions are
identical is bogus. i= was supposed to be this stable value
 detached from the
mechanical DNS routing function.

Are you confusing the d= value and the DNS node (including selectors and
suchlike) that the public key lives at?

The d= value has been the persistent identifier for the signer since
day one,
while the i= value is a more specific value that the signer can
optionally use.

Given that the RHS of i= is either identical or a subdomain of d= it's
nonsensical
to consider i= more stable than d=, as i= must change if d= does.


Cheers,
   Steve

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

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


Re: [ietf-dkim] list expanders (was Re: chained signatures, was l= summary)

2009-06-17 Thread hector
Charles Lindsey wrote:

 So there remain only two things he did _not_ do, which he might have done:
 
 -7. His signature did NOT cover the A-R he had added (so we have to assume
 that it was not an artefact by the spammer, although it most certainly
 SHOULD have been removed if it was). So we may well believe the list
 manager had put it there, but it would be nicer to have had some proof.

+1, I think it makes sense to bind the A-R recording of a stripped 
original signature.

 -8. The list manager did not retain the original (and now broken) original
 signature. Tnere are certainly some on this list who would have preferred
 to see it left (for forensics).

Or changed to X-DKIM-Signature and bind this also in  the new signature.

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


Re: [ietf-dkim] Modified Introduction text for rfc4871-errata (resend)

2009-06-17 Thread Bill.Oxley
+1

-Original Message-
From: ietf-dkim-boun...@mipassoc.org [mailto:ietf-dkim-boun...@mipassoc.org] On 
Behalf Of Murray S. Kucherawy
Sent: Tuesday, June 16, 2009 5:53 PM
To: Cullen Jennings; dcroc...@bbiw.net
Cc: pasi.ero...@nokia.com; ietf-dkim@mipassoc.org
Subject: Re: [ietf-dkim] Modified Introduction text for rfc4871-errata (resend)

 tThis update resolves that confusion.  It defines
  additional, semantic
   labels for the two values, clarifies their nature and
  specifies their
   relationship.  More specifically, it clarifies that the
  identifier
   intended for delivery to the assessor -- such as one that
  consults a
   white list -- is the value of the d= tag. However, this
  does not
   prohibit message filtering engines from using the i= tag,
  or any
   other information in the message's header, for filtering
  decisions.
 /t

 Look, this is clear as mud - What I am getting is that the old
 document was unclear if you should use the d= or the i= and this
 document clarifies it to be you should use, uh, I'm totally lost here,
 I use the d= for white lists, which are a form a filtering, but I can
 also use the i= for filtering.

 I'm just unclear on what one is supposed to use and when. And honestly
 it does not matter if I am confused in the slightest, but it does
 matter if people implementing this stuff are unclear on this.
 Evidently there is enough confusing about this that it is worth
 writing an RFC to fix it - that I believe. However, people outside the
 WG other than me seem like they too have a hard time reading this and
 figuring out how this clarifies what to do. This does seem like a bit
 of a problem.

Think about it in terms of an API specification.

The intent here, I believe, is to specify that d= is mandatory output of a 
DKIM verifier module.  i= (and everything else, frankly) is optional.  Thus, 
a compliant verifier implementation will give you a yes/no on the signature and 
the name of the domain in d=.  There may be other stuff there, but that's 
what you need for minimal compliance and interoperability.  A consumer of such 
a minimal specification could conceivably interchange DKIM implementations and 
still keep working as before.  However, there are no guarantees if such a 
consumer decides to try to make use of optional stuff like i= or x= or l= 
or whatever, because some other DKIM verifier implementation might not give 
that to you.  But if you code for yes/no and d= only, then any compliant 
verifier will give you what you need to interoperate.

If you as a consumer of such an API feel that you'd rather use i= for 
particular applications or types of messages, then either create or use an 
implementation that makes that value available.  There's nothing wrong with 
that either.

(If any of that language resolves the concern, feel free to use it.)

-MSK

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

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


Re: [ietf-dkim] Modified Introduction text forrfc4871-errata (resend)

2009-06-17 Thread MH Michael Hammer (5304)
+1

 -Original Message-
 From: ietf-dkim-boun...@mipassoc.org [mailto:ietf-dkim-
 boun...@mipassoc.org] On Behalf Of Murray S. Kucherawy
 Sent: Tuesday, June 16, 2009 5:53 PM
 To: Cullen Jennings; dcroc...@bbiw.net
 Cc: pasi.ero...@nokia.com; ietf-dkim@mipassoc.org
 Subject: Re: [ietf-dkim] Modified Introduction text forrfc4871-errata
 (resend)
 
  tThis update resolves that confusion.  It defines
   additional, semantic
labels for the two values, clarifies their nature and
   specifies their
relationship.  More specifically, it clarifies that the
   identifier
intended for delivery to the assessor -- such as one that
   consults a
white list -- is the value of the d= tag. However, this
   does not
prohibit message filtering engines from using the i=
tag,
   or any
other information in the message's header, for filtering
   decisions.
  /t
 
  Look, this is clear as mud - What I am getting is that the old
  document was unclear if you should use the d= or the i= and this
  document clarifies it to be you should use, uh, I'm totally lost
here,
  I use the d= for white lists, which are a form a filtering, but I
can
  also use the i= for filtering.
 
  I'm just unclear on what one is supposed to use and when. And
honestly
  it does not matter if I am confused in the slightest, but it does
  matter if people implementing this stuff are unclear on this.
  Evidently there is enough confusing about this that it is worth
  writing an RFC to fix it - that I believe. However, people outside
the
  WG other than me seem like they too have a hard time reading this
and
  figuring out how this clarifies what to do. This does seem like a
bit
  of a problem.
 
 Think about it in terms of an API specification.
 
 The intent here, I believe, is to specify that d= is mandatory
output of
 a DKIM verifier module.  i= (and everything else, frankly) is
optional.
 Thus, a compliant verifier implementation will give you a yes/no on
the
 signature and the name of the domain in d=.  There may be other
stuff
 there, but that's what you need for minimal compliance and
 interoperability.  A consumer of such a minimal specification could
 conceivably interchange DKIM implementations and still keep working as
 before.  However, there are no guarantees if such a consumer decides
to
 try to make use of optional stuff like i= or x= or l= or
whatever,
 because some other DKIM verifier implementation might not give that to
 you.  But if you code for yes/no and d= only, then any compliant
 verifier will give you what you need to interoperate.
 
 If you as a consumer of such an API feel that you'd rather use i=
for
 particular applications or types of messages, then either create or
use an
 implementation that makes that value available.  There's nothing wrong
 with that either.
 
 (If any of that language resolves the concern, feel free to use it.)
 
 -MSK
 
 ___
 NOTE WELL: This list operates according to
 http://mipassoc.org/dkim/ietf-list-rules.html

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


Re: [ietf-dkim] Modified Introduction text forrfc4871-errata (resend)

2009-06-17 Thread Dave CROCKER


MH Michael Hammer (5304) wrote:
 +1
 
 From: ietf-dkim-boun...@mipassoc.org [mailto:ietf-dkim-


Hmmm.  Noting two quick +1s to Murray's text and in the interest of still 
trying 
to bring this quick errata/update effort to a close, I'm inclined to suggest 
adding his explanatory text to the existing proposed addition.

While it's entirely plausible that Murray can formulate a superior version of 
the basic text for the addition, I think that the existing +1s for the existing 
text and the +1s for Murray's commentary offers us something quicker.

So, here's a suggested merging of the two:

   tThis currently leaves signers and assessors with the potential for
 making different interpretations between the two identifiers and may
 lead to interoperability problems. A signer could intend one to be
 used for assessment, and have a non-reputation intent in setting the
 value in the other. However the verifier might choose the wrong value
 to deliver to the assessor, thereby producing an unintended (and
 inaccurate) assessment./t

   tThis update resolves that confusion.  It defines additional, semantic
 labels for the two values, clarifies their nature and specifies their
 relationship.  More specifically, it clarifies that the identifier
 intended for delivery to the assessor -- such as one that consults a
 white list -- is the value of the d= tag. However, this does not
 prohibit message filtering engines from using the i= tag, or any
 other information in the message's header, for filtering decisions.
   /t

   tFor signers and verifiers that have been using the i= tag as the
 primary value that is delivered to the assessor, a software change to
 using the d= tag is intended.
   /t

  tSo, this Update clarifies the formal interface to DKIM, after
signature verification has been performed. It distinguishes DKIM's
internal signing and
verification activity, from its standardized delivery of data to that
interface./t

   tThe focus of the Update is on the portion of DKIM that is much like
 an API definition.  If DKIM is implemented as a software library for
 use by others, it needs to define what outputs are provided, that is,
 what data that an application developer who uses the library can expect
 to obtain as a result of invoking DKIM on a message./t

   tThis Update draft defines the output of that library to include the
 yes/no result of the verification and the d= value.  In other words,
 it says what (one) identifier was formally specified for use by the
 signer and whether the use of that identifier has been validated. For
 a particular library, other information can be provided at the
 discretion of the library developer, since developers of assessors --
 these are the consumers of the DKIM library -- well might want more
 information than the standardized two pieces of information. However
 that standardized set is the minimum that is required to be provided
 to a consuming module, in order to be able to claim that the library
 is DKIM compliant./t

   tThis does not state what the implicit value of i= is, relative to
d=.  In this context, that fact is irrelevant./t

   tAnother example is the difference between the socket interface to TCP
 versus the TCP protocol itself.  There is the activity within the
 protocol
 stack, and then there is the activity within in the software libraries
 that are actually used./t


Comments? (And yes, quick +1s are eagerly sought.)

d/
-- 

   Dave Crocker
   Brandenburg InternetWorking
   bbiw.net
___
NOTE WELL: This list operates according to 
http://mipassoc.org/dkim/ietf-list-rules.html


Re: [ietf-dkim] Modified Introduction text forrfc4871-errata (resend)

2009-06-17 Thread Bill.Oxley
+1

-Original Message-
From: ietf-dkim-boun...@mipassoc.org [mailto:ietf-dkim-boun...@mipassoc.org] On 
Behalf Of Dave CROCKER
Sent: Wednesday, June 17, 2009 11:08 AM
To: MH Michael Hammer (5304)
Cc: ietf-dkim@mipassoc.org; pasi.ero...@nokia.com; dcroc...@bbiw.net
Subject: Re: [ietf-dkim] Modified Introduction text forrfc4871-errata (resend)
Importance: High



MH Michael Hammer (5304) wrote:
 +1

 From: ietf-dkim-boun...@mipassoc.org [mailto:ietf-dkim-


Hmmm.  Noting two quick +1s to Murray's text and in the interest of still trying
to bring this quick errata/update effort to a close, I'm inclined to suggest
adding his explanatory text to the existing proposed addition.

While it's entirely plausible that Murray can formulate a superior version of
the basic text for the addition, I think that the existing +1s for the existing
text and the +1s for Murray's commentary offers us something quicker.

So, here's a suggested merging of the two:

   tThis currently leaves signers and assessors with the potential for
 making different interpretations between the two identifiers and may
 lead to interoperability problems. A signer could intend one to be
 used for assessment, and have a non-reputation intent in setting the
 value in the other. However the verifier might choose the wrong value
 to deliver to the assessor, thereby producing an unintended (and
 inaccurate) assessment./t

   tThis update resolves that confusion.  It defines additional, semantic
 labels for the two values, clarifies their nature and specifies their
 relationship.  More specifically, it clarifies that the identifier
 intended for delivery to the assessor -- such as one that consults a
 white list -- is the value of the d= tag. However, this does not
 prohibit message filtering engines from using the i= tag, or any
 other information in the message's header, for filtering decisions.
   /t

   tFor signers and verifiers that have been using the i= tag as the
 primary value that is delivered to the assessor, a software change to
 using the d= tag is intended.
   /t

  tSo, this Update clarifies the formal interface to DKIM, after
signature verification has been performed. It distinguishes DKIM's
internal signing and
verification activity, from its standardized delivery of data to that
interface./t

   tThe focus of the Update is on the portion of DKIM that is much like
 an API definition.  If DKIM is implemented as a software library for
 use by others, it needs to define what outputs are provided, that is,
 what data that an application developer who uses the library can expect
 to obtain as a result of invoking DKIM on a message./t

   tThis Update draft defines the output of that library to include the
 yes/no result of the verification and the d= value.  In other words,
 it says what (one) identifier was formally specified for use by the
 signer and whether the use of that identifier has been validated. For
 a particular library, other information can be provided at the
 discretion of the library developer, since developers of assessors --
 these are the consumers of the DKIM library -- well might want more
 information than the standardized two pieces of information. However
 that standardized set is the minimum that is required to be provided
 to a consuming module, in order to be able to claim that the library
 is DKIM compliant./t

   tThis does not state what the implicit value of i= is, relative to
d=.  In this context, that fact is irrelevant./t

   tAnother example is the difference between the socket interface to TCP
 versus the TCP protocol itself.  There is the activity within the
 protocol
 stack, and then there is the activity within in the software libraries
 that are actually used./t


Comments? (And yes, quick +1s are eagerly sought.)

d/
--

   Dave Crocker
   Brandenburg InternetWorking
   bbiw.net
___
NOTE WELL: This list operates according to
http://mipassoc.org/dkim/ietf-list-rules.html

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


Re: [ietf-dkim] Modified Introduction text forrfc4871-errata (resend)

2009-06-17 Thread Suresh Ramasubramanian
On Wed, Jun 17, 2009 at 9:07 PM, bill.ox...@cox.com wrote:
 +1

+1

       tFor signers and verifiers that have been using the i= tag as the
         primary value that is delivered to the assessor, a software change to
         using the d= tag is intended.
       /t

s/intended/required/ possibly?

Otherwise I'm good with this change.

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


Re: [ietf-dkim] Modified Introduction text forrfc4871-errata (resend)

2009-06-17 Thread hector
API Definition? The socket example? Come on.

BTW, What is the definition of an Application Programming Interface 
and what portion of DKIM is like an API definition.

This is incomprehensible, overdone to get some simple concept across 
that only needs 1 or 2 paragraphs.  Dave, these paragraphs is really 
obscure. You can do better and get this API angle out.

If you going to this level, you need to be more specific with software 
engineering terminologies and how it applies to SMTP.  Murray's API is 
not going to be same as MY API or that guys API and it may not be just 
in C or C++, but in multiple of languages, and the API be COM 
interface, a .NET interface,  including a JAVA interface.  It may come 
in the form of shims, hooks, callouts, triggers, events or what have 
you.

If the functional model is attempted be described, a simple paragraph 
that ALL developers with SMTP knowledge will understand might be:

   DKIM Verification and Assessors Processing can be done during
   the SMTP session or post acceptance level.  In order to provide
   assessors the available data it might need, the DKIM
   verification result, the RFC 5321 envelope fields and RFC 5322
   payload SHOULD be made available for internal and external
   Assessor processing.

   At a minimum, the DKIM verification result and the DKIM-Signature
   signing domain identity (D=) value MUST be made available to
   assessors.

   How the information is provided to Assessors is implementation
   dependent and not in scope of this document.

Simple? Huh?

---

Dave CROCKER wrote:

 
 MH Michael Hammer (5304) wrote:
 +1

 From: ietf-dkim-boun...@mipassoc.org [mailto:ietf-dkim-
 
 
 Hmmm.  Noting two quick +1s to Murray's text and in the interest of still 
 trying 
 to bring this quick errata/update effort to a close, I'm inclined to 
 suggest 
 adding his explanatory text to the existing proposed addition.
 
 While it's entirely plausible that Murray can formulate a superior version of 
 the basic text for the addition, I think that the existing +1s for the 
 existing 
 text and the +1s for Murray's commentary offers us something quicker.
 
 So, here's a suggested merging of the two:
 
tThis currently leaves signers and assessors with the potential for
  making different interpretations between the two identifiers and may
  lead to interoperability problems. A signer could intend one to be
  used for assessment, and have a non-reputation intent in setting the
  value in the other. However the verifier might choose the wrong value
  to deliver to the assessor, thereby producing an unintended (and
  inaccurate) assessment./t
 
tThis update resolves that confusion.  It defines additional, 
 semantic
  labels for the two values, clarifies their nature and specifies their
  relationship.  More specifically, it clarifies that the identifier
  intended for delivery to the assessor -- such as one that consults a
  white list -- is the value of the d= tag. However, this does not
  prohibit message filtering engines from using the i= tag, or any
  other information in the message's header, for filtering decisions.
/t
 
tFor signers and verifiers that have been using the i= tag as the
  primary value that is delivered to the assessor, a software change to
  using the d= tag is intended.
/t
 
   tSo, this Update clarifies the formal interface to DKIM, after
 signature verification has been performed. It distinguishes DKIM's
 internal signing and
 verification activity, from its standardized delivery of data to that
 interface./t
 
tThe focus of the Update is on the portion of DKIM that is much like
  an API definition.  If DKIM is implemented as a software library for
  use by others, it needs to define what outputs are provided, that is,
  what data that an application developer who uses the library can 
 expect
  to obtain as a result of invoking DKIM on a message./t
 
tThis Update draft defines the output of that library to include the
  yes/no result of the verification and the d= value.  In other 
 words,
  it says what (one) identifier was formally specified for use by the
  signer and whether the use of that identifier has been validated. For
  a particular library, other information can be provided at the
  discretion of the library developer, since developers of assessors --
  these are the consumers of the DKIM library -- well might want more
  information than the standardized two pieces of information. However
  that standardized set is the minimum that is required to be provided
  to a consuming module, in order to be able to claim that the library
  is DKIM compliant./t
 
tThis does not state what the implicit value of 

Re: [ietf-dkim] Modified Introduction text forrfc4871-errata (resend)

2009-06-17 Thread Douglas Otis

On Jun 17, 2009, at 8:08 AM, Dave CROCKER wrote:

 So, here's a suggested merging of the two:

 This currently leaves signers and assessors with the potential for
 making different interpretations between the two identifiers and may
 lead to interoperability problems. A signer could intend one to be
 used for assessment, and have a non-reputation intent in setting the
 value in the other. However the verifier might choose the wrong value
 to deliver to the assessor, thereby producing an unintended (and
 inaccurate) assessment.

Can you provide examples of interoperability problems?

Any reputation assessment system should not:

1) limit what is to be assessed.

2) allow inclusion of un-assessed information used to provide  
annotation!

The change being recommended reduces intended protections.

 This update resolves that confusion.  It defines additional, semantic
  labels for the two values, clarifies their nature and specifies their
  relationship.  More specifically, it clarifies that the identifier
  intended for delivery to the assessor -- such as one that consults a
  white list -- is the value of the d= tag. However, this does not
  prohibit message filtering engines from using the i= tag, or any
  other information in the message's header, for filtering decisions.

This statement is wrong because:

1) Any white-listing practice based upon replayable signatures _will_  
be abused.

2) Use of the i= value is being defined as permission to discard email!

This is creating an operational problem by having email is accepted  
and then having it discarded.  This creates a disincentive for signers  
to offer additional intra-domain information.

 So, this Update clarifies the formal interface to DKIM, after
 signature verification has been performed. It distinguishes DKIM's
 internal signing and verification activity, from its standardized
 delivery of data to that interface.

What interface, the presentation layer?

 The focus of the Update is on the portion of DKIM that is much like
 an API definition.  If DKIM is implemented as a software library for
 use by others, it needs to define what outputs are provided, that is,
 what data that an application developer who uses the library can  
 expect
 to obtain as a result of invoking DKIM on a message.

 This Update draft defines the output of that library to include the
 yes/no result of the verification and the d= value.

It would be inherently unsafe to intentionally ignore information used  
for presentation.  As such, the i= value (or its default) SHOULD be  
assessed.  It can be and I'll be happy to describe an API that meets  
the requirement.
Such an API can avoid the inter-operational problems your change will  
create.

 This does not state what the implicit value of i= is, relative to
  d=.  In this context, that fact is irrelevant.

The i= value clarifies the entity on whose behalf the signature was  
added, and directs annotation process.  The d= value is irrelevant to  
an assessment of behavior history, especially when the d= value might  
combine the behaviors of millions. This change to DKIM is simply  
wrong, since the goal of DKIM is to defend against spoofing.  This  
change invites massive intra-domain spoofing.

 Another example is the difference between the socket interface to
 TCP versus the TCP protocol itself.  There is the activity within the
 protocol stack, and then there is the activity within in the software
 libraries that are actually used.

The TCP socket does not acknowledge TCP packets and then discard them  
before being presented, and yet this is the change being advocated. :^(

Measures that email must take to fend off massive abuse should not  
then result in email becoming even more unreliable.

Public MTAs (port 25) should explicitly declare an intent to issue  
email.  It may not be too late to resurrect your CVS effort.  Once  
public MTAs can be identified and consolidated, the overall size of  
public MTA assessments is likely around 8 million.  This would exclude  
servers that depend upon email for monitoring purposes.  These sources  
will likely require specific ACLs.

Anti-abuse schemes that attempt to redirect assessments to customers  
of public MTAs will not scale, especially when they involve dozens of  
transactions.  Each transaction or cryptographic operation will be  
abused a million fold.

-Doug


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


Re: [ietf-dkim] Modified Introduction text for rfc4871-errata (resend)

2009-06-17 Thread Murray S. Kucherawy
 Are you trying to say?
 
  DKIM_RESULT = DKIM_VERIFY(ENVELOPE,  PAYLOAD)
  FINAL_RESULT = DKIM_ASSESSOR(DKIM_RESULT,  DKIM_TAG_QUERY(D) )
 -- minimum requirement?

I don't fully understand your notation, but I think what I'm saying is that a 
minimal DKIM implementation provides what's in parentheses on the second line.  
It might provide more, but to claim to be compliant (after approval of the 
errata document) it has to provide at least that much.

 What does the verification process entail?

You've shown it in the first line above.

  Think of another example, like the socket interface to TCP vs. the
  TCP protocol itself.  There's what's going on in the protocol stack and
  then there's what's going on in the C libraries we actually use.
 
 How about higher layer wrappers and classes for sockets which have
 different models, sync vs async for example? g

Also good examples: None of them offer you direct access to data in the TCP 
headers, for example.  They could, but they don't.  All you need as an 
application writer is the payload (if any) and a return status from an 
operation.  The internal bits are generally not your concern.  If you really 
want the internal stuff, you can switch to raw sockets or an API with more 
switches and knobs.

The libc function gethostbyname() is another example: you give it a hostname 
and it gives you back one or more IP addresses (or an error).  If you want more 
control over the query and the reply, switch to the res_*() functions.  If you 
want even more control over stuff like timeouts and the actual transport, use 
res_mkquery() and manage the sockets yourself.  The underlying protocol is the 
same in all cases.

(I could be wrong but for the sake of example, let's say:) POSIX specifies 
gethostbyname() will give you back what you want plus an error status in a 
global variable called h_errno.  Let's also say some implementation decides to 
do invisibly do DNSSEC, and for that implementation you get another global 
called h_dnssec that tells you whether or not the reply was secure.  Both the 
standard implementation and this one are POSIX-compliant, but this one has 
some extensions.  And maybe everyone desires that extension and installs this 
version of the resolver and uses it.  It may even become wildly popular, but 
the extension is officially not interoperable in terms of what the standard 
says.  The DKIM errata document, to me, simply declares a minimal interface 
that you MUST export in order to be able to say you are compliant.

 I got that impression too when it was first put out.  But I think it
 was
 odd since implementators will do what is necessary to make whatever is
 necessary.   Any API interface and I/O will be defined by the ASSESSOR.
 It will define what is needed to do its work. The input is simple - RFC
 2822 payload.   If you are saying the basic model for an accessor is
 
  BOOL DKIM_ASSESSOR(BOOL DKIM_RESULT,  STRING D_TAG_VALUE)
 
 thats cool. But why limit yourself?

Nobody's saying you have to limit yourself.  On the contrary, what I believe 
the errata document is trying to do is specify clearly that you have to do at 
least X, but doesn't constrain you from doing more.


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


Re: [ietf-dkim] Modified Introduction text forrfc4871-errata (resend)

2009-06-17 Thread Murray S. Kucherawy
 BTW, What is the definition of an Application Programming Interface
 and what portion of DKIM is like an API definition.

I'm quite comfortable with drawing an implicit you must be this tall line and 
assuming someone reading this, i.e. an implementer (e.g. YOU), will know what 
an API is.

Or would you rather require even the definitions of words like framework, 
authentication, email, public key, verification, source, messages 
and transfer, all of which appear in the first sentence of the abstract of 
RFC4871, be included?

Let's not be absurd here.


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


Re: [ietf-dkim] Modified Introduction text forrfc4871-errata (resend)

2009-06-17 Thread Murray S. Kucherawy
 So, here's a suggested merging of the two:
 
tThis currently leaves signers and assessors with the potential for
  making different interpretations between the two identifiers and may
  lead to interoperability problems. A signer could intend one to be
  used for assessment, and have a non-reputation intent in setting the

s/a non-reputation/some unspecified/

  value in the other. However the verifier might choose the wrong value
  to deliver to the assessor, thereby producing an unintended (and
  inaccurate) assessment./t
 
tThis update resolves that confusion.  It defines additional, 
 semantic
  labels for the two values, clarifies their nature and specifies their
  relationship.  More specifically, it clarifies that the identifier
  intended for delivery to the assessor -- such as one that consults a
  white list -- is the value of the d= tag. However, this does not
  prohibit message filtering engines from using the i= tag, or any
  other information in the message's header, for filtering decisions.
/t
 
tFor signers and verifiers that have been using the i= tag as the
  primary value that is delivered to the assessor, a software change to
  using the d= tag is intended.
/t
 
   tSo, this Update clarifies the formal interface to DKIM, after
 signature verification has been performed. It distinguishes DKIM's
 internal signing and
 verification activity, from its standardized delivery of data to that

s/,//

 interface./t
 
tThe focus of the Update is on the portion of DKIM that is much like
  an API definition.  If DKIM is implemented as a software library for
  use by others, it needs to define what outputs are provided, that is,
  what data that an application developer who uses the library can 
 expect
  to obtain as a result of invoking DKIM on a message./t
 
tThis Update draft defines the output of that library to include the
  yes/no result of the verification and the d= value.  In other 
 words,
  it says what (one) identifier was formally specified for use by the
  signer and whether the use of that identifier has been validated. For
  a particular library, other information can be provided at the
  discretion of the library developer, since developers of assessors --
  these are the consumers of the DKIM library -- well might want more
  information than the standardized two pieces of information. However
  that standardized set is the minimum that is required to be provided
  to a consuming module, in order to be able to claim that the library
  is DKIM compliant./t
 
tThis does not state what the implicit value of i= is, relative to
 d=.  In this context, that fact is irrelevant./t
 
tAnother example is the difference between the socket interface to 
 TCP
  versus the TCP protocol itself.  There is the activity within the
  protocol
  stack, and then there is the activity within in the software 
 libraries
  that are actually used./t

s/used/made visible to consumers/


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


Re: [ietf-dkim] Modified Introduction text forrfc4871-errata (resend)

2009-06-17 Thread Murray S. Kucherawy
 If you going to this level, you need to be more specific with software
 engineering terminologies and how it applies to SMTP.  Murray's API is
 not going to be same as MY API or that guys API and it may not be just
 in C or C++, but in multiple of languages, and the API be COM
 interface, a .NET interface,  including a JAVA interface.  It may come
 in the form of shims, hooks, callouts, triggers, events or what have
 you.

I don't think the proposed text defines any property of the API other than the 
fact that it must export two things: the verification result and the d= 
value.  The text does not stipulate what language has to be used, nor does it 
specify what that interface must look like.

So it already satisfies your requirement.


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


Re: [ietf-dkim] Modified Introduction text forrfc4871-errata (resend)

2009-06-17 Thread Murray S. Kucherawy
 Any reputation assessment system should not:
 
 1) limit what is to be assessed.

The proposed text does not put any limits on what gets assessed.  If an 
assessor wants more information, it is free to use a verifier that provides 
more information.

 2) allow inclusion of un-assessed information used to provide
 annotation!

That's out of scope, since the annotation is not placed by the verifier, which 
is what we're discussing.

 This statement is wrong because:
 
 1) Any white-listing practice based upon replayable signatures _will_
 be abused.

That also seems to be out of scope to me, since it's not in the realm of the 
verifier.

 2) Use of the i= value is being defined as permission to discard email!

That also seems to be out of scope to me, since it's not in the realm of the 
verifier.

 What interface, the presentation layer?

A DKIM API, which I suppose would live in the presentation layer.

 It would be inherently unsafe to intentionally ignore information used
 for presentation.  As such, the i= value (or its default) SHOULD be
 assessed.  It can be and I'll be happy to describe an API that meets
 the requirement.
 Such an API can avoid the inter-operational problems your change will
 create.

So you are seeking to make delivery of i= a third mandatory output for a 
compliant DKIM verifier?  I believe there is already consensus against the 
mandatory part of that.

 The TCP socket does not acknowledge TCP packets and then discard them
 before being presented, and yet this is the change being advocated. :^(

That would be a protocol detail that's hidden from the user, and thus not 
relevant to an API specification such as the one we're discussing.


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


Re: [ietf-dkim] General Feedback loop using DKIM

2009-06-17 Thread J.D. Falk
Franck Martin wrote:

 I'm worried that sending an email when the signature fails could be
 triggered by forged emails rather than by emails that contains dkim
 errors. DKIM being clearly defined, a DKIM signed email should be
 correct/wrong regardless of the destination. Easy to test the DKIM
 signature pass on a couple of DKIM reflectors. Therefore reports due to
 a failed signature would indicate only forged emails. I'm not sure what
 information a sender gains by knowing someone is forging its signature?

Financial institutions tend to be very interested in finding out when their 
domain is used in phishing attempts, or similar forgeries.

However, that's the only type of feedback you've mentioned which is related 
to DKIM.  I'm not sure it makes sense to tie the rest to a DKIM key record.

-- 
J.D. Falk
Return Path Inc
http://www.returnpath.net/
___
NOTE WELL: This list operates according to 
http://mipassoc.org/dkim/ietf-list-rules.html


Re: [ietf-dkim] Modified Introduction text forrfc4871-errata (resend)

2009-06-17 Thread hector
Murry,

How else can this be said?

Think SMTP and think how a SMTP system will provide the process 
environment variables to either embedded filtering system or external 
SMTP filtering system.

Most SMTP servers with an ACL or similar concept, including SendMail 
with its mfilters, our ours with WCX hooks, etc do not limit the 
external interface prototyping to just one or two variables.  The 
process variables are fixed:

2821 (envelope)
2822 (payload)

How these are provided to the filters differ from SMTP to SMTP 
system, by in general, both are available.

Here's the problem.

You have generalize ASSESSORS to have two minimum inputs:

   BOOLEAN (DKIM verification result)
   STRING (DKIM D= value)

1) Why?  Do you have a specific ASSESSOR in mind that is only
privy to certain people?

2) How does a DKIM implementation generalize the fixed prototype
to satisfy newer ASSESSOR that require different input? You
are going to need some protocol that defines the input
requirements for the specific and different assessor.

The more general function prototype is to provide the entire process 
environment variables, this is 1000% better for the general population 
of developers of accessor routines:

ASSESSOR_RESULT is a function of SMTP data + DKIM result

this allows for example,a SMTP system to run a wildcard filter

FOR EACH ASSESSOR in ASSESSORS.LIST
   RESULT = EXECUTE( ACCESSOR, ENVELOPE, PAYLOAD)
   IF NOT RESULT
  THROW EXCEPTION, RETURN FALSE or whatever
   END IF
END FOR

That is general fit all never fail model. I'm pretty sure it applies 
to everyone, even you.

In short, it is the unspoken ASSESSOR API limited to two fields that 
needs to change to better fit a generalize global SMTP/DKIM model.

If don't your suggested way, then its becomes harder to program 
because it will look like this:

FOR EACH ASSESSOR in ASSESSORS.LIST
   PARAMETERS = QUERY_ASSESSOR_REQUIRED_DATA(ACCESSOR)
   RESULT = EXECUTE( ACCESSOR, PARAMETERS)
   IF NOT RESULT
  THROW EXCEPTION, RETURN FALSE or whatever
   END IF
END FOR

EXECUTE will now have to create the proper function prototype stack 
with the variable list parameters in order to satisfy specific 
ASSESSOR APIs with different functional prototypes.

Just providing feedback on years experience of developing an a high 
end SDK/API for C/C++, DELPHI, JAVA, PHP, VB, .NET languages and three 
basic API models; native, COM and .NET.

--
HLS

Murray S. Kucherawy wrote:

  BTW, What is the definition of an Application Programming Interface
  and what portion of DKIM is like an API definition.
 
  I'm quite comfortable with drawing an implicit you must be this 
tall line and assuming someone reading this, i.e. an implementer 
(e.g. YOU), will know what an API is.
 
  Or would you rather require even the definitions of words like 
framework, authentication, email, public key, verification, 
source, messages and transfer, all of which appear in the first 
sentence of the abstract of RFC4871, be included?
 
  Let's not be absurd here.
 
 
  ___
  NOTE WELL: This list operates according to
  http://mipassoc.org/dkim/ietf-list-rules.html
___
NOTE WELL: This list operates according to 
http://mipassoc.org/dkim/ietf-list-rules.html


Re: [ietf-dkim] Modified Introduction text forrfc4871-errata (resend)

2009-06-17 Thread hector
Murray S. Kucherawy wrote:

  All the errata is saying is that all DKIM APIs must return, at a
  minimum, the d= and the evaluation result.  There are no other
  limits imposed.

The concern I have is that an SMTP vendor may erroneous model his 
Assessor hook by recording two data points on the design presumption 
the assessor functional signature is:

 bool dkim_accessor(bool dkim_result, string d_tag_value);

When new assessors emerge, the potential is very high a different 
signature is required thus the new accessor will not be compatible 
with SMTP servers that do this.

For example, using our system, when we first produced our WCSAP 
product back in 2003 which evaluates the SMTP envelope using SPF and 
DNSRBL originally, the API prototype was fixed:

  BOOL Call_WCSAP(
  IP,   // client connecting ip address
  CDN,  // client domain name (HELO/EHLO)
  RP)   // Return Path, (MAIL FROM)

The Assessors here were locked for SPF and DNSRBL lookups and it 
return a TRUE and FALSE result.  TRUE continue with DATA, FALSE, a 550 
   reply code was issued.  The functionality was locked based on 
existing well known standard technologies at the time.  That is what 
I see here.

What happen is that over time, it evolved where we needed to pass more 
SMTP session and server information when a new assessor scripting 
rules were added:

 IP // client connecting ip address
 CDN// client domain name (HELO/EHLO)
 RP // Return Path, (MAIL FROM)
 FP_LIST// Forwarding Path (RCPT TO)
 SRV// Server Host domain
 SRVIP  // Server Host IP
 AUTHID // ID of AUTHenticated user

and the return status was no long TRUE or FALSE but a 64 bit double word:

 HIWORD - ACCEPT, REJECT, REJECT_BUT_KEEP
 LOWORD - REPLY_CODE

After this change, its been stable and there was no need to change in 
3-4 years.

So in my view, the SMTP system can potentially design the DKIM 
assessor two fields signature hook and lock himself in. Now only 
specific assessors are compatible with it.  Since we don't have any 
real experience of what assessors will need, I believe we can preempt 
the potential problem for SMTP servers and Assessor Developers by 
suggesting all information SHOULD be made available, and therefore 
Assessor Developers will have a persistent and consistent protocol to 
work with all DKIM compliant SMTP systems.

 You're not the only developer on this list with decades of professional 

  experience in multiple environments, Hector.  Let's leave the
  resumes off the list, please.  We're here to co-operate, not
  compete.

Of course, there was no suggestion otherwise, but it shows there are 
multiple valid viewpoints and I believe in general the RFC should 
minimize implementation API discussions here, especially the socket 
paragraph (get rid of it).  I think it is not correct as stated and 
could cause problems. I just don't think its necessary. The fact you 
did state they can add more information, it should not be a subjective 
thing. We are talking about the Assessor Interface, it should be a 
fixed consistent interface that all Assessor developers can depend on.

Anyway, I think this thread has run its course. :-)

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


Re: [ietf-dkim] Modified Introduction text forrfc4871-errata (resend)

2009-06-17 Thread Douglas Otis

On Jun 17, 2009, at 2:24 PM, Murray S. Kucherawy wrote:

 You have generalize ASSESSORS to have two minimum inputs:

   BOOLEAN (DKIM verification result)
   STRING (DKIM D= value)

 Correct.

 1) Why?

 There is use in specifying an API here.  Every other protocol we've  
 named so far as examples have an API, whether de facto from lots of  
 experience, or implicit from the spec that defines it the protocol,  
 or something actually explicit defining the API.  There's no  
 evidence that this is a bad idea.

This has already been defined by RFC 4871 as the i= value, and when  
that is not available, this defaults to @d= value.

The i= information is intended to provide guidance for annotating  
messages, whereas the d= value simply indicates where the key is  
published.  A modification to RFC 4871 that has the i= parameter  
routinely excluded from assessment then fails to offer the intended  
guidance AND fails to fully consider the source of the message.  The  
described use of your API even suggests that by offering i= value  
guidance, that the related message might become discarded.  There is  
ample evidence that discarding accepted email is deleterious, and in  
general, a bad idea.  The fact that users will not see discarded  
messages does not make this any better.   Some of the loudest  
complaints stem from missing messages.

 2) How does a DKIM implementation generalize the fixed prototype to  
 satisfy newer ASSESSOR that require different input? You are going  
 to need some protocol that defines the input requirements for the  
 specific and different assessor.

 Yep, and nothing that's been said so far precludes this idea.   
 Defining a minimum does not also automatically define a maximum or  
 establish other constraints.

Yes it does curtail the alternative.  By limiting assessments to just  
the d= value, and then suggesting that the i= values can be used for  
subsequent discard, creates a significant impediment to even offering  
the intended information.

In addition, by not assessing the intended on-behalf-of identifier,  
the i= value may overlook deceptive sources that might have been  
replayed and impractical to recall.  A service that offers an  
assessment of the i= value will ensure the information used to  
annotate a message is not from known deceptive or abusive sources.  If  
the service wishes to ignore a portion of the the i= value, it can.   
But ignoring a portion of the i= value has a potential for creating  
inter-operability issues.  The imaginary inter-operability issue  
becomes real with this change. :^(

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


Re: [ietf-dkim] Modified Introduction text forrfc4871-errata (resend)

2009-06-17 Thread Dave CROCKER


Suresh Ramasubramanian wrote:
   tFor signers and verifiers that have been using the i= tag as the
 primary value that is delivered to the assessor, a software change to
 using the d= tag is intended.
   /t
 
 s/intended/required/ possibly?

while you are right, practically speaking, that sounds normative, and this text 
needs to avoid any hint of trying to be normative.

-- 

   Dave Crocker
   Brandenburg InternetWorking
   bbiw.net

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