On Dec 16, 2020, at 5:36 PM, Benjamin Kaduk via Datatracker <nore...@ietf.org> wrote: > To start with the easy one: currently the way in which the structure of > the Commitment Message is described makes reference to many fields of > TLS Record Layer structures in order to specify what is fundamentally a > message on the TLS Application Data stream. This is a layering > violation; I don't see any reason to say more than what was suggested in > https://mailarchive.ietf.org/arch/msg/emu/ECgvnq-C_VVXT5bpvOowte8LBjw/ :
I will wave a magic wand of "implementation issues". :( There appears to be few ways to *explicitly* signal that negotiation has completed. i.e. ways which are both implemented in SSL libraries, and available to EAP-TLS implementations. We implemented multiple ways in FreeRADIUS (0 octet of application data and other methods). I'll have to double-check the list archive. But my recollection is that the "0x00" of application data was the least ugly alternative. > Next, the whole reason for the existence of a Commitment Message seems > under-justified -- the only mention I could find in the document is that > it serves "to decrease the uncertainty for the EAP-TLS peer". What harm > would be caused by a lack of certainty in this area? Why does waiting > for an EAP-Success or EAP-Failure not provide a similar level of > certainty? The EAP-Success and EAP-Failure messages are *not* protected. i.e. they are 4-bytes of data which can be spoofed rather trivially. In contrast, the 0 byte is an application-layer signal that EAP-TLS has succeeded. > The commitment message as specified seems to itself be a layering > violation. The TLS protocol itself consists of a few sub-protocols, > e.g., the handshake protocol, record protocol, and alert protocol. The > operation of the handshake protocol is supposed to be completely > independent of the application-data record protocol (except to the > extent that the handshake protocol supplies the keys used for > cryptographic protection of application data records). In particular, > there should not be any interaction between the handshake state machine > and the application data. If there is to be a commitment made about the > operation of the TLS handshake protocol, that more properly belongs in > the handshake layer itself, or perhaps the alert layer if it relates to > the overall operation of the TLS connection. It seems inappropriate and > unsustainable to expect that an application-data message would affect > the operation of the handshake layer. IMHO, it doesn't affect the TLS-layer handshakes. It's a signal specific to EAP-TLS, which is an application using TLS. > The use of application data for the commitment message also may have > unfortunate interactions with other TLS-using EAP methods, which is very > briefly mentioned as a possibility but not explored at all: I have a draft on precisely this issue. We have implemented TLS 1.3 for TTLS and PEAP (hostap && FreeRADIUS). Where they send application data, there is no need for a commitment message. The EAP method sends it's own application data. Where the methods don't send application data (i.e. session resumption), they have the same problem as EAP-TLS, and require a similar solution. In general, a number of your comments here conflate EAP-TLS with other TLS-based EAP methods. This document specifies a standard for EAP-TLS. It doesn't apply to other methods. There are similar issues for other methods, but those methods require method-specific solutions. > Section 2.3 > > The use of a constant 0x0D (the "Type-Code") as the TLS-Exporter context > is rather unusual; per RFC 8446 this value is intended to be a > "per-association context value provided by the application using the > exporter" per RFC 5705 -- this value is not a per-association value but > rather a global one. The existing TLS-based EAP methods have consistently used exporters which are global. I'm not even sure what would be used for per-association value. This is EAP, there is generally no underlying transport method (or data) which is consistently available to the EAP layer. i.e. Can you suggest a per-association value which would *work* for EAP? Across RADIUS, Diameter, PANA, ... > Section 5.5 > > It seems like there may be some scope for improvements on the RFC 5216 > behavior here. For example, what if we used the EAP Type field as the > TLS Exporter 'context' argument, instead of the literal 0x0D? The EAP-Type field is 0x0D for EAP-TLS. This value is hard-coded for EAP-TLS. For other EAP types, the use of the field is clarified here; https://tools.ietf.org/html/draft-dekok-emu-tls-eap-types-00 i.e. this document specifies EAP-TLS, and does *not* affect other TLS-based EAP methods. Those are defined elsewhere. > That > seems like it would prevent the modification from successfully causing a > different TLS-based EAP method to be used, by using a different > key-derivation formula, exactly as postulated by RFC 5126. I think there's a misunderstanding here. This document specifies EAP-TLS. It doesn't specify how other TLS-based EAP methods use TLS 1.3. The discussion in the WG, and implementations guided this approach. This document species EAP-TLS. The above referenced document "patches" this one in order to specify the use of TLS 1.3 with other TLS-based EAP methods. > If any authorization, accounting, or policy decisions were made with > information that have changed between the initial full handshake and > resumption, and if change may lead to a different decision, such > decisions MUST be reevaluated. It is RECOMMENDED that authorization, > accounting, and policy decisions are reevaluated based on the > information given in the resumption. [...] > > I'm not sure I understand how these two sentences fit together. Is it > trying to say that "if there could be a different decision, you > definitly have to re-check, and we recommend just always re-checking > since that's timpler"? Pretty much, yes. Alan DeKok. _______________________________________________ Emu mailing list Emu@ietf.org https://www.ietf.org/mailman/listinfo/emu