Hi Jari and co-authors,

Here is a review of the EAP-AKA' PFS draft version 02. Note, none of these comments preclude its working group adoption and these can be addressed before or after adoption as a working group item.

- Use of DH vs. DHE vs. ECDH vs. ECDHE

The draft almost uniformly refers to Diffie-Hellman (DH) key exchange. However, we can't achieve perfect forward secrecy (PFS) if static Diffie-Hellman keys are used. Therefore it might make sense to refer to Ephemeral Diffie-Hellman (DHE) and Ephemeral Elliptic Curve Diffie-Hellman (ECDHE) instead of DH. The use of DH throughout the draft is also surprising when only one elliptic curve is currently specified for the key exchange in the draft. If only elliptic curves will be supported (currently and in the future), then you can use ECDHE throughout. Otherwise, you can use the notation (EC)DHE.

- Use of g^x and g^y in message exchanges

The traditional notation of public keys g^x and g^y and derivation of the secret g^xy is useful and easy for understanding. The strength of the secret here is based on the discrete logarithm problem. For Elliptic Curve Diffie-Hellman, the notation would be a different (both parties have public keys as points on the agreed curve and after the key exchange, both parties compute another point on curve which is the shared secret). The strength of the secret here would be based on the elliptic curve discrete logarithm problem. The use of g^x and g^y while only supporting a single elliptic curve might confuse readers. It might be useful to at least add that g^x and g^y are used for notation and corresponding public keys of ephemeral elliptic curve diffie-hellman can be used in the messages (if both DHE and ECDHE are to be supported). If only ECDHE is supported, then it might make sense to explicitly clarify that g^x and g^y are used are for notation only. As another option, you can simply refer to them as PKs and PKp for public keys of server and peer.

- Negotiation of the ECDHE curve

I think this needs some more clarification. The AT_KDF_DH is used for deciding which ECDHE curve is used for the public key in AT_PUB_DH. So as the draft currently says, it is possible for the the server to send several AT_KDF_DH attributes in the order of preference. Does this also mean that it sends several AT_PUB_DH in the same order? I am afraid the message size may explode and without any fragmentation support, this is bound to fail. I guess you might initially send only one AT_PUB_DH with the most preferred AT_KDF_DH. If the client/peer does not support that and chooses a different AT_KDF_DH from the list, then a new EAP-Request is sent with a different AT_PUB_DH. Also, currently the peer will need to do AT_KDF and AT_KDF_DH negotiation separately, because EAP-Response/AKA'-Challenge message can contain only one attribute AT_KDF or AT_KDF_DH depending on what are you negotiating. Shouldn't they be done at the same time?

- Encoding the (EC)DHE public keys sent to Peer and Server

Currently the draft says at that the AT_PUB_DH contains the public value of the Diffie-Hellman key, and for curve25519 it is 32 bytes long.  As the test vectors in RFC 7748 say, that is 32 binary bytes. You would need to encode the public key when sending on the wire which would increase the size. Section 5.2 of RFC7748 shows the public key with Curve25519 key as hex encoded. I would strongly recommend encoding the public keys when sending on the wire with something like JSON Web Key (JWK). Also, Curve25519 is special. Most other curves have a public key as a point x and y. Without proper encoding it would be hard to interpret which bytes are x and which bytes are y and therefore inter-operable implementations would be challenging.

- No KDF on Z derived from EC(DHE)

The shared secret resulting from a EC(DHE) exchange is typically denoted as Z (perhaps you can use that instead of g^xy). This comment is related to the use of g^xy in the derivation of MSK, EMSK and other parameters shown in Section 6.3. I am not an expert with PRF vs KDF and others with more expertise maybe able to help more. My understanding is that a PRF places more stringent requirements on the uniform distribution of the secret key that is used. It might be better to pass Z though a KDF like those in the NIST  800-56A Revision 2 before using it in a PRF.

- The abstract and introduction refers to the RFC5448. Perhaps it should be updated to reference the draft-ietf-emu-rfc5448bis-01?

- In Section 1: " we as protocol designs can ask " should be " we as protocol designers can ask "

- In Section 1: " within that context will be EAP-AKA. " should be " within that context will be EAP-AKA'. "

- In Section 2: " This specification is an initial proposal for ensuring SIM-based authentication in EAP makes attacks difficult. Comments and suggestions are much appreciated, including design improvements. " perhaps can be removed now?

--Mohit


_______________________________________________
Emu mailing list
Emu@ietf.org
https://www.ietf.org/mailman/listinfo/emu

Reply via email to