Thanks George, you described exactly what I was thinking.
I agree with your conclusions throughout the thread. Now that we have JTI 
mandatory, preventing tracking intra-API could be achieved only by issuing a 
new token for every transaction regardless of the presence of a sub, and a sub 
whose values change at every issuance would achieve the same.
One subtlety that perhaps is worth spelling out is that “unique” in this 
context shouldn’t be interpreted as “singleton”. An identifier is unique if it 
cannot be used to indicate any entity other than the intended one, but that 
doesn’t prevent the same entity from having multiple unique identifiers as long 
as they all satisfy that uniqueness criterion. And again, I maintain that 
preventing intra-API tracking is a non-goal in most scenarios.

That said, this was a great discussion. I am going to add explicit language in 
the privacy considerations warning readers about the possibility of 
correlation, and hinting at some of the measures described here as possible 
mitigations.
Thanks everyone!
V.

From: OAuth <oauth-boun...@ietf.org> on behalf of George Fletcher 
<gffletch=40aol....@dmarc.ietf.org>
Date: Tuesday, April 14, 2020 at 08:35
To: Denis <denis.i...@free.fr>, "oauth@ietf.org" <oauth@ietf.org>
Subject: Re: [OAUTH-WG] Web Authorization Protocol (oauth) WG Virtual Meeting: 
2020-04-13

Hi Denis,

If the same token is used (within a session) for multiple API calls then all 
those API calls can be correlated together even if the token does not have a 
'sub' claim because the token itself is the correlating identifier (same is 
true for the session identifier).

In regards to the AS issuing a token with a 'sub' claim, after re-reading the 
spec (rfc 7519) I believe the AS could issue the 'sub' value as 
"urn:anonymous:<large random number>" and create a new value with every token 
that is issued. This is similar to how Shibboleth supports attribute based 
access control with SAML assertions. Given it appears we disagree in our 
interpretations of the spec, I'm fine agreeing to disagree :)

Thanks,
George
On 4/14/20 11:23 AM, Denis wrote:
George,

I disagree with you:

   The 'sub' claim must be unique (local to the issuer or globally)
   with every issued token.

In addition, inter-API correlation prevention does not necessarily require a 
unique token for every API call,
since in many cases a session can be opened and one JWT can be used during the 
whole session (during successive calls).

Denis




On 4/14/20 10:23 AM, Denis wrote:

Unfortunately, this is not possible since RFC 7519 (4.1.2) states:

        The subject value MUST either be scoped to be *locally unique in the 
context of the issuer or be globally unique*.
Regarding this phrase from RFC 7519, I don't agree that it prevents the 
solution Vittorio suggested. While for any token issued the 'sub' claim must be 
unique (local to the issuer or globally); that doesn't mean it can't be 
different with every issued token. This would require the client to request a 
new token before every API invocation but it would suffice to protect against 
the suggested privacy correlation issues.

Note that inter-API correlation prevention is VERY difficult and really 
requires a unique token for every API call as the token itself can be a 
correlation handle (e.g. hash the token and it becomes the correlation 
identifier if the token is being reused for multiple API calls).

Thanks,
George


_______________________________________________
OAuth mailing list
OAuth@ietf.org
https://www.ietf.org/mailman/listinfo/oauth

Reply via email to