I realize I'm a few days behind (traveling immediately followed by
jury duty), and that Jim already did a pretty good job of answering
this, but I think I can still add something to the discussion.
--On December 9, 2007 12:33:31 PM -0800 Jon Callas <[EMAIL PROTECTED]>
wrote:
I agree wholeheartedly with his basic premise, that SSP started off
being modest, and has grown into the experimental and
encompassing. I also agree that this isn't good.
IAWJ (I Agree With Jim): what is this early, modest SSP? The
earliest published in the DKIM work was draft-allman-dkim-ssp-00
(July 2005). In most ways, this was more complex than what we have
today, as Jim has noted, with the exception of handling=.
So I'm going to pull back and describe how I think we got here.
Back in the days of DKIM-base, we started with considering what
happens with broken signatures. We also believed that it would be
not uncommon for a legitimate message to get its signature broken
in flight.
Actually, we (or at least, I) started thinking about unsigned
messages first, since it seemed pretty obvious that senders that
wanted to sign everything would want recipients to be able to make
use of that information. I didn't originate this concept: it came
from DK (RFC 4870).
The next step was realizing that if messages with unverifiable
signatures were treated better than messages with no signature at
all, attackers would just insert bad signatures. There were two
options: treat messages with unverifiable signatures with more
prejudice (more suspicious, more likely to be the result of an
attack, whatever words you want to use) than unsigned messages, or
treat the two the same. Since we had reason to believe that there
might be a large number of unverifiable signatures in the short run
as a result of modifications during transport, treating them
differently seemed imprudent.
When you consider what the receiver is supposed to do with a broken
signature, the first suggestion is, "Well, do what you did before
DKIM." This is legitimate, if unsatisfying. It is more unsatisfying
the more that signatures can be expected to land unmolested.
Except that the first suggestion applied to unsigned messages, not
broken signatures. Otherwise, IAWJ.
Secondly, if you consider the senders for whom DKIM is most
valuable - -- big phishing targets -- they want the illegitimate
message thrown away.
Here's where the "how much can senders impose on verifiers?" question
starts to come into play. Some sites would like unsigned and
unverifiable messages thrown away, others might prefer that you treat
them like you would in a pre-DKIM world. Some large ecommerce sites
have arranged side agreements with large receivers to enable this
(such as PayPal and Yahoo), but this obviously does not scale.
This leads us to a nice confluence of events. The receiver has a
message it isn't sure what to do with, and the sender can offer
helpful advice. If the sender says, "I'd rather you threw away a
good message than accept a bad one," then the receiver has a hint
as to what to do with it. Don't bother trying to process it, just
junk it.
Thus is born SSP, and thus is born the "I sign everything" policy.
This is non-controversial, we all think it's great. As a receiver,
if I see a broken signature, do an SSP check and if it says "sign
all" I can now just throw the message with the broken signature
away.
Actually, thus is born handling=, and it apparently is controversial.
IAWJ: "I sign everything" means something else. This may be wrong;
perhaps "dkim=all" should imply that the sender would prefer that the
receiver immediately discard any messages without legitimate
signatures.
However, next comes an addition to that. If we assume there are
active bad guys, they'll just send their bad messages with no
signature. Consequently, we can solve this by redefining a broken
signature to include messages with no signature. It doesn't take
much of a stretch to consider no signature to be merely the most
extreme form a broken signature. This way, we end up will all
forged messages pretending to be from a signing domain to be
dropped at the receiver.
Historically this was not an addition. This was the very first
consideration.
This is undeniably a Good Thing. I support it, myself. However, it
is also precisely the place where SSP jumped the shark. All the
further mission-creep of SSP comes from this one
seemingly-innocuous, well- meaning change.
Again, it was original. I don't see how it jumped the shark at all.
This *radically* changes SSP in two fundamental ways:
(1) It changes SSP from being a protocol that governs the error
condition of an optional protocol to being a protocol that governs
*every* email received by *every* MTA.
Not true. It remains an optional protocol (the receiver doesn't have
to read information that it isn't prepared to use), and it does not
apply to messages with valid, first party signatures. I personally
expect that to be the majority of legitimate mail once DKIM is widely
adopted, but that's a personal opinion, and in any case the
legitimate mail is swamped by the garbage.
(2) It changes SSP from being *guidance* that a sender gives to a
receiver to a *mandate* that the sender gives to the receiver.
I think you've made a huge leap of faith here. For better or for
worse, even pre-DKIM the sender doesn't really know what the receiver
is going to do with the message (for example, if the receiver dropped
the message into the limbo of some quarantine or spam folder). You
described it correctly up above: ``the sender says, "I'd rather you
threw away a good message than accept a bad one," then the receiver
has a hint as to what to do with it.'' I don't see the a "mandate"
anywhere in that sentence, but I do see "hint".
The first one is troubling for a number of reasons. When we started
DKIM, we told the rest of the IETF that this was an optional
protocol, you didn't have to use it, and so on. We also cooed
softly at the people who worried about the increased DNS use,
arguing many ways that this wouldn't dramatically increase the
global load on DNS all that much.
And I don't personally believe it does increase the load
"dramatically". Yes, there will be additional DNS queries --- in
addition to the queries that most receiving MTAs do when the
connection opens (typically two or three: PTR then possibly AAAA then
A), on the MAIL command (varies based on implementation, but can be
as many as three --- MX, AAAA, A), possibly on the RCPT command (also
possibly as many as three), and to fetch the DKIM selector (one TXT
query). As Jim has pointed out, the current SSP draft maxes at three
queries, one of which is just to verify the existence of the
purported sending domain. We should probably change that to not
mandate an MX lookup, since the actual record type is irrelevant (an
ANY lookup might be good enough if we trusted the implementation,
which I have found to be spotty).
While this addition (SSP check on every message) is certainly a
Good Thing, it means that we've gone back on our word to the rest
of the IETF. I think it could be argued that that this violates
the DKIM charter, in spirit, if not in the letter.
This is pretty subjective. But for the record I disagree.
The second one is much subtler. It's a principle of email sending
that the receiver can do whatever they want, no matter how stupid.
While it may be useful for the sender to offer hints and guidance
to the receiver, the sender cannot mandate. While I don't know
how, I see here the makings of an exploitable architectural flaw.
And I don't see how SSP changes the underlying principle. The sender
isn't mandating, it's providing hints, or at most requesting.
I think we need to take a big step back from SSP. We need to
seriously look at all policies other than the original "sign
everything" policy and discuss them thoroughly. We need to
seriously look at that one little change and discuss how it
changed, as Dave said, the very *paradigm* of SSP.
I offer as a suggestion that we issue an SSP document that
describes only the basic broken-signature-only model of SSP with
only the one policy (sign-all).
I strenuously disagree with at least the first half of this proposal.
If you don't look at SSP on messages with no signatures, then SSP is
vanishingly close to useless. Attackers will simply send their
phishing messages without a signature, thereby guaranteeing at least
a chance of getting through. If SSP is that weak, receivers have no
incentive to consult it at all, and we get no operational experience
and hence cannot progress.
After that, we look at
enhancements to the model carefully. We seriously discuss whether
they are outside the charter because of the effect it has on the
global email infrastructure to turn DKIM from an opt-in protocol
to a you-must protocol. We also seriously have to look at other
policies to discuss their effectiveness along with their
environmental effects.
I'm not sure if you intentionally changed the topic from SSP to DKIM
here. Regardless of the details of SSP, DKIM remains optional. For
that matter, receivers don't need to do any scanning of their mail at
all today, and that isn't going to change. I certainly hope that
DKIM information will become valuable enough that most receivers will
/want/ to consult it, and I hope that they will care enough about the
information that senders care to provide in SSP to use that as well.
eric
_______________________________________________
NOTE WELL: This list operates according to
http://mipassoc.org/dkim/ietf-list-rules.html