Skip to content

Commit b956552

Browse files
authored
Merge pull request #248 from oauth-wg/deployment_models
add recommendations for Key Resolution and Trust Management
2 parents 4aa9d64 + f2d0271 commit b956552

File tree

1 file changed

+83
-5
lines changed

1 file changed

+83
-5
lines changed

draft-ietf-oauth-status-list.md

+83-5
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@ normative:
4848
RFC8949: RFC8949
4949
RFC9052: RFC9052
5050
RFC9110: RFC9110
51+
RFC5280: RFC5280
5152
RFC9596: RFC9596
5253
IANA.MediaTypes:
5354
author:
@@ -854,6 +855,22 @@ The following is a non-normative example for media type `application/json`:
854855
}
855856
~~~
856857

858+
# X.509 Certificate Extensions
859+
860+
## Extended Key Usage Extension {#eku}
861+
862+
{{RFC5280}} specifies the Extended Key Usage (EKU) X.509 certificate extension for use on end entity certificates. The extension indicates one or more purposes for which the certified public key is valid. The EKU extension can be used in conjunction with the Key Usage (KU) extension, which indicates the set of basic cryptographic operations for which the certified key may be used.
863+
864+
The following OID is defined for usage in the EKU extension
865+
866+
```
867+
id-kp OBJECT IDENTIFIER ::=
868+
{ iso(1) identified-organization(3) dod(6) internet(1)
869+
security(5) mechanisms(5) pkix(7) 3 }
870+
871+
id-kp-oauthStatusListSigning OBJECT IDENTIFIER ::= { id-kp TBD }
872+
```
873+
857874
# Security Considerations {#Security}
858875

859876
The Status List as defined in [](#status-list) only exists in cryptographically secured containers which allows checking the integrity and origin without relying on other aspects like transport security (e.g., the web PKI).
@@ -870,9 +887,50 @@ A Status List Token in the JWT format should follow the security considerations
870887

871888
A Status List Token in the CWT format should follow the security considerations of {{RFC8392}}.
872889

873-
## MAC-secured Status Lists
890+
## Key Resolution and Trust Management {#key-management}
891+
892+
This specification does not mandate specific methods for key resolution and trust management, however the following recommendations are made:
893+
894+
If the Issuer of the Referenced Token is the same entity as the Status Issuer, then the same key that is embedded into the Referenced Token may be used for the Status List Token. In this case the Status List Token may use:
895+
- the same `x5c` value or an `x5t`, `x5t#S256` or `kid` parameter referencing to the same key as used in the Referenced Token for JOSE.
896+
- the same `x5chain` value or an `x5t` or `kid` parameter referencing to the same key as used in the Referenced Token for COSE.
897+
898+
Alternatively, the Status Issuer may use the same web-based key resolution that is used for the Referenced Token. In this case the Status List Token may use:
899+
- an `x5u`, `jwks`, `jwks_uri` or `kid` parameter referencing to a key using the same web-based resolution as used in the Referenced Token for JOSE.
900+
- an `x5u` or `kid` parameter referencing to a key using the same web-based resolution as used in the Referenced Token for COSE.
901+
902+
~~~ ascii-art
903+
┌────────┐ host keys ┌──────────────────────┐
904+
│ Issuer ├────────┬───►│ .well-known metadata │
905+
└─┬──────┘ │ └──────────────────────┘
906+
▼ update status │
907+
┌───────────────┐ │
908+
│ Status Issuer ├─┘
909+
└─┬─────────────┘
910+
▼ provide Status List
911+
┌─────────────────┐
912+
│ Status Provider │
913+
└─────────────────┘
914+
~~~
915+
If the Issuer of the Referenced Token is a different entity than the Status Issuer, then the keys used for the Status List Token may be cryptographically linked, e.g. by an Certificate Authority through an x.509 PKI. The certificate of the Issuer for the Referenced Token and the Status Issuer should be issued by the same Certificate Authority and the Status Issuer's certificate should utilize [extended key usage](#eku).
874916

875-
This specification allows for both cryptographic signatures and message authentication codes (MAC) to secure a Status List Token. For (H)MAC based deployments, the security implications of a shared secret should be understood and should match the general security considerations of the deployment. There usually exists a stronger relationship between RP and Issuer for such deployments and they have the capability to securely distribute a shared secret ouf of band.
917+
~~~ ascii-art
918+
┌───────────────────────┐
919+
│ Certificate Authority │
920+
└─┬─────────────────────┘
921+
│ authorize
922+
│ ┌────────┐
923+
├─►│ Issuer │
924+
│ └─┬──────┘
925+
│ ▼ update status
926+
│ ┌───────────────┐
927+
└─►│ Status Issuer │
928+
└─┬─────────────┘
929+
▼ provide Status List
930+
┌─────────────────┐
931+
│ Status Provider │
932+
└─────────────────┘
933+
~~~
876934

877935
## Status List Caching
878936

@@ -961,11 +1019,11 @@ To avoid privacy risks for colluding Relying Parties, it is RECOMMENDED that Iss
9611019

9621020
A Status Issuer and a Relying Party Issuer may link two transaction involving the same Referenced Tokens by comparing the status claims of the Referenced Token and therefore determine that they have interacted with the same Holder. It is therefore recommended to use Status Lists for Referenced Token formats that have similar unlinkability properties.
9631021

964-
## Third-Party Hosting {#third-party-hosting}
1022+
## External Status Provider for Privacy {#third-party-hosting}
9651023

966-
If the roles of the Issuer and the Status Provider are performed by two different entities, this may give additional privacy assurances as the Issuer has no means to identify the Relying Party or its request.
1024+
If the roles of the Status Issuer and the Status Provider are performed by different entities, this may give additional privacy assurances as the Issuer has no means to identify the Relying Party or its request.
9671025

968-
Third-Party hosting may also allow for greater scalability, as the Status List Tokens may be served by operators with greater resources, like CDNs.
1026+
Third-Party hosting may also allow for greater scalability, as the Status List Tokens may be served by operators with greater resources, like CDNs, while still ensuring authenticity and integrity of Token Status List, as it is signed by the Status Issuer.
9691027

9701028
## Historical Resolution {#privacy-historical}
9711029

@@ -1000,6 +1058,19 @@ The Status List Issuer may increase the size of a Status List if it requires ind
10001058

10011059
The Status List Issuer may chunk its Referenced Tokens into multiple Status Lists to reduce the transmission size of an individual Status List Token. This may be useful for setups where some entities operate in constrained environments, e.g. for mobile internet or embedded devices. The Status List Issuer may chunk the Status List Tokens depending on the Referenced Token's expiry date to align their lifecycles and allow for easier retiring of Status List Tokens, however the Status Issuer must be aware of possible privacy risks due to correlations.
10021060

1061+
## External Status Issuer
1062+
1063+
If the roles of the Issuer of the Referenced Token and the Status Issuer are performed by different entities, this may allow for use case that require revocations of Referenced Tokens to be managed by a different entities, e.g. for regulatory or privacy reasons. In this scenario both parties must align on:
1064+
1065+
- the key and trust management as described in [](#key-management)
1066+
- parameters for the Status List
1067+
- number of `bits` for the Status Type as described in [](#status-list)
1068+
- update cycle of the Issuer used for `ttl` in the Status List Token as described in [](#status-list-token)
1069+
1070+
## External Status Provider for Scalability
1071+
1072+
If the roles of the Status Issuer and the Status Provider are performed by different entities, this may allow for greater scalability, as the Status List Tokens may be served by operators with greater resources, like CDNs. At the same time the authenticity and integrity of Token Status List is still guaranteed, as it is signed by the Status Issuer.
1073+
10031074
## Relying Parties avoiding correlatable Information
10041075

10051076
If the Relying Party does not require the Referenced Token and the Status List Token after the presentation, e.g. for subsequent status checks or audit trail, it is RECOMMENDED to delete correlatable information, in particular:
@@ -1302,6 +1373,10 @@ To indicate that the content is an CWT-based Status List:
13021373
* Change controller: IETF
13031374
* Provisional registration? No
13041375

1376+
## X.509 Certificate Extended Key Purpose OID Registration
1377+
1378+
IANA is also requested to register the following OID "1.3.6.1.5.5.7.3.TBD" in the "SMI Security for PKIX Extended Key Purpose" registry (1.3.6.1.5.5.7.3), this OID is defined in section [](#eku).
1379+
13051380
--- back
13061381

13071382
# Acknowledgments
@@ -1712,6 +1787,9 @@ CBOR encoding:
17121787

17131788
-07
17141789

1790+
* add considerations about External Status Issuer or Status Provider
1791+
* add recommendations for Key Resolution and Trust Management
1792+
* add extended key usage extensions for x509
17151793
* Relying Parties avoiding correlatable Information
17161794
* editorial changes on terminology and Referenced Tokens
17171795
* clarify privacy consideration around one time use reference tokens

0 commit comments

Comments
 (0)