On Mon, May 20, 2024 at 6:24 PM Alan DeKok <al...@deployingradius.com>
wrote:

> On May 20, 2024, at 6:30 PM, Orie Steele via Datatracker <nore...@ietf.org>
> wrote:
> > # Orie Steele, ART AD, comments for draft-ietf-emu-rfc7170bis-16
> > CC @OR13
> >
> >
> https://author-tools.ietf.org/api/idnits?url=https://www.ietf.org/archive/id/draft-ietf-emu-rfc7170bis-16.txt&submitcheck=True
> >
> > Thanks for this document.
> >
> > I'm not familiar with EAP or TEAP, please keep this in mind when
> reviewing my
> > comments.
> >
> > ## Comments
> >
> > ### Why SHOULD use private CA?
> >
> > ```
> > 561        included, but their use is discouraged.  Systems SHOULD use a
> private
> > 562        Certification Authority (CA) for EAP in preference to public
> CAs.
> > ```
> >
> > Perhaps the answer is obvious to experts, but I wondered what
> interoperability
> > issue this addresses.
>
>   In short: the main public CAs are *web* CAs.  Which for various reasons
> are not always suitable for use with non-web protocols.
>
>   I'll clarify the text.
>
> > ### Why not MUST?
> >
> > ```
> > 896        Implementations SHOULD limit the permitted inner EAP methods
> to a
> > 897        small set such as EAP-TLS, EAP-MSCHAPv2, and perhaps
> EAP-pwd.  There
> > 898        are few reasons for allowing all possible EAP methods to be
> used in
> > 899        Phase 2.
> > ```
> >
> > I wonder if there are really any reasons to allow all possible methods,
> and
> > what impact they have on interop.
>
>  The methods listed above are the most widely implemented, and are thus
> expected to work.
>
>   Other EAP methods such as EAP-AKA are intended for use with the 3G+
> telecommunications network.  There isn't much point in using them inside of
> a TEAP / TLS tunnel.  So it's best to suggest that they not be used
>
> > ### Updates RFC9427?
> >
> > ```
> > 907        methods which can tunnel other EAP methods.  As a result, this
> > 908        document updates [RFC9427].
> > ```
> >
> > Consider updating the abstract to reflect this:
> >
> > ```
> > 20         server.  This document obsoletes RFC 7170 [and updates RFC
> 9427].
> > ```
>
>   Done.
>
> > ### Can this MAY be strengthened to a SHOULD?
> >
> > ```
> > 1142          current inner method.  The side receiving a non-fatal
> Error TLV
> > 1143          MAY decide to start a new inner method instead or to send
> back a
> > 1144          Result TLV to terminate the TEAP authentication session.
> > ```
>
>   Maybe?  One issue is that the client could just do endless inner-method
> negotiation.  Perhaps strengthen that to a "different" inner method,
>
>   Another issue is that there's no way for the client to automatically
> figure out what to do.  It's usually configured with something like "Do
> X".  If the server says "No", then the client can't really negotiate
> anything else.  It just tells the user "IU can't do X".
>
> > ### NAK TLV Optionality
> >
> > ```
> > 1524       optional, it can ignore the unsupported TLV.  It MUST NOT
> send a NAK
> > 1525       TLV for a TLV that is not marked mandatory.  If all TLVs in a
> message
> > 1526       are marked optional and none are understood by the peer, then
> a NAK
> > 1527       TLV or Result TLV could be sent to the other side in order to
> > 1528       continue the conversation.
> > ```
> >
> > This section might be improved by eliminating the double negative:
> >
> > MUST NOT ... for .. not marked mandatory.
>
>  "It MUST only send a NAK TLV for a TLV which is marked mandatory."
>

It MUST send a NAK TLV for any TLV which is marked mandatory but not
understood?


>
> > And also recommending either Result TLV or NAK TLV for the all optional
> case.
>
>   If all TLVs in a message
> are marked optional and none are understood by the peer, then a Result TLV
> SHOULD be sent to the other side in order to
> continue the conversation.  It is also possible to send a NAK TLV when all
> TLVs in a message are marked optional.
>

Seems better to me, perhaps strengthen the second part as well:

If all TLVs in a message are marked optional and all are understood by the
peer, a NAK TLV SHOULD be sent.

Basically, I'm arguing to just tell the peer what to do for both cases.


>
> > ### Request-Action TLV
> >
> > ```
> > 2084          If multiple Request-Action TLVs are in the request and
> none of
> > 2085          them is processed, then the most fatal status should be
> used in
> > 2086          the Result TLV returned.  If a status code in the
> Request-Action
> > 2087          TLV is not understood by the receiving entity, then it
> should be
> > 2088          treated as a fatal error.
> > ```
> >
> > Since this is not SHOULD or MUST can this advice be ignored?
>
>   I think it's safe to say "SHOULD" here.
>
> > There are only 2 fatal errors listed so far.
> >
> > Perhaps there should be a 2000-2999 error for Request-Action TLV status
> code
> > not understood?, or simply say to use "2002 Unexpected TLVs Exchanged"?
>
>    I'll add a suggestion that if it's not a fatal error, then the
> receiving entity can send 2002 error.


> > ```
> > 2090          After processing the TLVs or inner method in the request,
> another
> > 2091          round of Result TLV exchange would occur to synchronize
> the final
> > 2092          status on both sides.
> > ```
> >
> > I wonder if "would" is must, or MUST here?
>
>   Yes, MUST is correct.
>
> > ### PAC TLV
> >
> > ```
> > 2261       [RFC7170] defined a Protected Access Credential (PAC) to
> mirror EAP-
> > 2262       FAST [RFC4851].  However, implementation experience and
> analysis
> > 2263       determined that the PAC was not necessary.  Instead, TEAP
> performs
> > 2264       session resumption using the NewSessionTicket message as
> defined in
> > 2265       [RFC9190] Section 2.1.2 and Section 2.1.3.  As such, the PAC
> TLV has
> > 2266       been deprecated.
> > ```
> >
> > When deprecated TLV are encountered, should they be handled any
> differently
> > than non deprecated TLV?
>
>   No.  It should be handled as an unknown TLV.
>

Perhaps "deprecated TLV are ignored, similar to Outer TLVs that are invalid
or contain unknown values"

```
1064   1.  If Outer TLVs are invalid or contain unknown values, they will be
1065       ignored.
```


> > Are there any Error TLV (info, warning, or fatal) that are recommended
> for
> > processing deprecated TLV?
>
>   I don't think so.  This is the only deprecated TLV, and I don't think
> anyone implemented it.
>

All the more reason to state explicitly that it should be silently ignored?


> > Is the guidance in Section 4.2.12 of RFC7170 unchanged in this update?
>
>   That section of 7170 describes how to use the PAC TLV.  Since we're no
> longer using it, the guidance given previously can be safely ignored.
>

Because the PAC TLV MUST be treated as invalid or containing unknown values?

Seems like you / other experts can suggest more explicit processing here,
I'm not attached to any specific text, I just thought it could be clearer.


>
> > ## Nits
> >
> > ### anonymous NAI
> >
> > ```
> > 291        As discussed in [RFC9190] Section 2.1.7 and [RFC9427] Section
> 3.1,
> > 292        the outer EAP Identity SHOULD be an anonymous NAI Network
> Access
> > 293        Identifier (NAI) [RFC7542].  While [RFC3748] Section 5.1
> places no
> > ```
> >
> > Perhaps this could be better phrased as:
> >
> > "SHOULD be an anonymous Network Access Identifier (NAI) as described in
> Section
> > 2.4 of RFC7542."
>
>    Sure.
>
> > ### Remove "with" ?
> >
> > ```
> >
> > 553        dnsName attribute containing an FQDN string.  Server
> certificates MAY
> > 554        also include with a SubjectDN containing a single element,
> "CN="
> > ```
>
>   Done.
>
> > ### Trusted Anchor store
> >
> > ```
> > 571        *  when the peer has the Server's End Entity (EE) certificate
> pinned
> > 572           or loaded directly into it's Trusted Anchor store
> [RFC4949];
> > ```
> >
> > "Trusted Anchor store" is not defined in 4949, but "trust anchor
> information"
> > is.
>
>   Fixed.
>
> > ### Missing have?
> >
> > ```
> > 605        the authentication process.  It will therefore no way of
> correlating
> > ```
>
>   Fixed.
>
> > ### EAP-NAK vs NACK TLV
> >
> > ```
> > 810        Section 4.2.15 that contains the username and password.  If
> it does
> > 811        not wish to perform password authentication, then it responds
> with a
> > 812        NAK TLV indicating the rejection of the
> Basic-Password-Auth-Req TLV.
> > ```
> >
> > Section 3.1 inherits the term "EAP-Nak" from RFC7170.
> > Consider adding a parenthetical next to EAP-NAK explaining the
> relationship to
> > NAK TLV.
>
>   There is no relationship.  EAP-Nak is negotiating which EAP type to use
> (PEAP, TEAP, etc.).  the NAK TLV is a TEAP-specific protocol field.
>

Thanks for educating me : )


>
> > ### EMSK expand on first use
> >
> > ```
> > 885        an EMSK, and are vulnerable to on-path attacks.  The
> construction of
> > ```
>
>   Done.
>
> > ### use -> be ?
> >
> > ```
> > 1089       restarted, it is not clear when that would use useful (or
> used) for
> > ```
>
>   Fixed.
>
> > ### configuration flag : NOT recommended vs NOT RECOMMENDED
> >
> > ```
> > 1176       Peer implementations MUST be configured so that by default,
> the
> > 1177       current authentication session fails if the server cannot be
> > 1178       authenticated.  However, it is possible to have a
> configuration flag
> > 1179       which permits access to networks where the server cannot be
> > 1180       authenticated.  Such configurations are NOT recommended, and
> further
> > 1181       discussion is outside of the scope of this specification.
> > ```
> >
> > This configuration flag behavior sounds dangerous (or fun, or both).
> > Just double checking that "NOT recommended" is intentionally not BCP 14
> > language "NOT RECOMMENDED". This might perhaps be clarified in security
> > considerations, since this is the only occurrence of "configuration
> flag" in
> > the document.
>
>   That text is a hold-over from 7170 when EAP implementations allowed for
> a configuration flag "don't check server certificate".  The consensus since
> then is that this configuration is bad.  Perhaps:
>
> Unless the peer requests server unauthenticated provisioning, it MUST
> authenticate the server, and fail the current authentication
> session fails if the server cannot be authenticated.
>

That seems better to me.


>
> > ### degenerate (i.e. unsigned)
> >
> > ```
> > 1231       body of a PKCS#10 TLV (see Section 4.2.17).  The TEAP server
> issues a
> > 1232       Simple PKI Response using a PKCS#7 [RFC2315] degenerate (i.e.
> > 1233       unsigned) "Certificates Only" message encoded into the body
> of a
> > 1234       PKCS#7 TLV (see Section 4.2.16), only after an inner method
> has run
> > 1235       and provided an identity proof on the peer prior to a
> certificate is
> > 1236       being issued.
> > ```
> >
> > Consider reversing the parenthetical: ... issues a ... unsigned (i.e.
> > degenerate) ...
>
>   Done.
>
> > You might also consider providing guidance (possibly in Section 4.2.16)
> on the
> > ContentInfo value per the Notes in Section 9.1 of RFC2315.
>
>   OK.  I'll take a look.
>
> > ### piggybacking
> >
> > ```
> > 2158       To allow piggybacking an EAP request or response with other
> TLVs, the
> > 2159       EAP-Payload TLV is defined, which includes an encapsulated
> EAP packet
> > 2160       and a list of optional TLVs.  The optional TLVs are provided
> for
> > ```
> >
> > Consider an alternative word.
>
>   Perhaps "coalesced" with
>

Including an EAP request or response with other TLVs... ?

My comment was in consideration of readers whose first language is not
english, simpler is better, if it's possible.


>
> > ### remove against?
> >
> > ```
> > 3426       TEAP implementations can mitigate against online "brute force"
> > ```
>
>   Done.
>
>   Alan DeKok.
>


Thanks for your responses.

OS, ART AD
_______________________________________________
Emu mailing list -- emu@ietf.org
To unsubscribe send an email to emu-le...@ietf.org

Reply via email to