You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: draft-ietf-oauth-status-list.md
+41-49Lines changed: 41 additions & 49 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -445,7 +445,7 @@ The following is a non-normative example of a Status List Token in JWT format:
445
445
446
446
## Status List Token in CWT Format {#status-list-token-cwt}
447
447
448
-
The Status List Token MUST be encoded as a "CBOR Web Token (CWT)" according to {{RFC8392}}.
448
+
The Status List Token MUST be encoded as a "CBOR Web Token (CWT)" according to {{RFC8392}}. The Status List Token MUST not be tagged with the tags defined in section 6 of {{RFC8392}} or in section 2 of {{RFC9052}}.
449
449
450
450
The following content applies to the protected header of the CWT:
451
451
@@ -463,11 +463,11 @@ The following additional rules apply:
463
463
464
464
1. The CWT MAY contain other claims.
465
465
466
-
2. The CWT MUST be secured using a cryptographic signature or MAC algorithm. Relying Parties MUST reject CWTs with an invalid signature.
466
+
1. The CWT MUST be secured using a cryptographic signature or MAC algorithm. Relying Parties MUST reject CWTs with an invalid signature.
467
467
468
-
3. Relying Parties MUST reject CWTs that are not valid in all other respects per "CBOR Web Token (CWT)" {{RFC8392}}.
468
+
1. Relying Parties MUST reject CWTs that are not valid in all other respects per "CBOR Web Token (CWT)" {{RFC8392}}.
469
469
470
-
4. Application of additional restrictions and policies are at the discretion of the Relying Party.
470
+
1. Application of additional restrictions and policies are at the discretion of the Relying Party.
471
471
472
472
The following is a non-normative example of a Status List Token in CWT format in Hex:
473
473
@@ -1042,7 +1042,7 @@ This malicious behavior can be detected by Relying Parties that request large am
1042
1042
1043
1043
## Observability of Relying Parties {#privacy-relying-party}
1044
1044
1045
-
Once the Relying Party receives the Referenced Token, this enables them to request the Status List to validate its status through the provided `uri` parameter and look up the corresponding `index`. However, the Relying Party may persistently store the `uri` and `index` of the Referenced Token to request the Status List again at a later time. By doing so regularly, the Relying Party may create a profile of the Referenced Token's validity status. This behaviour may be intended as a feature, e.g. for an identity proofing (e.g. Know-Your-Customer process in finance industry) that requires regular validity checks, but might also be abused in cases where this is not intended and unknown to the Holder, e.g. profiling the suspension of a driving license or checking the employment status of an employee credential.
1045
+
Once the Relying Party receives the Referenced Token, this enables them to request the Status List to validate its status through the provided `uri` parameter and look up the corresponding `index`. However, the Relying Party may persistently store the `uri` and `index` of the Referenced Token to request the Status List again at a later time. By doing so regularly, the Relying Party may create a profile of the Referenced Token's validity status. This behaviour may be intended as a feature, e.g. for an identity proofing (e.g. Know-Your-Customer process in finance industry) that requires regular validity checks, but might also be abused in cases where this is not intended and unknown to the Holder, e.g. profiling the suspension of an employee credential.
1046
1046
1047
1047
This behaviour could be mitigated by:
1048
1048
@@ -1094,8 +1094,6 @@ There are strong privacy concerns that have to be carefully taken into considera
1094
1094
1095
1095
As previously explained, there is the potential risk of observability by Relying Parties (see [](#privacy-relying-party)) and Outsiders (see [](#privacy-outsider)). That means that any Status Type that transports special information about a Referenced Token can leak information to other parties. This document defines one additional Status Type with "SUSPENDED" that conveys such additional information.
1096
1096
1097
-
A concrete example for "SUSPENDED" would be a driver's license, where the digital driver's license might still be useful to prove other information about its holder, but suspended could signal that it should not be considered valid in the scope of being allowed to drive a car. This case could be solved by either introducing a special status type, or by revoking the Referenced Token and re-issuing with changed attributes. For such a case, the status type suspended might be dangerous as it would leak the information of a suspended driver's license even if the driver's license is used as a mean of identification and not in the context of driving a car. This could also allow for the unwanted collection of statistical data on the status of driver's licenses.
1098
-
1099
1097
Ecosystems that want to use other Status Types than "VALID" and "INVALID" should consider the possible leakage of data and profiling possibilities before doing so and evaluate if revocation and re-issuance might a better fit for their use-case.
1100
1098
1101
1099
# Implementation Considerations {#implementation}
@@ -1502,41 +1500,7 @@ IANA is requested to register the following OID "1.3.6.1.5.5.7.3.TBD" in the "SM
1502
1500
1503
1501
IANA is requested to register the following OID "1.3.6.1.5.5.7.0.TBD" in the "SMI Security for PKIX Module Identifier" registry (1.3.6.1.5.5.7.0), this OID is defined in section [](#asn1-module).
1504
1502
1505
-
# Appendix A. ASN.1 Module {#asn1-module}
1506
-
{:numbered="false"}
1507
-
1508
-
The following module adheres to ASN.1 specifications {{X.680}} and {{X.690}}.
The following tables show a size comparison for a Status List (compressed byte array as defined in [](#status-list-byte-array) and a compressed Byte Array of UUIDs (as an approximation for a Certificate Revocation List). Readers must be aware that these are not sizes for complete Status List Tokens in JSON/CBOR nor Certificate Revocation Lists (CRLs), as they don't contain metadata, certificates and signatures.
1572
1567
1573
1568
## Status List size for varying sizes and revocation rates
@@ -1581,7 +1575,6 @@ The following tables show a size comparison for a Status List (compressed byte a
1581
1575
{: title="Status List Size examples for varying sizes and revocation rates"}
1582
1576
1583
1577
## Compressed array of UUIDv4 (128 bit UUIDs) for varying sizes and revocation rates
1584
-
{:unnumbered}
1585
1578
1586
1579
This is a simple approximation of a Certificate Revocation List using an array of UUIDs without any additional metadata (128 bit UUID per revoked entry).
1587
1580
@@ -1593,14 +1586,12 @@ This is a simple approximation of a Certificate Revocation List using an array o
1593
1586
{: title="Size examples for 128 bit UUIDs for varying sizes and revocation rates"}
1594
1587
1595
1588
# Test vectors for Status List encoding {#test-vectors}
1596
-
{:unnumbered}
1597
1589
1598
1590
All examples here are given in the form of JSON or CBOR payloads. The examples are encoded according to [](#status-list-json) for JSON and [](#status-list-cbor) for CBOR. The CBOR examples are displayed as hex values.
1599
1591
1600
1592
All values that are not mentioned for the examples below can be assumed to be 0 (VALID). All examples are initialized with a size of 2^20 entries.
1601
1593
1602
1594
## 1 bit Status List
1603
-
{:unnumbered}
1604
1595
1605
1596
The following example uses a 1 bit Status List (2 possible values):
1606
1597
@@ -1631,7 +1622,6 @@ CBOR encoding:
1631
1622
~~~~~~~~~~
1632
1623
1633
1624
## 2 bit Status List
1634
-
{:unnumbered}
1635
1625
1636
1626
The following example uses a 2 bit Status List (4 possible values):
1637
1627
@@ -1662,7 +1652,6 @@ CBOR encoding:
1662
1652
~~~~~~~~~~
1663
1653
1664
1654
## 4 bit Status List
1665
-
{:unnumbered}
1666
1655
1667
1656
The following example uses a 4 bit Status List (16 possible values):
1668
1657
@@ -1697,7 +1686,6 @@ CBOR encoding:
1697
1686
~~~~~~~~~~
1698
1687
1699
1688
## 8 bit Status List
1700
-
{:unnumbered}
1701
1689
1702
1690
The following example uses a 8 bit Status List (256 possible values):
0 commit comments