[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: draft-ietf-ipsec-ikev2-06.txt



At 11:57 AM -0400 4/10/03, David Jablon wrote:
I think I took a broader view of what "break something" means.
In the spirit of Hugo's medical analogy:
"The operation was a success!  But the patient died from complications."
I think the use of very weak keys breaks the utility of the method,
and even if allowed, should not be encouraged.

It doesn't break the utility of the method, it weakens it. There is a huge difference there. If it breaks it, you cannot ever allow it; if it weakens it, you are responsible for pointing out the weakness.


But you're absolutely right that I haven't justified the "MUST NOT" text,
given that I choose not to debate accomodation for weak keys.
"MUST NOT" doesn't work in that sense, regardless of what "I prefer".

I wonder if we can agree that the "MUST" text in the first part works?
Especially in light of the two other points that Hugo raised:
(1) that having the first case be "MUST" fixes other problems, and
(2) that it still permits implementors to derive full-length keys from
passwords of arbitrary length using arbitrary functions, if they so choose.

No, we still don't agree. If we say that the definition of MUST etc. comes from RFC 2119, we have to use that definition. This isn't hair-splitting: it is simple protocol mechanics.


The "other problems" that it fixes are non-fatal problems. They are related to the weakness of passwords, namely their susceptibility to faster dictionary attacks, but they are not fatal to the protocol. They don't affect the communication channel.

Please remember that we are talking about pre-shared keys here: *both* parties have to agree to using any particular key. If that is their shared security policy (even after our exhortations about the weakness of it), then that is what they want.

>But that is quite different than mandating that IKEv2 systems have to check the randomness of the preshared key.

Fine. I didn't propose that, and I never meant such a mandate to be implied.

By using a MUST in the proposed wording, you are saying that the implementation *has* to prevent passwords from being used.


>That is not what RFC 2119 says for the difference between SHOULD and MUST. If you want us to redefine the words in RFC 2119, we can, but you can't both normatively reference RFC 2119 and use the argument above.

It's not a definition issue. In the first part, "MUST" is justified, but in the
second part, "MUST NOT" isn't.


Part 1:
        ... this key {SHOULD | MUST} be of the length
        of the key for the prf agreed for use by the parties, ...

I see no need to re-define "MUST" and "SHOULD" to support this point: The "SHOULD" here gives license to an implementator to do potentially nasty things, like say, truncating all such keys to 64-bits, in the interest of handling passwords in some way.

Only if they have a technical reason to do so; that's what RFC 2119 says.


There is no technical reason that I know of that says that the length of the key matters to the PRF. If the length is shorter, the PRF will not fail, it will simply produce that much less value.

That "MUST" here helps to guarantee interoperability when using
full-length keys, and that "SHOULD" does not, is something I thought
you'd agree with.  And if not then, then perhaps now, in light of points
(1) and (2) above.

Sorry, maybe I'm being dense. I don't see how the SHOULD would not guarantee the interoperability. Let's say that both sides are using a PRF that wants 128 bits of keying material, and the two parties agree to a shared secret of "Baseball2003". How is the guarantee of interoperability broken?


>> and { MUST | SHOULD } *encourage* the
use of full-strength keys.

Now you are talking about the user interface, which most definitely is out of scope for this protocol document. If you want to write an implementation guide for IKEv2, this would obviously be appropriate there.

I see the point, but I'm not so sure about where that scope line is, or should be.

The IETF almost never mandates how a user interface or documentation should act. This is meant to be an IETF protocol, so we have to follow the IETF rules. That's why we are using RFC 2119, even though we could use some other definitions of MUST and SHOULD if we wanted to.


I think the current draft has already crossed the line in talking about the kinds
of keying material (e.g. passwords) that users will presumably stuff into the
user interface.

Where in the draft is that?


  And to maximize interoperability, one may wish to consider
the type and form of keying material that can be input (or output?), and any
relevant transformations that may be used by different implementations.

That is already done: none are prohibited.


Are special password-to-key transformations deemed out of scope?

Of course not: the two sides agree to a shared secret, regardless of how the secret is formed.


--Paul Hoffman, Director
--VPN Consortium