Re: Realisticness of header rearrangement

Laird Breyer <[email protected]> Tue, 6 Apr 2004 12:53:17 +1000
Newsgroups gmane.ietf.asrg.filtering
Message-ID <20040406025317.GC2912@ender>
On Apr 05 2004, david nicol wrote:

> 
> And the second use isn't a time stamp any more, therefore its confusing.
> An explicit event-ID would be clearer (not confusing as a timestamp
> being
> used for something other than marking the time something happened))

The received time stamp is only a hack, but it's the only one that has
a hope of working. 

AFAIK, all the other elements of a Received: line stay the same for
all messages passing through that MTA. So in practice, a spammer
simply has to get a hold of a single message which passed through the
MTA, and he can harvest all the unchanging elements of the Received:
line (name of server, its ip address, whatever).

So for example if your filter-event-id is based on the MTA name, then
a spammer can spoof this easily. If your filter-event-id is based on
the timestamp, then because the timestamp changes from message to
message, the spammer can't learn such a timestamp to spoof 
such a filter-event-id.

Ideally, in the future, the Received: line should contain a randomly
generated token, then we could use that token instead of the timestamp.

> A filter-event-id, re-use the messageID or make up a new code, could be
> protected by vendor-specific checksumming, could be listed in an
> independently verifiable database accessible via another channel,

What if the spammer inserts his own messageID right at the beginning
of the transaction? He could program his client to pretend it is a
relay.

> etcetera,  Yes you can do all this with a timestamp but if processing
> more than one message per second a timestamp/messageID tuple would be
> required anyway.

Not so. You can process as many messages simultaneously as you like,
the trust issue is only confined to a single message at a time. 

E.g.: When a filter is trying to detect a spoofed tag in message M, then 
the fact that another message M' exists somewhere else in memory has
no relevance.  

> I'd like an explicit Received-ID or Action-ID or tagging-ID to use
> instead of timestamp.  Using timestamp for ID seems to me to be an
> ugly kluge instead of an elegant reuse of existing information.  This
> may be a purely aesthetic opinion.

That's possible and easy to do. For example, instead of using the
timestamp string as-is, it could be hashed, or it could be transformed
into a number of seconds since january 1, 1970. In that case, you
would have the received-id given by some large integer.

Just to reiterate, even though I've said it a few times: the timestamp
is only used as a piece of information that is supposedly unspoofable by the
spammers, except by chance. The actual date represented by the
Received: timestamp is unimportant, any function of it would work just
as well.

-- 
Laird Breyer.