I don’t believe this is the spec to define TLS header forwarding standards in.
— Justin > On Mar 30, 2018, at 2:03 PM, Vivek Biswas <vivek.bis...@oracle.com> wrote: > > There are additional challenges which we have faced. > > A. Most of the Mutual SSL communication as mentioned below terminates at > the LBR and the LBR needs to have client certificates to trust the client. > But lot of times the connection from LBR to Authorization server may be > non-SSL. > > The CN, SHA-256 thumprint and serial number of the Client Cert are sent as > header to the AuthzServer/Backend Server. However, if the connection from LBR > to AuthzServer/Backend Server is unencrypted it is prone to MIM attacks. > Hence, it’s a MUST requirement to have one-way SSL from LBR to > AuthzServer/Backend Server, so that the headers passed are not compromised. > > This is a MOST common scenario in a real world. And we don’t want everyone > come up with their own names for the header. There should be some kind of > standardization around the header names. > > Regards > Vivek Biswas, CISSP > > From: John Bradley [mailto:ve7...@ve7jtb.com] > Sent: Thursday, March 29, 2018 11:57 AM > To: Neil Madden > Cc: oauth > Subject: Re: [OAUTH-WG] WGLC on draft-ietf-oauth-mtls-07 > > Yes that is quite a common deployment scenario. I think that is the way > most of the Open Banking implementations have deployed it currently. > > The intent is to support that. One problem is that how the certificate is > transmitted to the application tends to be load balancer/reverse proxy > specific as no real standard exists. > > If you think that needs to be clarified text is welcome. > > John B. > > > > > On Mar 29, 2018, at 2:54 PM, Neil Madden <neil.mad...@forgerock.com > <mailto:neil.mad...@forgerock.com>> wrote: > > Thanks, and understood. > > The privacy concerns are mostly around correlating activity of *clients*, > which may or may not reveal activity patterns of users using those clients. I > don’t know how much of a concern that is in reality, but thought it should be > mentioned. > > A colleague also made the following comment about the draft: > > “It is still quite common to terminate TLS in a load balancer or proxy, and > to deploy authorization servers in a secure network zone behind an > intermediate in a DMZ. In these cases, TLS would not be established between > the client and authorization server as per §2, but information about the TLS > handshake may be made available by other means (typically adding to a > downstream header) allowing lookup and verification of the client certificate > as otherwise described. Given the prevalence of this approach it would be > good to know whether such a deployment would be compliant or not.” > > Kind regards, > Neil > -- > > On Thursday, Mar 29, 2018 at 4:47 pm, John Bradley <ve7...@ve7jtb.com > <mailto:ve7...@ve7jtb.com>> wrote: > Thanks for the feedback. We will review your comments and reply. > > One data point is that this will not be the only POP spec. The spec using > token binding vs mtls has better privacy properties. It is UK Open banking > that has pressed us to come up with a standard to help with interoperability. > > This spec has been simplified in some ways to facilitate the majority of > likely deployments. > > I understand that in future certificates may have better than SHA256 hashes. > > Regards > John B. > > > > On Mar 29, 2018, at 12:18 PM, Neil Madden <neil.mad...@forgerock.com > <mailto:neil.mad...@forgerock.com>> wrote: > > Hi, > > I have reviewed this draft and have a number of comments, below. ForgeRock > have not yet implemented this draft, but there is interest in implementing it > at some point. (Disclaimer: We have no firm commitments on this at the > moment, I do not speak for ForgeRock, etc). > > 1. https://tools.ietf.org/html/draft-ietf-oauth-mtls-07#section-3.1 > <https://tools.ietf.org/html/draft-ietf-oauth-mtls-07#section-3.1> defines a > new confirmation method “x5t#S256”. However, there is already a confirmation > method “jwk” that can contain a JSON Web Key, which itself can contain a > “x5t#S526” claim with exactly the same syntax and semantics. The draft > proposes: > > { “cnf”: { “x5t#S256”: “…” } } > > but you can already do: > > { “cnf”: { “jwk”: { … , “x5t#S256”: “…” } } } > > If the intent is just to save some space and avoid the mandatory fields of > the existing JWK types, maybe this would be better addressed by defining a > new JWK type which only has a thumbprint? e.g., { “kty”: “x5t”, “x5t#S256”: > “…” }. > > 2. I find the naming “mutual TLS” and “mTLS” a bit of a misnomer: it’s really > only the client authentication that we are interested here, and the fact that > the server also authenticates with a certificate is not hugely relevant to > this particular spec (although it is to the overall security of OAuth). Also, > TLS defines non-certificate based authentication mechanisms (e.g. TLS-SRP > extension for password authenticated key exchange, PSK for pre-shared key > authentication) and even non-X.509 certificate types > (https://www.iana.org/assignments/tls-extensiontype-values/tls-extensiontype-values.xhtml#tls-extensiontype-values-3 > > <https://www.iana.org/assignments/tls-extensiontype-values/tls-extensiontype-values.xhtml#tls-extensiontype-values-3>). > I’d prefer that the draft explicitly referred to “X.509 Client Certificate > Authentication” rather than mutual TLS, and changed identifiers like > ‘tls_client_auth’ > (https://tools.ietf.org/html/draft-ietf-oauth-mtls-07#section-2.1.1 > <https://tools.ietf.org/html/draft-ietf-oauth-mtls-07#section-2.1.1>) to > something more explicit like ‘tls_x509_pki_client_auth’. > > This is especially confusing in section 3 on sender constrained access > tokens, as there are two different servers involved: the AS and the protected > resource server, but there is no “mutual” authentication between them, only > between each of them and the client. > > 3. The draft links to the TLS 1.2 RFC, while the original OAuth 2.0 RFC only > specifies TLS 1.0. Is the intention that TLS 1.2+ is required? The wording in > Section 5.1 doesn’t seem clear if this could also be used with TLS 1.0 or > 1.1, or whether it is only referring to future TLS versions. > > 4. It might be useful to have a discussion for implementors of whether TLS > session resumption (and PSK in TLS 1.3) and/or renegotiation impact the use > of client certificates, if at all? > > 5. Section 3 defines sender-constrained access tokens in terms of the > confirmation key claims (e.g., RFC 7800 for JWT). However, the OAuth 2.0 Pop > Architecture draft defines sender constraint and key confirmation as > different things > (https://tools.ietf.org/html/draft-ietf-oauth-pop-architecture-08#section-6.2 > <https://tools.ietf.org/html/draft-ietf-oauth-pop-architecture-08#section-6.2>). > The draft should decide which of those it is implementing and if sender > constraint is intended, then reusing the confirmation key claims seems > misleading. (I think this mTLS draft is doing key confirmation so should drop > the language about sender constrained tokens). > > 6. The OAuth 2.0 PoP Architecture draft says > (https://tools.ietf.org/html/draft-ietf-oauth-pop-architecture-08#section-5 > <https://tools..ietf.org/html/draft-ietf-oauth-pop-architecture-08#section-5>): > > > Strong, fresh session keys: > > Session keys MUST be strong and fresh.. Each session deserves an > independent session key, i.e., one that is generated specifically > for the intended use. In context of OAuth this means that keying > material is created in such a way that can only be used by the > combination of a client instance, protected resource, and > authorization scope. > > > However, the mTLS draft section 3 > (https://tools.ietf.org/html/draft-ietf-oauth-mtls-07#section-3 > <https://tools.ietf.org/html/draft-ietf-oauth-mtls-07#section-3>) says: > > The client makes protected resource requests as described in > [RFC6750], however, those requests MUST be made over a mutually > authenticated TLS connection using the same certificate that was used > for mutual TLS at the token endpoint. > > These two statements are contradictory: the OAuth 2.0 PoP architecture > effectively requires a fresh key-pair to be used for every access token > request, whereas this draft proposes reusing the same long-lived client > certificate for every single access token and every resource server. > > In the self-signed case (and even in the CA case, with a bit of work - e.g., > https://www.vaultproject.io/docs/secrets/pki/index.html > <https://www.vaultproject.io/docs/secrets/pki/index.html>) it is perfectly > possible for the client to generate a fresh key-pair for each access token > and include the certificate on the token request (e.g., as per > https://tools.ietf.org/html/draft-ietf-oauth-pop-key-distribution-03#section-5.1 > > <https://tools.ietf.org/html/draft-ietf-oauth-pop-key-distribution-03#section-5.1> > - in which case an appropriate “alg” value should probably be described). > This should probably at least be an option. > > 7. The use of a single client certificate with every resource server (RS) > should be called out in a Privacy Considerations section, as it allows > correlation of activity. > > 8. This is maybe a more general point, but RFC 6750 defines the > Authorization: Bearer scheme (https://tools.ietf.org/html/rfc6750#section-2 > <https://tools.ietf.org/html/rfc6750#section-2>) for a client to communicate > it’s access token to the RS in a standard way. As sender-constrained access > tokens are not strictly bearer tokens any more, should this draft also > register a new scheme for that? Should there be a generic PoP scheme? > > 9. The Security Considerations should really make some mention of the long > history of attacks against X.509 certificate chain validation, e.g. failure > to check the “CA” bit in the basic constraints, errors in parsing DNs, etc. > It should be strongly suggested to use an existing TLS library to perform > these checks rather than implementing your own checks. This relates to > Justin’s comments around DN parsing and normalisation. > > 10. The PKI client authentication method > (https://tools.ietf.org/html/draft-ietf-oauth-mtls-07#section-2.1 > <https://tools.ietf.org/html/draft-ietf-oauth-mtls-07#section-2.1>) makes no > mention at all of certificate revocation and how to handle checking for that > (CRLs, OCSP - with stapling?). Neither does the Security Considerations. If > this is a detail to be agreed between then AS and the CA (or just left up to > the AS TLS stack) then that should perhaps be made explicit. Again, there are > privacy considerations with some of these mechanisms, as OCSP requests are > typically sent in the clear (plain HTTP) and so allow an observer to see > which clients are connecting to which AS. > > 11. The same comment applies to how the protected resource checks for > revocation of the certificate presented during sender constrained access > token usage. Should the RS make its own revocation checks based on the > information in the certificate presented, or should it trust the certificate > while the access token is still valid? If the latter case, is the AS > responsible for revoking any access tokens whose certificate have been > revoked (if so, should it be doing an OCSP call on every token introspection > request, and should the RS be passing on the certificate/serial number on > that request)? If the Client request uses OCSP Stapling > (https://en.wikipedia.org/wiki/OCSP_stapling > <https://en.wikipedia.org/wiki/OCSP_stapling>) how can the RS verify the > signature on that if it does not have a separate trust relationship with the > CA already? > > 12. The use of only SHA-256 fingerprints means that the security strength of > the sender-constrained access tokens is limited by the collision resistance > of SHA-256 - roughly “128-bit security" - without a new specification for a > new thumbprint algorithm. An implication of this is that is is fairly > pointless for the protected resource TLS stack to ever negotiate cipher > suites/keys with a higher level of security. In more crystal ball territory, > if a practical quantum computer becomes a possibility within the lifetime of > this spec, then the expected collision resistance of SHA-256 would drop > quadratically, allowing an attacker to find a colliding certificate in ~2^64 > effort. If we are going to pick just one thumbprint hash algorithm, I would > prefer we pick SHA-512. > > Cheers, > > Neil > > > > On 19 Mar 2018, at 22:34, Rifaat Shekh-Yusef <rifaat.i...@gmail.com > <mailto:rifaat.i...@gmail.com>> wrote: > > All, > > As discussed during the meeting today, we are starting a WGLC on the MTLS > document: > https://tools.ietf.org/html/draft-ietf-oauth-mtls-07 > <https://tools.ietf.org/html/draft-ietf-oauth-mtls-07> > > Please, review the document and provide feedback on any issues you see with > the document. > > The WGLC will end in two weeks, on April 2, 2018. > > Regards, > Rifaat and Hannes > > _______________________________________________ > OAuth mailing list > OAuth@ietf.org <mailto:OAuth@ietf.org> > https://www.ietf.org/mailman/listinfo/oauth > <https://www.ietf.org/mailman/listinfo/oauth> > > _______________________________________________ > OAuth mailing list > OAuth@ietf.org <mailto:OAuth@ietf.org> > https://www.ietf.org/mailman/listinfo/oauth > <https://www.ietf.org/mailman/listinfo/oauth> > > > _______________________________________________ > OAuth mailing list > OAuth@ietf.org > https://www.ietf.org/mailman/listinfo/oauth
_______________________________________________ OAuth mailing list OAuth@ietf.org https://www.ietf.org/mailman/listinfo/oauth