ietf-dkim
[Top] [All Lists]

Re: [ietf-dkim] draft-ietf-dkim-base-08 submitted

2007-01-22 13:39:40
On Mon, 22 Jan 2007 12:32:10 -0000, Hector Santos <hsantos(_at_)santronics(_dot_)com> wrote:


When the l= tag is specifically set to a zero value (e.g., l=0), per DKIM-BASE specification this means there is no hashing of the body, regardless of size. As a consequence, technically, the body can be altered and passed on.

When the l= tag is not zero, this means the body was hashed, including the possibility of the l=2 condition where there was only two bytes hashed which MAY OR MAYBE be <CRLF> bytes.

So you have three conditions:

   l=0    No Body hashing (original body is not protected)
   l=2    May or may not be empty (could be 2 non CRLF bytes)
   l>2    Not an empty message, contains at least 1 byte.

The likely cases (including no l= tag at all, as you mentioned later) would be put there by the signer for the following reaons:

   l=0     I did not sign the body, and I accept that it may be altered in
           transit (undetectably), and I don't care.
   l=y where y>>0
I signed y bytes of the message, and I don't care if anybody adds (or alters) anything beyond that (usually, y is the original length).
   n tag absent
           I signed the whole body, and I don't want anybody adding extra
           stuff beyond the end.

Now you seem to be saying that, supposing empty bodies hash as zero bytes, it is impossible to distinguish whether l=0 means
           I didn't sign the body, and I don't care if someone alters or
           extends it during transit.
or
           I did not provide any body, and I don't care if someone adda a
           body during transit.

These two cases are so similar that I see no necessity to distinguish between them.

So why would one hash a L=2 condition?

In order to distinguish between a hashing condition (l is not zero) and a non-hashing condition (l is zero) and the special case where the body is actually deemed SIMPLE c14n "empty", it might be desirable to hash the SIMPLE c14n "empty" body to simply indicate that the *original message body* was indeed EMPTY and not a case were the BODY was altered to a zero size.

Your first sentence there seems to be distinguishing between three things with only one bit of information. But I think the distinction you are trying to make is the same as the one I mentioned above, and I see absolutely no reason why making that distinction will ever be helpful.

In the event that the sender intended to send an empty body, and wants to be sure that it arrived as an empty body (which seems to be the third item in your first sentence), then he would simply provide no l= tag at all.

[As an aside, if l=0 is provided in the present draft (meaning no body signature), what appears in the body-signature-hash space in the signature? Is it the result of applying sha-256 to <empty>, or is that hash space omitted from the signature entirely?]

Example:

So we hash the SIMPLE c14n empty message with the <crlf> l=2 bytes to indicate that the message was indeed "empty" and not some malicious body altered message if l=0 was allowed to be used to indicate an "empty" message.

But l=2 does NOT indicate that the message was "empty". It merely indicates that the first line of the message was an empty line. It says nothing about the huge text that follows that empty line, whether that text was provided by the original sender or by soem intermediate scammer.

--
Charles H. Lindsey ---------At Home, doing my own thing------------------------
Tel: +44 161 436 6131     Web: http://www.cs.man.ac.uk/~chl
Email: chl(_at_)clerew(_dot_)man(_dot_)ac(_dot_)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