Skip to content

Commit f2cf373

Browse files
paulbastiantplooker
authored andcommitted
some nitpicks and clarifications
1 parent 42edbb5 commit f2cf373

File tree

1 file changed

+26
-18
lines changed

1 file changed

+26
-18
lines changed

draft-ietf-oauth-status-list.md

Lines changed: 26 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
---
2-
title: "Token Status List"
2+
title: "Token Status List (TSL)"
33
category: std
44
lang: en
55

@@ -124,7 +124,7 @@ informative:
124124

125125
--- abstract
126126

127-
This specification defines a mechanism, data structures and processing rules for representing the status of tokens secured by JSON Object Signing and Encryption (JOSE) or CBOR Object Signing and Encryption (COSE), such as JWT, SD-JWT VC, CBOR Web Token and ISO mdoc. It also defines an extension point and a registry for future status mechanisms.
127+
This specification defines a mechanism called Token Status List (abbreviated TSL), data structures and processing rules for representing the status of tokens secured by JSON Object Signing and Encryption (JOSE) or CBOR Object Signing and Encryption (COSE), such as JWT, SD-JWT VC, CBOR Web Token and ISO mdoc. It also defines an extension point and a registry for future status mechanisms.
128128

129129
--- middle
130130

@@ -363,10 +363,10 @@ See section [](#test-vectors) for more test vectors.
363363

364364
This section defines the data structure for a CBOR-encoded Status List:
365365

366-
* The `StatusList` structure is a map (Major Type 5) MUST contain at least the following entries:
367-
* `bits`: REQUIRED. Unsigned integer (Major Type 0) that contains the number of bits per Referenced Token in the compressed byte array (`lst`). The allowed values for `bits` are 1, 2, 4 and 8.
368-
* `lst`: REQUIRED. Byte string (Major Type 2) that contains the status values for all the Referenced Tokens it conveys statuses for. The value MUST be the compressed byte array as specified in [](#status-list-byte-array).
369-
* `aggregation_uri`: OPTIONAL. Text string (Major Type 3) that contains a URI to retrieve the Status List Aggregation for this type of Referenced Token. See section [](#aggregation) for further detail.
366+
* The `StatusList` structure is a CBOR map (Major Type 5) and defines the following entries:
367+
* `bits`: REQUIRED. CBOR Unsigned integer (Major Type 0) that contains the number of bits per Referenced Token in the compressed byte array (`lst`). The allowed values for `bits` are 1, 2, 4 and 8.
368+
* `lst`: REQUIRED. CBOR Byte string (Major Type 2) that contains the status values for all the Referenced Tokens it conveys statuses for. The value MUST be the compressed byte array as specified in [](#status-list-byte-array).
369+
* `aggregation_uri`: OPTIONAL. CBOR Text string (Major Type 3) that contains a URI to retrieve the Status List Aggregation for this type of Referenced Token. See section [](#aggregation) for further detail.
370370

371371
The following is the CDDL definition of the StatusList structure:
372372

@@ -472,7 +472,7 @@ The following is the CBOR Annotated Hex output of the example above:
472472

473473
## Status Claim {#status-claim}
474474

475-
By including a "status" claim in a Referenced Token, the Issuer is referencing a mechanism to retrieve status information about this Referenced Token. The claim contains members used to reference a Status List Token as defined in this specification. Other members of the "status" object may be defined by other specifications. This is analogous to "cnf" claim in Section 3.1 of {{RFC7800}} in which different authenticity confirmation methods can be included.
475+
By including a "status" claim in a Referenced Token, the Issuer is referencing a mechanism to retrieve status information about this Referenced Token. This specification defines one possible member of the "status" object, called "status_list". Other members of the "status" object may be defined by other specifications. This is analogous to "cnf" claim in Section 3.1 of {{RFC7800}} in which different authenticity confirmation methods can be included.
476476

477477
## Referenced Token in JOSE {#referenced-token-jose}
478478

@@ -481,7 +481,7 @@ The Referenced Token MAY be encoded as a "JSON Web Token (JWT)" according to {{R
481481
The following content applies to the JWT Claims Set:
482482

483483
* `status`: REQUIRED. The `status` (status) claim MUST specify a JSON Object that contains at least one reference to a status mechanism.
484-
* `status_list`: REQUIRED when the status mechanism defined in this specification is used. It contains a reference to a Status List Token. It MUST at least contain the following claims:
484+
* `status_list`: REQUIRED when the status mechanism defined in this specification is used. It MUST specify a JSON Object that contains a reference to a Status List Token. It MUST at least contain the following claims:
485485
* `idx`: REQUIRED. The `idx` (index) claim MUST specify a non-negative Integer that represents the index to check for status information in the Status List for the current Referenced Token.
486486
* `uri`: REQUIRED. The `uri` (URI) claim MUST specify a String value that identifies the Status List Token containing the status information for the Referenced Token. The value of `uri` MUST be a URI conforming to {{RFC3986}}.
487487

@@ -840,7 +840,7 @@ Content-Type: application/statuslist+jwt
840840

841841
Status List Aggregation is an optional mechanism to retrieve a list of URIs to all Status List Tokens, allowing a Relying Party to fetch all relevant Status List Tokens for a specific type of Referenced Token or Issuer. This mechanism is intended to support fetching and caching mechanisms and allow offline validation of the status of a reference token for a period of time.
842842

843-
If a Relying Party encounters an invalid Status List referenced in the response from the Status List Aggregation endpoint, it SHOULD continue processing the other valid Status Lists referenced in the response instead of fully aborting processing and retrying later.
843+
If a Relying Party encounters an invalid Status List Token referenced in the response from the Status List Aggregation endpoint, it SHOULD continue processing the other valid Status Lists referenced in the response instead of fully aborting processing and retrying later.
844844

845845
There are two options for a Relying Party to retrieve the Status List Aggregation.
846846
An Issuer MAY support any of these mechanisms:
@@ -883,7 +883,7 @@ This section defines the structure for a JSON-encoded Status List Aggregation:
883883

884884
* `status_lists`: REQUIRED. JSON array of strings that contains URIs linking to Status List Tokens.
885885

886-
The Status List Aggregation URI provides a list of Status List URIs. This aggregation in JSON and the media type return MUST be `application/json`. A Relying Party can iterate through this list and fetch all Status List Tokens before encountering the specific URI in a Referenced Token.
886+
The Status List Aggregation URI provides a list of Status List Token URIs. This aggregation in JSON and the media type return MUST be `application/json`. A Relying Party can iterate through this list and fetch all Status List Tokens before encountering the specific URI in a Referenced Token.
887887

888888
The following is a non-normative example for media type `application/json`:
889889

@@ -1002,7 +1002,7 @@ Once the Relying Party receives the Referenced Token, this enables them to reque
10021002

10031003
This behaviour could be mitigated by:
10041004

1005-
- regular re-issuance of the Referenced Token, see [](#implementation-lifecycle).
1005+
- regular re-issuance of the Referenced Token, see [](#implementation-linkability).
10061006

10071007
## Observability of Outsiders {#privacy-outsider}
10081008

@@ -1024,7 +1024,7 @@ The tuple of uri and index inside the Referenced Token are unique and therefore
10241024

10251025
Two or more colluding Relying Parties may link two transactions involving the same Referenced Token by comparing the status claims of received Referenced Tokens and therefore determine that they have interacted with the same Holder.
10261026

1027-
To avoid privacy risks for colluding Relying Parties, it is RECOMMENDED that Issuers provide the ability to issue batches of one-time-use Referenced Tokens, enabling Holders to use in a single interaction with a Relying Party before discarding. See [](#implementation-lifecycle) to avoid further correlatable information by the values of `uri` and `index`, Status Issuers are RECOMMENDED to:
1027+
To avoid privacy risks for colluding Relying Parties, it is RECOMMENDED that Issuers provide the ability to issue batches of one-time-use Referenced Tokens, enabling Holders to use in a single interaction with a Relying Party before discarding. See [](#implementation-linkability) to avoid further correlatable information by the values of `uri` and `index`, Status Issuers are RECOMMENDED to:
10281028

10291029
- choose non-sequential, pseudo-random or random indices
10301030
- use decoy entries to obfuscate the real number of Referenced Tokens within a Status List
@@ -1060,10 +1060,14 @@ Ecosystems that want to use other Status Types than "VALID" and "INVALID" should
10601060

10611061
The lifetime of a Status List Token depends on the lifetime of its Referenced Tokens. Once all Referenced Tokens are expired, the Issuer may stop serving the Status List Token.
10621062

1063+
## Linkability Mitigation {#implementation-linkability}
1064+
10631065
Referenced Tokens may be regularly re-issued to mitigate the linkability of presentations to Relying Parties. In this case, every re-issued Referenced Token MUST have a fresh Status List entry in order to prevent this from becoming a possible source of correlation.
10641066

10651067
Referenced Tokens may also be issued in batches and be presented by Holders in a one-time-use policy to avoid linkability. In this case, every Referenced Token MUST have a dedicated Status List entry and MAY be spread across multiple Status List Tokens. Revoking batch-issued Referenced Tokens might reveal this correlation later on.
10661068

1069+
Beware, that this mechanism solves linkability issues between Relying Parties, but does not prevent traceability by Issuers.
1070+
10671071
## Default Values and Double Allocation
10681072

10691073
The Status Issuer is RECOMMENDED to initialize the Status List byte array with a default value provided as
@@ -1164,14 +1168,14 @@ IANA "JSON Web Token Claims" registry {{IANA.JWT}} established by {{RFC7519}}.
11641168
### Registry Contents
11651169

11661170
* Claim Name: `status`
1167-
* Claim Description: Reference to a status or validity mechanism containing up-to-date status information on the JWT.
1171+
* Claim Description: A JSON object containing a reference to a status mechanism from the JWT Status Mechanisms Registry.
11681172
* Change Controller: IETF
11691173
* Specification Document(s): [](#status-claim) of this specification
11701174

11711175
<br/>
11721176

11731177
* Claim Name: `status_list`
1174-
* Claim Description: A status list containing up-to-date status information on multiple tokens.
1178+
* Claim Description: A JSON object containing up-to-date status information on multiple tokens using the Token Status List mechanism.
11751179
* Change Controller: IETF
11761180
* Specification Document(s): [](#status-list-token-jwt) of this specification
11771181

@@ -1220,7 +1224,7 @@ Specification Document(s):
12201224
### Initial Registry Contents
12211225

12221226
* Status Mechanism Value: `status_list`
1223-
* Status Mechanism Description: A status list containing up-to-date status information on multiple tokens.
1227+
* Status Mechanism Description: A Token Status List containing up-to-date status information on multiple tokens.
12241228
* Change Controller: IETF
12251229
* Specification Document(s): [](#referenced-token-jose) of this specification
12261230

@@ -1234,7 +1238,7 @@ IANA "CBOR Web Token (CWT) Claims" registry {{IANA.CWT}} established by {{RFC839
12341238
<br/>
12351239

12361240
* Claim Name: `status`
1237-
* Claim Description: Reference to a status or validity mechanism containing up-to-date status information on the CWT.
1241+
* Claim Description: A CBOR structure containing a reference to a status mechanism from the CWT Status Mechanisms Registry.
12381242
* JWT Claim Name: `status`
12391243
* Claim Key: TBD (requested assignment 65535)
12401244
* Claim Value Type: map
@@ -1244,7 +1248,7 @@ IANA "CBOR Web Token (CWT) Claims" registry {{IANA.CWT}} established by {{RFC839
12441248
<br/>
12451249

12461250
* Claim Name: `status_list`
1247-
* Claim Description: A status list containing up-to-date status information on multiple tokens.
1251+
* Claim Description: A CBOR structure containing up-to-date status information on multiple tokens using the Token Status List mechanism.
12481252
* JWT Claim Name: `status_list`
12491253
* Claim Key: TBD (requested assignment 65533)
12501254
* Claim Value Type: map
@@ -1298,7 +1302,7 @@ Specification Document(s):
12981302
### Initial Registry Contents
12991303

13001304
* Status Mechanism Value: `status_list`
1301-
* Status Mechanism Description: A status list containing up-to-date status information on multiple tokens.
1305+
* Status Mechanism Description: A Token Status List containing up-to-date status information on multiple tokens.
13021306
* Change Controller: IETF
13031307
* Specification Document(s): [](#referenced-token-cose) of this specification
13041308

@@ -1898,6 +1902,10 @@ CBOR encoding:
18981902
* add Paul's affiliation
18991903
* add feedback from Dan Moore
19001904
* change JSON Status List structure to only contain JSON object
1905+
* further nitpicks
1906+
* clarifying status and status_list IANA descriptions for JWT/CWT
1907+
* clarifying description texts for status and status_list in CBOR
1908+
* splitting Linkability Mitigation from Token Lifecycle section in Implementation Consideration
19011909

19021910
-11
19031911

0 commit comments

Comments
 (0)