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."

> 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.

> ### 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.

> 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.

> 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.

> ## 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.

> ### 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.

> ### 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

> ### remove against?
> 
> ```
> 3426       TEAP implementations can mitigate against online "brute force"
> ```

  Done.

  Alan DeKok.

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

Reply via email to