Rolf E. Sonneveld wrote:
> On 5/4/11 1:25 AM, Murray S. Kucherawy wrote:
>> The assertion you're making is that the consumer of an API shouldn't 
>> need to maintain any context; the API will give you back all the bits 
>> of context you need to continue as well as the answer you need.
>>
>> ..
>>
>> So it is with DKIM: If you get back an indication from a verifier 
>> function that a signature verified, then the signature covered the 
>> lowest From: field that you presented to it.  You know that because 
>> that's how the interface you're using was defined.
> 
> For a scenario where a caller is calling a DKIM milter which in turn 
> calls an API, this is all true. But DKIM will be/is deployed in many 
> more scenario's. Consider scenario's like:
> 
>    * there can be one or more hops between verifier and consumer
>    * between verifier and consumer MTA's can re-order From headers,
>    * or remove From headers if there is more than one of them present.
>    * What if Postini and MessageLabs are going to use DKIM for inbound
>      traffic for their customers and want to communicate the DKIM
>      verification results to the consumers within the mail infra of
>      their customers?
> 
>> An implementation certainly could give you back that From: field's 
>> contents (and OpenDKIM does, if you ask for it), but still I don't see 
>> any reason to make it mandatory.
>>
>> I might even go so far as to say returning that From: field is 
>> dangerous since it is not confirmed by anything, so DKIM (which is an 
>> authentication protocol) returning data that can't be validated, even 
>> if it was signed, is quite possibly asking for trouble.
> 
> But then DKIM is only authenticating the d= and we should no longer 
> position DKIM as being 'effective in defending against the fraudulent 
> use of origin addresses'.

+1 well said.

Let me show examples of the DKIM mail integration dilemmas. My apology 
for the length of this, but I am trying to extract all the key design 
issues we are facing or will be facing with DKIM:

A fundamental flaw is to believe all backends have a RFC5322 Mail 
Store. The protocol has to provide for discovery for the software 
engineering interface points to engineer the integration and 
transformations needs.

RFC4871bis is saying there is an mandatory interfacing point for a 
trust transformation and believing that leaving the door open with 
stating the possibility of other outputs is universally obvious.

For a DKIM software engineering minimal, DKIM-BASE needs to expose the 
interface points such the ODID (or From) and the AUID which is 
explicitly stated as a MAY therefore it should also be part of the 
Outputs.  Reasonable engineers to exptract from RFC5585, RFC4686 the 
interface points for  the "black box" transformed outputs.

There are only four minimal elements that can be extracted based on 
all the different considerations since RFC4871 with all the related 
consensus built documents:

        verification status
        SDID   signer domain
        AUID   agent/user identity
        ODID   author domain

Everyone will need those parameters to satisfy the DKIM Service 
Architecture which includes security, policy and trust considerations.

When one actually begins to employ DKIM in a total mail systems that 
includes:

    - internet hosting with SMTP, POP3, NNTP, MLM, IMAP, etc,
    - how mail is stored and/or transformed, and
    - online/offline MUA considerations

it become more clear of what inputs/utputs are needed for DKIM 
purposes and also the complexity of where the "trust" increases and 
decreases.

Example:

Remote UserA sends dkim signed mail to Local UserB and Local UserC at 
the same local mail host.

UserB likes to use the Online Mail Access (Web site, but it can be any 
other online connection device).  UserC was an online person, but he 
slowly migrated over the years to an offline RFC-based Mail 
Reader/Writer (Outlook, Eudora, Thunderbird and many others).

UserB - online user.

It should be fairly obvious that the centralized backend has rendering 
control for UserB and has all the power to provide the security, 
policy and overall trust outcomes the UserB.  During the import 
process from remote userA, depending on the backend storage method, 
the information was generated necessary for the backend to display the 
information to the UserB.   To assume the backend will do the 
verification dynamically with each message reader, while possible, 
probably not very efficient.  So the odds are good the verification 
was be done once and all the outputs will need to be stored.  Whether 
one is using a raw RFC54322 storage method or it is protocol assumed 
that is expected is not the point because in cases, the output must be 
common.  What is important to consider is that it is backend that is 
telling UserB and all online access users is that what they see 
"should be" trusted (at least in the header display)

UserC - Online User.

Let uses POP3.  Backends don't have control of what is display or how 
it will be displayed at the header level.  We have historical BCP 
across all mail systems and in all mail networks, that at the very 
least it will have, in no particular order:

   Date:
   From:
   To:
   Subject:

Since there is a time-shifted mail application, you might also see a 
received or reception date because its not generally the same as the 
originating date.

What it is important though that it is RFC5322 based and whatever DKIM 
related  information the backend wishes to provide to the UserC will 
be included in the headers. This is important as I described in the 
second part of this UserC offline mail consideration.

What is also important is an "inherent" trust factor for the UserC 
using the backend mail host. Its not an blind consideration for the 
user to pick or use a particular mail host. So even if it was not 
possible for the backend to display that security, policy, trust 
information that was certifiably verified once already at the backend 
to the user, UserC does have some, possibly faulty, level of trust 
already.

So the question of whether the offline MUA duplicating this 
recalculation become more relevant - for UserC sake.

What I think about what can be displayed to the DKIM-aware or perhaps 
just a simpler DKIM-Report-Aware MUA so that he doesn't have to redo 
the calculation DKIM overhead in a trusted manner.

Can an Authentication-Results header from the same Backend Mail Host 
only (1 degree of separation) be used for the DKIM-Report-Aware MUA?

Remember, the offline MUA may independently decide not take user 
considerations into account for a trusted backend and just do what it 
thinks is best or a more advanced DKIM ready MUA may provide the DKIM 
related user options along with the other common MUA mail pick up 
options already existing for an account setup:

    [_] Enable DKIM support
        (o) Use A-R DKIM results from the same mail host
        (_) Calculate the DKIM verification.

So things are possible.

There is also other methods a backend can do and this is based on 25+ 
years of offline product design experience.  Overall the product goal was:

     Providing the same (or equal) reading experiences and
     security requirements necessary for online access in
     a time-shifted offline manner.

For those who were in this market, it is fairly obvious.  But this 
highlights two things:

     - Backend transformation (i.e. POP3 transformation to RFC5322)
     - New ideas to support legacy MUA using forced display header changes

You have to accept the idea for the long history of many backends with 
real motivations to transform RFC5322 into proprietary backend store 
formats (i.e. one may be to limit/lower PCI related security concerns 
regarding HTML/Javascript exploits, another are mail streams where 
multi-media is not important, there are many reasons including 
reducing storage space requirements).  But for the user who has 
migrated to offline access, the idea of giving them original content 
perfection became more relevant and a tougher local policy decision.

But still have growing needs to address the market of legacy or better 
the BCP MUA design where essentially there is no standard protocol to 
control what headers are displayed.   There are two ways to approach this:

1) Wait for the Offline MUA to die off

We have a new recycling towards centralization, and we can just wait 
out the departing generation of Offline MUA users and focus designs 
towards Online MUA access.   You can see this in high-value email 
notifications with secured content design that is based on the idea is 
reading it online.  You can also see this with the recent Microsoft 
move to remove and no longer supporting the 20+ years of 
microsoft.public.* newsgroups and shifting it to online mail forums.

2) Proxies

You can design proxies or design backend forced changes in the header 
display to reveal more information.  For microsoft, their migration 
solution included a backend API Proxy for NNTP client/servers to 
assist the market of RFC-based News Readers.  Since their proxy was 
limited, had Input/Output transformation bugs, others wrote better 
proxies. I wrote one as well called "Wildca! Live Exchange" 
(http://opensite.winserver.com/wclex).

The goal again was to give the Microsoft Online Reading experience 
which now included all the new outputs to display, in an offline 
manner. Using a few of the  output examples, online you see stuff like.

    From: Whoever
    Status: MVP
    Stars: 1 to 5
    Member Since:
    Number of Posts:

Those are all "Trust" ideas in the area of what users can believe or 
accept or not in solutions value.

So with WcLEX,  some of the outputs where used in setting the 
RFC5322.From, so the news reader using the wcLEX proxy:

    From: Whoever [MVP, Stars: 4, Post: 243] <whoever@msforums>

and wcLEX also haves options to write this and more backend details in 
the content using mixed html/text MIME parts.

In summary, if RFC4871bis focuses on just exposing what is a single 
mandatory output and not what is DKIM Output Complete, certainly life 
doesn't end, but it does certainly makes it harder to extract and 
derive necessary mail integration solutions.

DKIM-BASE certainly makes it clear what is mandatory and if we just 
focus on that and totally forget about ADSP and other things related 
to it, then its easy to see what is only needed to convert to UserB 
and UserC.

      Signing by:
      Trusted Signing by:

and the problem is that the default design is to lock that in. 
DKIM-BASE should allow for all the minimal extracts that can be obtained:

      Signing by:
      Trusted signing by:
      Authorized signing by:
      Authorized and Trusted signing by:

I am not saying that just because I am strong advocate for policy, but 
it is all part of the total mail integration picture based on what 
what encompasses the current DKIM mindset and considerations.

Future implementators will be at an disadvantage and fortunately, we 
were able to get the new section 1.1 which the additional "clues" for 
engineers to find out all that is needed.  But it would be so much 
simpler if the new Output Requirements section was a better summary of 
the DKIM Output Complete values to consider.

I know one thing, DKIM is a complex beast and the last thing we need 
is more protocol relaxation and incomplete exposure of information in 
indirect and ambiguous ways we know offer utility.

-- 
Hector Santos, CTO
http://www.santronics.com
http://santronics.blogspot.com


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

Reply via email to