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

Re: Secure legacy authentication for IKEv2




On Friday, January 17, 2003, at 08:04 PM, Charlie_Kaufman@xxxxxxxxxxxxxxxx wrote:


The changes I would propose (derived closely from Stephane Beaulieu's proposal)
are to leave the first two messages alone, replace AUTH and CERT in message
3 with an EAP exchange in messages 4 & 5 (and if more needed, 6 & 7, etc),
and deferring the completion of the child SA establishment from message 4
to the last message. Or more precisely:


No change to message 1.
No change to message 2.
Message 3: AUTH and CERT payloads are removed - perhaps an optional
indication of legacy auth methods supported.
Message 4: SAr2, TSi, TSr removed; EAP payload added
Message 5: EAP payload
Message 6: SAr2, TSi, TSr

(where extra pairs of messages can be inserted between 5 and 6 if more
than one EAP round trip is required).

If a legacy auth method that produces a shared key is used, the next
to last message should have an AUTH payload generated using that key.
The purpose is to protect against man-in-the-middle attacks. Defense
is only possible of the legacy auth method generates keying material,
and using that key for creating an AUTH payload is simpler than other
proposals that mix that keying material into the keys for the SAs.

Note that a (perhaps controversial) aspect of this proposal is that
the initiator identity remains in message 2. This has the advantages
that it minimizes changes to the protocol and may avoid a round trip
in the EAP protocol because the responder doesn't have to separately
prompt for username.

Is this a valid optimization, i.e., is it that most EAP implementations will be able to avoid an EAP protocol exchange to prompt for user identity if the user identity is available out-of-band (w.r.t. EAP)? RFC2284 says that that exchange is optional, but it doesn't say what's BCP (and I have no idea). It might be worth pointing out that IKEv2 implementations will likely be calling out to existing EAP implementations and therefore need to adhere to whatever existing EAP API's currently allow. More below...


 It has the disadvantage that it presumes that
with all legacy authentication methods there is some expression of
the user's identity that can be prompted for in a uniform way. I
can't think of any case where that wouldn't be true.

What do people think?

--Charlie

Typical protocol run for the legacy auth case where we're just
prompting for a username and password would be:

       HDR, SAi1, KEi, Ni   -->
                            <--    HDR, SAr1, KEr, Nr
       HDR*, IDi, [IDr,]
            SAi2, TSi, TSr} -->
                            <--    HDR*, IDr, [CERT,] AUTH, EAP(pwd)
       HDR*, EAP(pwd)       -->
                            <--    HDR*, SAr2, TSi, TSr}

[You have some extra "}"'s here which I assume are transcription errors...]


vs. SLA comments:

In SLA, the client didn't have to reveal his identity until after the gateway proved its identity. Here, the client sends his identity in message 3 before the gateway proves its identity in message 4. This proposal allows any active attacker to observe client identities by simply replying with message 2.

EAP integration comments:

Note: I'm convinced that using EAP is a good idea. My comments aren't intended to argue against it...

1) Are existing EAP implementations prepared to associate an externally derived user identity with an EAP exchange? If so, the assumption that the EAP(Request/Identity) and EAP(Reply/Identity) round can be optimized out is valid. If not, it probably ought to begin in message 2. Which bring us to the second point...

2) How does a gateway know its doing SLA? SLA proposed a separate exchange type for this. Since this does not resemble "normal" IKEv2, I think a separate exchange type is justified. It's also good for the responder, since he can tag the larval exchange as being SLA. And it also makes the question about the EAP identity prompt round moot, since the gateway could respond with an EAP(request/identity) payload in message 2.

3) You're missing the final EAP(Success) or EAP(Failure) payload, which needs to be returned by the gateway in its final response (to complete the EAP protocol). That would be message 6, as you've drawn it.

All in all, there's not that much difference from what I wrote on 12/21.

	HDR, SAi1, KEi, Ni			-->
							<--  HDR, SAr1, KEr, Nr,
								  EAP(Request/Identity), AUTH
	HDR*, SAi2, TSi, TSr,
		EAP(Reply/Identity)	-->
							<-- HDR* EAP(n)
	HDR*, EAP(n)				-->
                                 <--	HDR*, EAP(SUCCESS),
									  SAr2, TSi, TSr

...or...

<-- HDR*, EAP(FAILURE)

To summarize the differences, some of which are admittedly trivial:

1) Do we need to allow for the EAP identity exchange? If so, where does it occur?

2) Do we want to require or allow IKE ID payloads in addition to the EAP identity?

3) Addition of optional CERT payload returned by the gateway along with its AUTH payload.

4) What is the order of the EAP payloads relative to other payloads?

5) AUTH payload in message 2 or message 4? --> implication for client identity protection

6) Is this a separate exchange type or not?

I still think there's value to having the gateway prove itself *before* the client has to reveal his identity, but that's just my opinion. Note that the change that Hugo proposed to move the identity binding MAC into the signature definition is necessary if the AUTH payload happens in message 2, but not if it happens in message 4 with explicit IKE ID payloads.

Derrell