I think perhaps an assumption in the DPoP draft (and in the description of “jti” in RFC 7519) is that the server will maintain a single global list of recently used jti values to prevent replay, rather than maintaining a separate list per client. That could perhaps be spelled out more clearly in the draft, as I think the entropy discussions only really make sense in that context. If the RS instead maintains a separate list per client then a simple counter is sufficient.
— Neil > On 2 Dec 2020, at 15:17, Brian Campbell > <bcampbell=40pingidentity....@dmarc.ietf.org> wrote: > > The conversation at > https://github.com/danielfett/draft-dpop/pull/51#discussion_r332377311 > <https://github.com/danielfett/draft-dpop/pull/51#discussion_r332377311> has > a bit more of the rational behind the choice of 96 bit minimum. > > On Wed, Dec 2, 2020 at 7:07 AM Denis <denis.i...@free.fr > <mailto:denis.i...@free.fr>> wrote: > Hi Daniel, > > All your arguments make sense. I agree. > > A minor point however. The size of the jti" is currently mandated to 96 bits > minimum. This is unnecessarily long for a time window of a few minutes. > The jti" does not need to be a unique identifier valid for ever. It can > simply be an identifier used during the time window which complements the > "iat" claim. > > Using both the "iat" claim and a 32 bits pseudo-random number will be quite > sufficient. It is also has the advantage of using less memory and > it is easier to flush the entries looking at the 32 first bits only. > > Denis > >> So what you are proposing is that the time window in which an RS accepts the >> DPoP proof is defined by the expiration time of the access token? >> >> DPoP proofs are intended to be generally be short-lived and fresh for each >> request in order to provide some level of replay protection. There is no >> point in making the time window as long as the (typically longer) time >> window in which an AT would be accepted. A DPoP proof that is valid for 12 >> hours would not provide much replay protection. >> >> The time window is left unspecified because it is only meant to account for >> clock differences and network latency. Its precise value can depend on >> deployment considerations. It is not intended to give the client an option >> to re-use proofs, which is prevented together with the jti. >> >> Also this would introduce new, unwanted and potentially surprising >> dependencies between token lifetimes and the DPoP usage. >> >> And finally, as discussed before, not all access tokens are JWTs and we are >> not going to mandate JWT access tokens in this spec. >> >> -Daniel >> >> >> Am 01.12.20 um 09:54 schrieb Denis: >>> Hi Brian, >>> >>>> Hi Denis, >>>> >>>> The choice to use "iat" vs. "exp" was made in the summer of last year. You >>>> can see some of the discussion from then in >>>> https://github.com/danielfett/draft-dpop/issues/38 >>>> <https://github.com/danielfett/draft-dpop/issues/38>. >>>> I believe it pretty well has consensus at this point and thus unlikely to >>>> be changed. >>> I fear that you misread my email or read it too fast. My point had nothing >>> to do whether using either of "iat" or "exp" in the DPoP proof JWT sent by >>> the client. >>> >>> The first sentence of my email was: "One comment on slide 5 about the time >>> window". So the topic was all about how the RS SHALL handle the "jti" claim >>> included >>> in the DPoP proof JWT when using a time window. >>> >>> >>>> While I do believe there are reasonable arguments that can be made on both >>>> sides of using either of "iat" or "exp", it's difficult (and honestly time >>>> consuming and very frustrating) to try and have such discussions or even >>>> respond in a coherent way when fundamental aspects of the draft are >>>> misrepresented or misunderstood. For example, the DPoP proof JWT is >>>> created by the client not the AS so the advantages you put forward are >>>> nonsensical in the context of the actual workings of the draft. >>> Section 8.1 addresses the topic of the time window, but this topic should >>> not only be addressed in the "Security Considerations" section >>> but in the main body of the document, since some checks MUST be done by the >>> RS. "Security Considerations"are intended to provide >>> explanations but are not intended to be normative. >>> >>> Section 8.1 states: >>> >>> " If an adversary is able to get hold of a DPoP proof JWT, the adversary >>> could replay that token at the same endpoint (the HTTP >>> endpoint and method are enforced via the respective claims in the JWTs). >>> To prevent this, servers MUST only accept DPoP proofs >>> for a limited time window after their "iat" time, preferably only for a >>> relatively brief period. >>> >>> Servers SHOULD store, in the context of the request URI, the "jti" value >>> of each DPoP proof for the time window in which the respective >>> DPoP proof JWT would be accepted and decline HTTP requests to the same >>> URI for which the "jti" value has been seen before. In order >>> to guard against memory exhaustion attacks a server SHOULD reject DPoP >>> proof JWTs with unnecessarily large "jti" values or store only >>> a hash thereof. >>> >>> (...) ". >>> >>> The previous text makes the assumption that RSs MUST only accept DPoP >>> proofs for a relatively brief period after their "iat" time included >>> in the DPoP proof JWT. This assumption is rather restrictive. A client >>> might get an access token and associate it with DPoP proof JWT that >>> could be used during, e.g., 12 hours. A DPoP proof JWT/ access token JWT >>> pair could thus be used by a client during, e.g., one day for >>> several sessions with a RS. >>> >>> The time window is currently left at the discretion of each RS and is >>> supposed to be short (without stating explicitly what "short" may mean).. >>> >>> It would be possible to mandate in the JWT the inclusion of the exp >>> (Expiration Time) Claim. (I am not advocating the inclusion of the "exp" >>> claim in the DPoP proof JWT). >>> >>> In this way, for a RS, the time window would be defined using the "iat" >>> claim defined in the DPoP proof JWT and the "exp" claim defined in >>> the JWT. >>> >>> Such a description should not be done in section 8, but in a section >>> earlier in the main body of the document. >>> >>> This would have the following advantages: >>> >>> The RS would be able to better manage the "jti" claim values, because it >>> would be able to discard "jti" claim values as soon as they are >>> outside the time window as defined above. >>> The client would know whether a DPoP proof JWT/ access token JWT pair is >>> still usable, in particular using the "expires_in" status code >>> returned in case of a successful response from the AS and is thus unlikely >>> to get a rejection of both of them because of an unknown time >>> window used by a RS. >>> Denis >>> >>> >>>> >>>> On Mon, Nov 30, 2020 at 8:45 AM Denis <denis.i...@free.fr >>>> <mailto:denis.i...@free.fr>> wrote: >>>> One comment on slide 5 about the time window. >>>> >>>> At the bottom, on the left, it is written: "Only valid for a limited time >>>> window relative to creation time". >>>> >>>> While the creation time is defined by "iat", the time window is currently >>>> left at the discretion of each RS. >>>> >>>> It would be preferable to mandate the inclusion in the JWT of the exp >>>> (Expiration Time) Claim. >>>> In this way, the time window would be defined by the AS using both the >>>> "iat" and the "exp" claims. >>>> >>>> This would have the following advantages: >>>> >>>> The client will know whether a token is still usable and is unlikely to >>>> get a rejection of the token >>>> because of an unknown time window defined by a RS. >>>> The RS is able to manage better the "jti" claim values, because it will be >>>> able to discard "jti" claim values >>>> as soon as they are outside the time window defined by the AS in a JWT. >>>> Denis >>>> >>>> >>>>> All, >>>>> >>>>> This is a reminder that we have an Interim meeting this Monday, Nov 30th >>>>> @ 12:00pm ET, to discuss the latest with the DPoP document: >>>>> https://datatracker.ietf.org/doc/draft-ietf-oauth-dpop/ >>>>> <https://datatracker.ietf.org/doc/draft-ietf-oauth-dpop/> >>>>> >>>>> You can find the details of the meeting and the slides here: >>>>> https://datatracker.ietf.org/meeting/interim-2020-oauth-16/session/oauth >>>>> <https://datatracker.ietf.org/meeting/interim-2020-oauth-16/session/oauth> >>>>> >>>>> Regards, >>>>> Rifaat & 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> >>>> >>>> CONFIDENTIALITY NOTICE: This email may contain confidential and privileged >>>> material for the sole use of the intended recipient(s). Any review, use, >>>> distribution or disclosure by others is strictly prohibited. If you have >>>> received this communication in error, please notify the sender immediately >>>> by e-mail and delete the message and any file attachments from your >>>> computer. Thank you. >>> >>> >>> >>> _______________________________________________ >>> OAuth mailing list >>> OAuth@ietf.org <mailto:OAuth@ietf.org> >>> https://www.ietf.org/mailman/listinfo/oauth >>> <https://www.ietf.org/mailman/listinfo/oauth> >> >> -- >> https://danielfett.de <https://danielfett.de/> >> >> _______________________________________________ >> 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> > > CONFIDENTIALITY NOTICE: This email may contain confidential and privileged > material for the sole use of the intended recipient(s). Any review, use, > distribution or disclosure by others is strictly prohibited. If you have > received this communication in error, please notify the sender immediately by > e-mail and delete the message and any file attachments from your computer. > Thank you._______________________________________________ > OAuth mailing list > OAuth@ietf.org > https://www.ietf.org/mailman/listinfo/oauth -- ForgeRock values your Privacy <https://www.forgerock.com/your-privacy>
_______________________________________________ OAuth mailing list OAuth@ietf.org https://www.ietf.org/mailman/listinfo/oauth