rfc9677v1.txt | rfc9677.txt | |||
---|---|---|---|---|
Internet Engineering Task Force (IETF) F. Fieau | Internet Engineering Task Force (IETF) F. Fieau | |||
Request for Comments: 9677 E. Stephan | Request for Comments: 9677 E. Stephan | |||
Category: Standards Track Orange | Category: Standards Track Orange | |||
ISSN: 2070-1721 G. Guillaume | ISSN: 2070-1721 G. Bichot | |||
C. Christoph | C. Neumann | |||
Broadpeak | Broadpeak | |||
October 2024 | October 2024 | |||
Content Delivery Network Interconnection (CDNI) Metadata for Delegated | Content Delivery Network Interconnection (CDNI) Metadata for Delegated | |||
Credentials | Credentials | |||
Abstract | Abstract | |||
The delivery of content over HTTPS involving multiple Content | The delivery of content over HTTPS involving multiple Content | |||
Delivery Networks (CDNs) raises credential management issues. This | Delivery Networks (CDNs) raises credential management issues. This | |||
skipping to change at line 192 ¶ | skipping to change at line 192 ¶ | |||
delegated credential and deploy it on multiple endpoints. | delegated credential and deploy it on multiple endpoints. | |||
Alternatively, the dCDN MAY deploy a different delegated credential | Alternatively, the dCDN MAY deploy a different delegated credential | |||
for each endpoint (provided that the uCDN delivers enough different | for each endpoint (provided that the uCDN delivers enough different | |||
delegated credentials). This choice is at the discretion of the dCDN | delegated credentials). This choice is at the discretion of the dCDN | |||
and depends on the number of delegated credentials provided by the | and depends on the number of delegated credentials provided by the | |||
uCDN. | uCDN. | |||
The FCI.DelegationCredentials object does not address expiry or | The FCI.DelegationCredentials object does not address expiry or | |||
renewal of delegated credentials. Once the uCDN has provided | renewal of delegated credentials. Once the uCDN has provided | |||
delegated credentials via the MI, the uCDN SHOULD monitor the | delegated credentials via the MI, the uCDN SHOULD monitor the | |||
provided credentials and their expiry times and timely refresh dCDN | provided credentials and their expiry times and SHOULD refresh dCDN | |||
credentials via the MI. The uCDN may decide not to monitor the | credentials via the MI in a timely manner. The uCDN may decide not | |||
validity period of delegated credentials and not to refresh the | to monitor the validity period of delegated credentials and not to | |||
credentials, for example, in cases of short-term one-shot deployments | refresh the credentials, for example, in cases of short-term one-shot | |||
or once it has decided to deprovision a dCDN. If the delegated | deployments or once it has decided to deprovision a dCDN. If the | |||
credential is not renewed on time by the uCDN, the servers of the | delegated credential is not renewed on time by the uCDN, the servers | |||
dCDN that only have expired delegated credentials MUST refuse any new | of the dCDN that only have expired delegated credentials MUST refuse | |||
TLS connection that requires an up-to-date delegated credential. | any new TLS connection that requires an up-to-date delegated | |||
credential. | ||||
4. CDNI Metadata Interface (MI) Metadata Object for Delegated | 4. CDNI Metadata Interface (MI) Metadata Object for Delegated | |||
Credentials | Credentials | |||
As expressed in [RFC9345], when an uCDN has delegated to a dCDN, the | As expressed in [RFC9345], when an uCDN has delegated to a dCDN, the | |||
dCDN presents the "delegated_credential" (rather than its own | dCDN presents the "delegated_credential" (rather than its own | |||
certificate) during the TLS handshake [RFC8446] to the User Agent. | certificate) during the TLS handshake [RFC8446] to the User Agent. | |||
This implies that the dCDN is also in the possession of the private | This implies that the dCDN is also in the possession of the private | |||
key corresponding to the public key in DelegatedCredential.cred | key corresponding to the public key in DelegatedCredential.cred | |||
[RFC9345]. This allows the User Agent to verify the signature in a | [RFC9345]. This allows the User Agent to verify the signature in a | |||
skipping to change at line 261 ¶ | skipping to change at line 262 ¶ | |||
constraints regarding the usage of the private key. | constraints regarding the usage of the private key. | |||
If the private-key property is used, the transported private key MUST | If the private-key property is used, the transported private key MUST | |||
be encrypted using the PrivateKeyEncryptionKey specified in | be encrypted using the PrivateKeyEncryptionKey specified in | |||
FCI.DelegatedCredentials. The envelope format for this property MUST | FCI.DelegatedCredentials. The envelope format for this property MUST | |||
use JWE [RFC7516] using the base64 compact serialization (Section 7.1 | use JWE [RFC7516] using the base64 compact serialization (Section 7.1 | |||
of [RFC7516]), whereas the private key is included as JWE Ciphertext | of [RFC7516]), whereas the private key is included as JWE Ciphertext | |||
in the JWE. The JWE content-type field MAY be used to signal the | in the JWE. The JWE content-type field MAY be used to signal the | |||
media type of the encrypted key. | media type of the encrypted key. | |||
Below, please see an example of an MI.DelegatedCredential object. | Below, please see an example of an MI.DelegatedCredentials object. | |||
{ | { | |||
"generic-metadata-type": "MI.DelegatedCredentials", | "generic-metadata-type": "MI.DelegatedCredentials", | |||
"generic-metadata-value": { | "generic-metadata-value": { | |||
"delegated-credentials": [ | "delegated-credentials": [ | |||
{"delegated-credential": | {"delegated-credential": | |||
"cBBfm8KK6pPz/tdgKyedwA... | "cBBfm8KK6pPz/tdgKyedwA... | |||
iXCCIAmzMM0R8FLI3Ba0UQ=="}, | iXCCIAmzMM0R8FLI3Ba0UQ=="}, | |||
{"delegated-credential": | {"delegated-credential": | |||
"4pyIGtjFdys1+9y/4sS/Fg... | "4pyIGtjFdys1+9y/4sS/Fg... | |||
skipping to change at line 287 ¶ | skipping to change at line 288 ¶ | |||
} | } | |||
} | } | |||
5. Delegated Credentials Call Flow | 5. Delegated Credentials Call Flow | |||
An example call-flow using delegated credentials is depicted in | An example call-flow using delegated credentials is depicted in | |||
Figure 1. The steps are as follows. | Figure 1. The steps are as follows. | |||
1. It is assumed that the uCDN has been provisioned and configured | 1. It is assumed that the uCDN has been provisioned and configured | |||
with a certificate. Note that it is out of scope of CDNI and the | with a certificate. Note that it is out of scope of CDNI and the | |||
present document how and from where (e.g., Content Service | present document how and from where (e.g., which Content Service | |||
Provider) the uCDN acquired its certificate. | Provider) the uCDN acquired its certificate. | |||
2. The uCDN generates a set of delegated credentials (here it is | 2. The uCDN generates a set of delegated credentials (here it is | |||
assumed that public keys of the dCDN are known). Note that the | assumed that public keys of the dCDN are known). Note that the | |||
uCDN may generate this material at different points in time, | uCDN may generate this material at different points in time, | |||
e.g., in advance to have a pool of delegated credentials or on | e.g., in advance to have a pool of delegated credentials or on | |||
demand when the dCDN announces its maximum number of supported | demand when the dCDN announces its maximum number of supported | |||
delegated credentials. | delegated credentials. | |||
3. Using the CDNI FCI [RFC8008], the dCDN advertises | 3. Using the CDNI FCI [RFC8008], the dCDN advertises | |||
skipping to change at line 329 ¶ | skipping to change at line 330 ¶ | |||
| | [2. generation of | | | [2. generation of | |||
| | delegated credentials] | | | delegated credentials] | |||
| | | | | | | | |||
| 3. CDNI FCI used to | | 3. CDNI FCI used to | |||
| advertise support of MI.DelegatedCredentials | | advertise support of MI.DelegatedCredentials | |||
| and announce number of delegated credentials | | and announce number of delegated credentials | |||
| supported using FCI.DelegatedCredentials | | supported using FCI.DelegatedCredentials | |||
| |-------------------->+ | | |-------------------->+ | |||
| | | | | | | | |||
| 4. CDNI MI used to | | 4. CDNI MI used to | |||
| provide the MI.DelegatedCredential object | | provide the MI.DelegatedCredentials object | |||
| |<--------------------+ | | |<--------------------+ | |||
| | | | | | | | |||
. | . | |||
. | . | |||
. | . | |||
[5. TLS handshake according | | [5. TLS handshake according | | |||
to [RFC9345]] . | | to [RFC9345]] . | | |||
|<------------------->| | | |<------------------->| | | |||
| | | | | | | | |||
. | . | |||
. | . | |||
. | . | |||
| 6. Some delegated credentials about to expire. | | 6. Some delegated credentials about to expire. | |||
| CDNI MI used to | | CDNI MI used to | |||
| provide new MI.DelegatedCredential object | | provide new MI.DelegatedCredentials object | |||
| |<--------------------+ | | |<--------------------+ | |||
| | | | | | | | |||
Figure 1: Example Call Flow of Delegated Credentials in CDNI | Figure 1: Example Call Flow of Delegated Credentials in CDNI | |||
6. IANA Considerations | 6. IANA Considerations | |||
IANA has registered the following payload types in the "CDNI Payload | IANA has registered the following payload types in the "CDNI Payload | |||
Types" registry in the "Content Delivery Network Interconnection | Types" registry in the "Content Delivery Network Interconnection | |||
(CDNI) Parameters" registry group. | (CDNI) Parameters" registry group. | |||
skipping to change at line 404 ¶ | skipping to change at line 405 ¶ | |||
requires access to the private key in order to exploit a delegated | requires access to the private key in order to exploit a delegated | |||
credential and impersonate dCDN nodes. Thus, leakage of only the | credential and impersonate dCDN nodes. Thus, leakage of only the | |||
delegated credential without the private key represents a limited | delegated credential without the private key represents a limited | |||
security risk. | security risk. | |||
Delegated credentials and associated private keys are short-lived | Delegated credentials and associated private keys are short-lived | |||
(per default, the maximum validity period is set to 7 days in | (per default, the maximum validity period is set to 7 days in | |||
[RFC9345]) and as such a single leaked delegated credential with its | [RFC9345]) and as such a single leaked delegated credential with its | |||
private key represents a limited security risk. Still, it is NOT | private key represents a limited security risk. Still, it is NOT | |||
RECOMMENDED to send private keys through the MI. Omitting the | RECOMMENDED to send private keys through the MI. Omitting the | |||
private key further limits the possibility exploits by an attacker to | private key further limits the possible ways an attacker could | |||
exploit the delegated credential. | exploits the delegated credential. | |||
If this recommendation is not followed, i.e., the private key is | If this recommendation is not followed, i.e., the private key is | |||
communicated via the MI, the transported private key MUST be | communicated via the MI, the transported private key MUST be | |||
encrypted within a JWE envelope using the encryption key | encrypted within a JWE envelope using the encryption key | |||
(PrivateKeyEncryptionKey) provided within the | (PrivateKeyEncryptionKey) provided within the | |||
FCI.DelegatedCredentials by the dCDN. The JWE encryption key | FCI.DelegatedCredentials by the dCDN. The JWE encryption key | |||
(PrivateKeyEncryptionKey) MUST have a strength equal to or larger | (PrivateKeyEncryptionKey) MUST have a strength equal to or larger | |||
than the private key it is encrypting for transport. Note that the | than the private key it is encrypting for transport. Note that the | |||
specified encryption method does not offer forward secrecy. If the | specified encryption method does not offer forward secrecy. If the | |||
dCDN's encryption key becomes compromised in the future, then all | dCDN's encryption key becomes compromised in the future, then all | |||
skipping to change at line 435 ¶ | skipping to change at line 436 ¶ | |||
secure these interfaces, protecting the integrity and | secure these interfaces, protecting the integrity and | |||
confidentiality, as well as ensuring the authenticity of the dCDN and | confidentiality, as well as ensuring the authenticity of the dCDN and | |||
uCDN, which should prevent an attacker from systematically retrieving | uCDN, which should prevent an attacker from systematically retrieving | |||
delegated credentials and associated private keys. | delegated credentials and associated private keys. | |||
8. Privacy Considerations | 8. Privacy Considerations | |||
The FCI and MI objects and the information defined in the present | The FCI and MI objects and the information defined in the present | |||
document do not contain any personally identifiable information | document do not contain any personally identifiable information | |||
(PII). As such, this document does not change or alter the | (PII). As such, this document does not change or alter the | |||
Confidentiality and Privacy Consideration outlined in the CDNI | confidentiality and privacy considerations outlined in Section 8.2 of | |||
Metadata and Footprint and Capabilities RFCs [RFC8006]. | [RFC8006] and Section 7 of [RFC8008]. | |||
A single or systematic retrieval of delegated credentials and | A single or systematic retrieval of delegated credentials and | |||
associated private keys would allow the attacker to decrypt any data | associated private keys would allow the attacker to decrypt any data | |||
sent by the end user intended for the end service, which may include | sent by the end user intended for the end service, which may include | |||
PII. | PII. | |||
9. References | 9. References | |||
9.1. Normative References | 9.1. Normative References | |||
skipping to change at line 522 ¶ | skipping to change at line 523 ¶ | |||
Emile Stephan | Emile Stephan | |||
Orange | Orange | |||
2, avenue Pierre Marzin | 2, avenue Pierre Marzin | |||
22300 Lannion | 22300 Lannion | |||
France | France | |||
Email: emile.stephan@orange.com | Email: emile.stephan@orange.com | |||
Guillaume Bichot | Guillaume Bichot | |||
Broadpeak | Broadpeak | |||
15, rue Claude Chappe | 3771 Boulevard des Alliés | |||
35510 Cesson-Sevigne | 35510 Cesson-Sévigné | |||
France | France | |||
Email: guillaume.bichot@broadpeak.tv | Email: guillaume.bichot@broadpeak.tv | |||
Christoph Neumann | Christoph Neumann | |||
Broadpeak | Broadpeak | |||
15, rue Claude Chappe | 3771 Boulevard des Alliés | |||
35510 Cesson-Sevigne | 35510 Cesson-Sévigné | |||
France | France | |||
Email: christoph.neumann@broadpeak.tv | Email: christoph.neumann@broadpeak.tv | |||
End of changes. 10 change blocks. | ||||
22 lines changed or deleted | 23 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. |