[ietf-dkim] Issue 1386 and downgrade attacks

Eric Allman eric+dkim at sendmail.org
Wed Feb 28 09:23:03 PST 2007


(For some reason Charles didn't copy the group on his reply to my 
message, so I've included the entire thing even though I only have 
one comment.


--On February 27, 2007 1:16:05 PM +0000 Charles Lindsey 
<chl at clerew.man.ac.uk> wrote:

> On Mon, 26 Feb 2007 22:31:15 -0000, Eric Allman
> <eric+dkim at sendmail.org>  wrote:
>
>>         RA      RAB     RB
>> SN      N*      N*      N*
>> SA      A       A       X*
>> SAB     A       AB      B
>> SB      X*      B       B
>>
>> Of course N means that there is no signature to verify and X means
>> there   is a signature that cannot be validated.  Pragmatically X
>> and N have the   same semantics since -base says that an
>> unverifiable signature is   equivalent to no signature. "*" means
>> that the recipient will do an SSP   lookup, at least as we (well,
>> myself at least) currently envision   things.  Also, any signature
>> that R cannot verify is treated as the SN   case.
>>
>
>> CASE I: SIGNATURE ALGORITHM
>>
>> Scenario: S (the sender) starts signing using both A and B, and
>> publishes selectors for each (i.e., we move down in the chart from
>> SA to   SAB).  As the time goes on we move from left to right in
>> the chart: R   first checks using A, then can try either (and
>> presumably prefers B),   then refuses to use A any more.
>
> Stop right there!
>
> Go back to the time before R starts using B (i.e. we are in state
> SAB  + RA).
>
> That state may persist for some considerable time (>>days, if not
> quite  years), and that is the window of opportunity for the
> attacker.
>
> He constructs bogus messages signing them with B (who cares whether
> they  are valid or not?).
>
> R cannot check their validity, but he can recognise that B is a
> valid  algorithm for messages sent from S, and also that "S signs
> everything".  So, knowing that the problem is likely at his end, he
> allows the (bogus)  messages through.

Any R that allows a signature through that it can't verify just 
because there is a DKIM-Signature header field in the message 
deserves everything it gets.  I'm not interested in adjusting the 
protocols to make life easier on outrageously stupid implementations.

I guess I need to add a new assumption to my analysis:

ASSUMPTION 5: Whoever implements the verifier at R must actually 
implement the specification as written.

> The proposed solution is that the SSP should enable S to say "I
> sign  everything with both A and B". In that case, R can observe
> that an A  signature (which be could have verified) is absent, and
> so he knows it is  bogus.

eric



More information about the ietf-dkim mailing list