Re: PEAPv0 TLS 1.3 EMSK

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

 



On Mon, Jan 28, 2019 at 10:50:29AM +0700, Arran Cudbard-Bell wrote:
> In previous TLS versions (<= 1.3) the output of the PRF used for key derivation did not vary depending on the number of bytes generated.
> 
> i.e. if 32 bytes were requested from the PRF, then 64 bytes were requested, provided the other inputs were the same, the first 32 bytes of both values generated would be the same.

> With TLS 1.3 and HKDF, this is no longer the case.

> This means when the EAP client and EAP server are deriving keying material, they must request the same number of bytes from the PRF.

And that's one of the reasons why PEAP and EAP-TTLS (or any other
TLS-based EAP method for that matter) needs to disable use of TLS 1.3
until the needed changes to the EAP method has been defined.. Another
significant issue of uncertainty here is in which labels to use in the
PRF taken into account that draft-ietf-emu-eap-tls13 proposed different
labels to be used for EAP-TLS with TLS 1.3 and the design in PEAP and
EAP-TTLS was originally close to the one used in EAP-TLS.

> For PEAPv0 The current FreeRADIUS code requests 128 bytes from the PRF to generate both a MSK and EMSK.
> For PEAPv0 wpa_supplicant requests 64 bytes and does not generate MSK and EMSK values.

wpa_supplicant derives only MSK for PEAP since I could not find a
definition of EMSK for PEAP (v0 or v1) when working on the ERP changes.
I did address a similar issue with other TLS-based EAP methods, though,
between hostapd and wpa_supplicant implementations when going through
the needed ERP and TLS 1.3 changes. In other words, if the EAP method
has a clear definition of EMSK derivation, wpa_supplicant will derive
both MSK and EMSK together to avoid this issue with different PRF
result.

> Because of the differing number of bytes requested from HKDF, the output of HKDF differs on the EAP-Client and EAP-Server.
> 
> Does anyone have any thoughts on solving this interoperability issue?

The only robust option today seems to be to disable TLS 1.3 for PEAP..
It would be nice to get an updated definition of PEAP v0/v1 to clear
spell out the rules for deriving MSK, EMSK, and Session-Id and also the
labels to be used in all various cases to address this type of
interoperability issues.

I'm not planning on enabling TLS 1.3 for PEAP any time soon, so this
should not show up in practical cases as an interoperability issue. That
said, if there is desire to get some testing done in experimental
settings with TLS 1.3, I guess I could be convinced to try to
extrapolate the PEAPv0 specification (both
draft-josefsson-pppext-eap-tls-eap and MS-PEAP) to imply that the MSK
derivation uses PRF to extract 128 octets of Key_Material in all cases
and that this applies to TLS 1.3 as well. And maybe remaining with the
same label string that was originally used in EAP-TLS (instead of the
one used in draft-josefsson-pppext-eap-tls-eap or the one that is
misspelled in MS-PEAP or the one that is proposed in
draft-josefsson-pppext-eap-tls-eap).

-- 
Jouni Malinen                                            PGP id EFC895FA

_______________________________________________
Hostap mailing list
Hostap@xxxxxxxxxxxxxxxxxxx
http://lists.infradead.org/mailman/listinfo/hostap



[Index of Archives]     [Linux Wireless]     [Linux Kernel]     [ATH6KL]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Samba]     [Device Mapper]

  Powered by Linux