Skip to main content

URI Signing for Content Delivery Network Interconnection (CDNI)
draft-ietf-cdni-uri-signing-26

Revision differences

Document history

Date Rev. By Action
2024-01-26
26 Gunter Van de Velde Request closed, assignment withdrawn: Ron Bonica Last Call OPSDIR review
2024-01-26
26 Gunter Van de Velde Closed request for Last Call review by OPSDIR with state 'Overtaken by Events': Cleaning up stale OPSDIR queue
2022-06-09
26 (System) RFC Editor state changed to AUTH48-DONE from AUTH48
2022-05-20
26 (System) RFC Editor state changed to AUTH48
2022-05-10
26 (System) RFC Editor state changed to RFC-EDITOR from EDIT
2022-04-04
26 (System) IANA Action state changed to RFC-Ed-Ack from Waiting on RFC Editor
2022-04-04
26 (System) IANA Action state changed to Waiting on RFC Editor from In Progress
2022-04-04
26 (System) IANA Action state changed to In Progress from Waiting on Authors
2022-04-01
26 (System) IANA Action state changed to Waiting on Authors from In Progress
2022-04-01
26 (System) IANA Action state changed to In Progress from Waiting on ADs
2022-03-31
26 (System) IANA Action state changed to Waiting on ADs from In Progress
2022-03-23
26 (System) RFC Editor state changed to EDIT
2022-03-23
26 (System) IESG state changed to RFC Ed Queue from Approved-announcement sent
2022-03-23
26 (System) Announcement was received by RFC Editor
2022-03-23
26 (System) IANA Action state changed to In Progress
2022-03-23
26 Cindy Morgan IESG state changed to Approved-announcement sent from Approved-announcement to be sent
2022-03-23
26 Cindy Morgan IESG has approved the document
2022-03-23
26 Cindy Morgan Closed "Approve" ballot
2022-03-23
26 Cindy Morgan Ballot approval text was generated
2022-03-22
26 Francesca Palombini IESG state changed to Approved-announcement to be sent from IESG Evaluation::AD Followup
2022-03-22
26 Benjamin Kaduk
[Ballot comment]
Thank you (new for -26) for finalizing the switch to "MUST NOT"
redistribute symmetric keys!

Thank you for lowering the prominence of the …
[Ballot comment]
Thank you (new for -26) for finalizing the switch to "MUST NOT"
redistribute symmetric keys!

Thank you for lowering the prominence of the cdniip claim/functionality,
it is much appreciated.

Thank you as well for updating the examples; I am too crunched for time to
attempt to revalidate them before the AD cutover, but am happy to see
that they were updated.

I also appreciate the additional text covering the JWT "iss" usage and
reinforcing that a key used to sign JWTs (regardless of whether it is
identified using "iss") must be delivered in trusted configuration (i.e.,
not in-band).  I would have preferred to see this point reiterated in the
Security Considerations, as much of the new text is in the description of
the usage of the "iss" claim (which one might expect to be irrelevant if
the claim itself is not being used), but that is no longer a Discuss-level
point based on the updates elsewhere in the document.
2022-03-22
26 Benjamin Kaduk [Ballot Position Update] Position for Benjamin Kaduk has been changed to No Objection from Discuss
2022-03-22
26 Phil Sorber New version available: draft-ietf-cdni-uri-signing-26.txt
2022-03-22
26 (System) New version accepted (logged-in submitter: Phil Sorber)
2022-03-22
26 Phil Sorber Uploaded new revision
2022-03-20
25 Benjamin Kaduk
[Ballot discuss]
I see that the -25 has demoted discussion of symmetric key redistribution
from (paraphrasing) "a normal thing mentioned in passing" to a SHOULD …
[Ballot discuss]
I see that the -25 has demoted discussion of symmetric key redistribution
from (paraphrasing) "a normal thing mentioned in passing" to a SHOULD NOT
action.  This is a step in the right direction, but I am not sure that
it's far enough.  Is there some additional background on why this
functionality (of key redistribution from uCDN to dCDN in particular, or
group sharing of a single symmetric key from CSP to both uCDN and dCDN) is
required to retain that I am failing to find?  The latest discussion I see
in the WG email archives is
https://mailarchive.ietf.org/arch/msg/cdni/iFP6w3z22yQ1s0IJisrsIJN1ikU/
which seemed to suggest that the mechanism would be removed entirely.
The security properties of this group key sharing are sufficiently poor
that (if we do need to keep it) I think there would need to be explicit
discussion in the document about what the use case is and why that use
case allows for the weakening of security properties.
2022-03-20
25 Benjamin Kaduk
[Ballot comment]
Thank you for lowering the prominence of the cdniip claim/functionality,
it is much appreciated.

Thank you as well for updating the examples; I …
[Ballot comment]
Thank you for lowering the prominence of the cdniip claim/functionality,
it is much appreciated.

Thank you as well for updating the examples; I am too crunched for time to
attempt to revalidate them before the AD cutover, but am happy to see
that they were updated.

I also appreciate the additional text covering the JWT "iss" usage and
reinforcing that a key used to sign JWTs (regardless of whether it is
identified using "iss") must be delivered in trusted configuration (i.e.,
not in-band).  I would have preferred to see this point reiterated in the
Security Considerations, as much of the new text is in the description of
the usage of the "iss" claim (which one might expect to be irrelevant if
the claim itself is not being used), but that is no longer a Discuss-level
point based on the updates elsewhere in the document.
2022-03-20
25 Benjamin Kaduk Ballot comment and discuss text updated for Benjamin Kaduk
2022-03-07
25 (System) Removed all action holders (IESG state changed)
2022-03-07
25 (System) Sub state has been changed to AD Followup from Revised ID Needed
2022-03-07
25 (System) IANA Review state changed to Version Changed - Review Needed from IANA OK - Actions Needed
2022-03-07
25 Phil Sorber New version available: draft-ietf-cdni-uri-signing-25.txt
2022-03-07
25 (System) New version accepted (logged-in submitter: Phil Sorber)
2022-03-07
25 Phil Sorber Uploaded new revision
2022-01-24
24 Francesca Palombini Waiting on the update following Ben's DISCUSS and COMMENTs for v-24.
2022-01-24
24 (System) Changed action holders to Kent Leung, Ray van Brandenburg, Phil Sorber (IESG state changed)
2022-01-24
24 Francesca Palombini IESG state changed to IESG Evaluation::Revised I-D Needed from IESG Evaluation::AD Followup
2022-01-06
24 Amanda Baber IANA Review state changed to IANA OK - Actions Needed from Version Changed - Review Needed
2022-01-05
24 John Scudder [Ballot Position Update] New position, No Objection, has been recorded for John Scudder
2022-01-04
24 Benjamin Kaduk
[Ballot discuss]
Thanks for the updates in the -22 through -24.  I think a couple of my
discuss points remain at the discuss level, which …
[Ballot discuss]
Thanks for the updates in the -22 through -24.  I think a couple of my
discuss points remain at the discuss level, which I'll expound on a bit more
below.

I am happy to see the pervasive disclaimers that use of a symmetric shared
key is supported but NOT RECOMMENDED, and the note that redistribution of
the symmetric shared key to dCDNs (including cascaded CDNs) is included for
legacy feature parity and highly discouraged in new implementations.
However, I think this does not fully address my original discuss point.  As
I said then, [[I see a minimal acknowledgment that there is potential cause
concern in the penultimate paragraph of the security considerations that "it
is important to know the implications of a compromised shared key", but in
my mind the text there does not really call out the severity of those
implications.  I would have expected something like "redistributing the
shared key in this manner allows the dCDNs to impersonate the CSP to the
uCDN and produce arbitrary signed URLs that are accepted by the uCDN as
authentic".]]  In particular, I think it is important to emphasize in some
manner that the cryptographc properties of the symmetric shared key are
fully symmetric across all participants, even though the administrative and
organizational structure here is hierarchical with explicitly more- and
less-trusted entities, making the symmetric cryptographic mechanism a
mismatch for the desired trust boundaries and inviting abuse.  Only
contractual controls prevent misuse in this scenario, whereas we have
well-understood technologies that allow technical measures to prevent misuse
that are preferred.

It's also still unclear to me that there's sufficient need to document the
symmetric key *redistribution* case in this document at all, if the only use
case is for "legacy feature parity".  Given that it's a fairly simple idea,
what is to stop us from leaving it undocumented in this Proposed Standard
and letting any implementors that need it do so on their own, or with a
separate Informational document mentioning its existence?  I am not aware of
any preexisting IETF work that we need to retain compatibility with, and the
data presented so far does not make a compelling (to me) case that we must
include this functionality in order for the IETF offering to be competitive.
(To be clear, I do not object to describing the use of symmetric keys for a
single-hop scenario, as the risks there are much smaller.)

I'd also like to have some additional discussion on this point from my
previous Discuss position, reproduced with typo fixed:
===
The combined defaults for the CDNI Metadata Interface for URI Signing seem
to be an unsafe combination.  Specifically, the default behavior for the
"issuers" property is to allow any Issuer, and the default for the
"jwt-header" property is to take the header from the JWT in band.  As far as
I can tell, this means that the dCDN will just blindly accept anything that
is formatted as a JWT and signed by any key known to the dCDN.  The
authentication and authorization properties of such behavior are so poor so
as to effectively be useless, absent some level of care surrounding key
management to isolate keys to given URIs.  In fact, the lack of substantive
discussion of key management and requirements thereof seems Discuss-worthy
in its own right.  We need to say something about obtaining a key along with
a trust path to what it's authorized to be used for, even if the specific
protocol mechanism for doing so is left out of scope.
===
I do see that §1.3 gained a mention of "obtain the key in a manner that
allows trust to be placed in the assertions made using that key", apparently
per my suggestion in my original COMMENT section.  However, I don't think
this is sufficient.  I strongly encourage a dedicated section on the
requirements for key management and how updates (both additions and
removals) of the list of trusted Issuer/key pairs are managed.  Failing
that, at a minimum the default for the "issuers" property in the CDNI
Metadata Interface needs to be changed to say that an empty list means that
any Issuer in the dCDN's trusted key store of issuers is acceptable for
signing JWTs for URI signing.  This is to be contrasted with "any Issuer at
all", which does not impose an obligation on the dCDN to maintain a list of
Issuer/key pairs trusted for signing JWTs used in signed URIs.
2022-01-04
24 Benjamin Kaduk
[Ballot comment]
Thanks for the updates to make use of "cdniip" NOT RECOMMENDED.  I'm still
uncomfortable about the way in which it is framed, but …
[Ballot comment]
Thanks for the updates to make use of "cdniip" NOT RECOMMENDED.  I'm still
uncomfortable about the way in which it is framed, but we have added enough
discussion of the risks it entails to make me demote it from being a
Discuss-level concern.

I'm also still uncomfortable about the directive to retain the same "jti"
value when re-signing in the redirection case, but in light of the input
from the IANA Designated Expert on the scope of potential harm from this
violation of RFC 7519, I have demoted that point from Discuss-level.

Thanks as well for adding the reference to RFC 8725, the JWT BCP.
I call attention to §3.11 thereof that recommends using explicit typing for
JWTs.  In the absence of evidence to the contrary, I believe that all new
JWT usage should include explicit type information; is there some reason why
explicit typing is not suitable here?

Thank you for acting on so many of my previous comments!  I think the
document is improved as a result.  I do retain some of my previous comments
that I didn't see any response to or changes as a result of, and have some
new comments interspersed as well.

Section 1.2

  before redirecting a UA to the CDN.  Using these attributes, it is
  possible for a CDN to check an incoming content request to see
  whether it was authorized by the CSP (e.g., based on the UA's IP
  address or a time window).  To prevent the UA from altering the

In light of cdniip being NOT RECOMMENDED, should the "UA's IP address" still
be mentioned in this parenthetical?

  the Target CDN URI itself is embedded in the HTML).  The Target CDN
  URI is the Signed URI which may include the IP address of the UA and/
  or a time window.  The signed URI always contains a signed JWT
  [...]
  JWT.  If applicable, the CDN checks whether the source IP address of
  the HTTP request matches the one in the Signed URI and/or if the time
  window is still valid.  [...]

Similarly, even if we may feel a need to include IP address in the
description here for completeness, we might want to shift the focus by
mentioning the more-recommended option first.

Section 2

  o  URI Signing Package (URISigningPackage): The URI attribute that
      encapsulates all the URI Signing claims in a signed JWT encoded
      format.  This attribute is exposed in the Signed URI as a path-
      style parameter or a form-style parameter.

Is there a good reference for "URI attribute"?  It sounds like should be
a technical term but I couldn't find a clear definition.

  The URI Signing Package will be found by parsing any path-style
  parameters and form-style parameters looking for a key name matching
  the URI Signing Package Attribute.  Both parameter styles MUST be
  supported to allow flexibility of operation.  The first matching
  parameter SHOULD be taken to provide the signed JWT, though providing
  more than one matching key is undefined behavior.  Path-style
  parameters generated in the form indicated by Section 3.2.7 of
  [RFC6570] MUST be supported.  Form-style parameters generated in the
  form indicated by Sections 3.2.8 and 3.2.9 of [RFC6570] MUST be
  supported.

The last two sentences seem a bit redundant with the second sentence
("Both parameter styles MUST be supported..."); it would be advisable to at
least use a lowercase "must" in the earlier sentence to avoid stating the
same normative requirement twice, if not just remove the redundant content
entirely.

Section 2.1

  The following claims (where the "JSON Web Token Claims" registry
  claim name is specified in parenthesis below) are used to enforce the
  distribution policies.  All of the listed claims are mandatory to
  implement in a URI Signing implementation, but are not mandatory to
  use in a given signed JWT.  (The "optional" and "mandatory"
  identifiers in square brackets refer to whether or not a given claim
  MUST be present in a URI Signing JWT.)

The final parenthetical suggests that the previous sentence should read
"not necessarily mandatory to use" (since apparently some of them *are*
mandatory to use).  Though I do see this was noted by Roman as well.  I
would be interested to hear why cdniuc is not mandatory (see below)...

  Note: The time on the entities that generate and verify the signed
  URI MUST be in sync.  In the CDNI case, this means that CSP, uCDN,
  and dCDN servers need to be time-synchronized.  It is RECOMMENDED to
  use NTP [RFC5905] for time synchronization.

I note that RFC 8915 presents Network Time Security for NTP, which might be
a helpful reference (and, arguably, worth recommending in its own right).
RFC 8633 is BCP 223, "Network Time Protocol Best Current Practices", also
worth referencing.

Section 2.1.x

[retained from my previous ballot position for posterity]
In general, my stance is that it's redundant to say that "the semantics
in Section X of RFC 7519 MUST be followed", because that's inherent in
the definition of the JWT claim.  But you're free to write the text as
you wish.

Section 2.1.1

  Issuer (iss) [optional] - The semantics in [RFC7519] Section 4.1.1
  MUST be followed.  If this claim is used, it MUST be used to confirm
  that the indicated key was provided by said issuer and used to sign
  the JWT.  [...]

I'm really confused at how these words fit together.  Is "the indicated key"
supposed to be a single unique key associated with the Issuer as identified
by the "iss" claim?  This is in general not true, as a given Issuer can have
more than one key in use.  Furthermore, what does it mean for the key to
have been "provided by" said issuer?  Provided when, as part of what
protocol flow?  If I ignore this sentence and just try to write something
based on my knowledge of JWT and expectations for how the CDNI URI Signing
works, I would write "If this claim is used, it MUST be used to identify the
issuer (signer) of the JWT.  In particular, the recipient will have already
received, in trusted configuration, a mapping of issuer name to one or more
keys used to sign JWTs, and must verify that the JWT was signed by one of
those keys."

            If the CDN verifying the signed JWT does not support Issuer
  verification, or if the Issuer in the signed JWT does not match the
  list of known acceptable Issuers, the CDN MUST reject the request.

I think this is intended to be "If this claim is used and the CDN verifying
the signed JWT [...]".

Also, I think this list also needs to include "if the Issuer claim does not
match the key used to sign the JWT".

Section 2.1.2

  Subject (sub) [optional] - The semantics in [RFC7519] Section 4.1.2
  MUST be followed.  If this claim is used, it MUST be a JSON Web
  Encryption (JWE [RFC7516]) Object in compact serialization form,
  because it contains personally identifiable information.  This claim

While I am happy to see that the subject information is recognized as
PII and required to be protected, it seems that this formulation is
over-constrained.  Why does the Subject specifically need to be
compact-serialization-form JWE, as opposed to some other encrypted form
(that cannot be correlated to other instances of the same encrypted
Subject?  Why does just using a signed-and-encrypted JWT for the
containing JWT not suffice?

  contains information about the subject (for example, a user or an
  agent) that MAY be used to verify the signed JWT.  If the received
  signed JWT contains a Subject claim, then any JWT subsequently
  generated for CDNI redirection MUST also contain a Subject claim, and
  the Subject value MUST be the same as in the received signed JWT.  [...]

Strict value equivalence seems problematic (given that we mandate
compact-form JWE), since there is a key (re)distribution problem for
making the information usable to any dCDN that is involved.  If it's
encrypted using a symmetric key, then the uCDN sharing it to the dCDN
introduces the same issue as for "signed" JWTs -- the dCDN can
impersonate the CSP; if it's using an asymmetric key then the set of
recipients is fixed at JWE creation (by the CSP) and we either lose the
ability to seamlessly add CDN tiers or have to redistribute the private
key (which is against best practices), in order to meet the "byte for
byte the same value" requirement.  What motivates the prohibition of
re-encrypting for the next level of hierarchy?  I think that in the JWT
convention we could say that the "the Subject identified by the value of the
'sub' claim in any JWT subsequently generated for CDNI redirection MUST be
the same as the Subject identified by the value of the 'sub' claim in the
received signed JWT" to achieve a requirement that the information content
remain unchanged, without requiring strict value equivalence.

Section 2.1.3

  Audience (aud) [optional] - The semantics in [RFC7519] Section 4.1.3
  MUST be followed.  This claim is used to ensure that the CDN
  verifying the JWT is an intended recipient of the request.  The claim
  MUST contain an identity on behalf of whom the CDN can verify the
  token (e.g., the CSP or any CDN in the chain).  A CDN MAY modify the
  claim as long it can generate a valid signature.

While a setup that naively translates JWT semantics to the CDNI case would
have the CSP issue a JWT with Audience of the uCDN (or some meta-Audience
for the combination of uCDN and dCDN), and then either the uCDN would
re-sign with the dCDN as the Audience or the dCDN would be configured to
recognize the Audience used by the CSP as being valid for itself, I think I
see what is intended here, that the CSP issues a JWT with Audience that
corresponds to the request as targeted to the CSP and ultimately ending up
at one or more CDNs.  That is, the CDNs know what CSP a given request is
supposed to come from, and can match the audience value against the CSP's
identification or an upstream CDN in addition to its own identification.  In
that case, I would suggest rewording to something like "The claim MUST
contain an identity belonging to the chain of entities involved in
processing the request (e.g., identifying the CSP or any CDN in the chain)
that the recipient is configured to use for the processing of this request".

Section 2.1.7

I think we need to make some statement (not necessarily here) about whether
the JWT ID used in JWTs issued by token renewal use the same or different
JWT IDs.  Currently we don't seem to say anything, and that seems likely to
lead to interoperability issues.

Section 2.1.9

It might be worth asking the OAuth WG if there's seen to be value in
having a generic "crit" claim that protocols can require comprehension
of, to hold a list of claims that are critical for that token in that
protocol.

Section 2.1.10

[same comments about encryption as for Subject]

Section 2.1.12

Can we give any guidance on what kind of values might make sense for the
CDNI Expiration Time Setting field and still providing some reasonable
security properties?  (Conversely, what kind of values are so large so
as to be nonsensical?)

Section 2.1.14

The first two paragraphs seem to talk about this claim as being a
direction to the client of when to send such a token along with a
request, but the third paragraph seems to talk about it as being a
direction to the CDN for generating new tokens as part of Signed Token
Renewal.  This leaves me confused about what the intended usage actually
is.

Section 2.1.15

  The URI Container (cdniuc) claim takes one of the following forms:
  'hash:' or 'regex:'.  More forms may be added in the future to extend
  the capabilities.

How will a JWT producer know whether a JWT consumer knows about any such
extended functionality?

Section 2.1.15.2

  An example of a 'regex:' is the following:

  [^:]*\\://[^/]*/folder/content/quality_[^/]*/segment.{3}\\.mp4(\\?.*)?

It seems a bit surprising to just do a wildcard match on scheme and
assume that the path components will be meaningful for that scheme.
Perhaps a variation that used branches to match only http or https
schemes would be preferred?

Section 4.4

      Property: issuers

        Description: A list of valid Issuers against which the Issuer
        claim in the signed JWT may be cross-referenced.

Cross-referencing or verifying against the JWT issuer is only part of
verifying a JWT; there needs to also be a binding between Issuer and key(s)
used to sign JWTs.  I think we should say something here about how the
Issuer/key binding is tracked, since it is apparently not part of the CDNI
metadata interface.

      Property: jwt-header

        Description: The header part of JWT that is used for verifying
        a signed JWT when the JWT token in the URI Signing Package does
        not contain a header part.

To me, "the header part of [a] JWT" would mean the base64-encoded version.
The example below uses a native JSON object.  I strongly suggest being more
precise about what this property is supposed to contain.  (Also,
RFC 8519 does not use the phrase "JWT header", and refers only to the "JOSE
header".)

  The following is an example of a URI Signing metadata payload with
  explicit values:

  {
    "generic-metadata-type": "MI.UriSigning"
    "generic-metadata-value":
      {
        "enforce": true,
        "issuers": ["csp", "ucdn1", "ucdn2"],

It might be more helpful to use the URI form of the Issuer names, since
in this generic RFC we do not have any deployment-specific context that
would allow the use of a short string issuer identifier.

Section 5.2

  2.  CSP provides to the uCDN the information needed to verify Signed
        JWTs from that CSP.  For example, this information will include
        one or more keys used for validation.

  3.  Using the CDNI Metadata interface, the uCDN communicates to a
        dCDN the information needed to verify Signed JWTs from the CSP
        [...]

Thanks for making changes so that the phrasing in this section more closely
matches the phrasing of the previous section!  It looks like the previous
section switched from "Signed JWTs" here to "signed URIs", so we might need
to catch up (twice).

Appendix A.3

  Once the server verifies the signed JWT it will return a new signed
  JWT with an updated expiry time (exp) as shown below.  Note the
  expiry time is increased by the expiration time setting (cdniets)
  value.

My previous comment was:
===
This example is adding the "cdniets" value to the previous "exp" value,
but the specification for this claim says that it is added to the "time
at which the JWT is verified", which is unlikely to be exactly the
previous "exp" value.  I suggest adding a few words about this and using
a different (earlier) "exp" in the re-signing example.
===
It looks like the update to use more-current "exp" values has caused the
"add the 'cdniets' value" step to be skipped, so that the two "exp" values
are identical.  I don't think they can actually be identical with "cdniets"
set to 30.

NITS

Section 1.2

  address or a time window).  To prevent the UA from altering the
  claims a JWT MUST be signed.

I think "the JWT" would flow better here.

Section 1.3

  routing.  Note that the signed Redirection URI MUST maintain HTTPS as
  the scheme if it was present in the original and it MAY be upgraded
  from HTTP to HTTPS.

When referring to URI schemes, we typically use the lower-case for "http:"
and "https:".

Section 2.1.9

  Its value is a comma separated listing of claims in the Signed JWT
  that use those extensions.  If any of the listed extension claims are

The causality seems reversed -- isn't it that the extensions use the claims
being marked critical, rather than the claims using the extensions?  So,
s/that use/that are used by/?

Section 2.1.15

      all other purposes will use the original URI.  If the signed JWT
      is terminated by anything other than a sub-delimiter (as defined
      in [RFC3986] Section 2.2), everything from the reserved character
      (as defined in [RFC3986] Section 2.2) that precedes the URI
      Signing Package Attribute to the last character of the signed JWT
      will be removed, inclusive.  Otherwise, everything from the first

Do we mean "immediately preceeds" here?

  *  Normalize the URI according to section 2.7.3 [RFC7230] and
      sections 6.2.2 and 6.2.3 [RFC3986].  This applies to both
      generation and verification of the signed JWT.

The HTTP spec is being revised, so Section 4.2.3 of
draft-ietf-httpbis-semantics may be a better reference than RFC 7230 here.
2022-01-04
24 Benjamin Kaduk Ballot comment and discuss text updated for Benjamin Kaduk
2022-01-04
24 Roman Danyliw
[Ballot comment]
Thanks for addressing by DISCUSS and COMMENT feedback on the original ballot on -21.

Also, thanks to Brian Campbell and other OAuth WG …
[Ballot comment]
Thanks for addressing by DISCUSS and COMMENT feedback on the original ballot on -21.

Also, thanks to Brian Campbell and other OAuth WG members for the discussion on the reuse of the same jti claim value when signing different JWT content (i.e., what constitutes “different data object(s)”) across multiple CDNs.
2022-01-04
24 Roman Danyliw [Ballot Position Update] Position for Roman Danyliw has been changed to No Objection from Discuss
2022-01-03
24 Éric Vyncke
[Ballot comment]
Thank you for fixing all my previous COMMENTs in the -22 revision and addressing parts of my previous DISCUSS by using “NOT RECOMMENDED” …
[Ballot comment]
Thank you for fixing all my previous COMMENTs in the -22 revision and addressing parts of my previous DISCUSS by using “NOT RECOMMENDED” in section 2.1.10 in the -24 revision.

I am afraid that I still do not see the value of having cdniip in this document, but, as I do not want to block this document, I am balloting ABSTAIN.

The section 7 (security considerations) is still very light on the IP address sharing. I would welcome some applicability statements on the use of cdniip.

-éric

== DISCUSS (kept for archive) ==

-- Section 2.1.10 --
About "Client IP (cdniip) claim", I really wonder whether this could be used in real life as some IPv4 Carrier-Grade NAT (CGN) have a large pool of "public" IPv4 addresses that could select different public IPv4 addresses if badly designed. How will it work with dual-stack UAs where some connections could be over IPv4 and some over IPv6 ? Now to mention a dual-home (Wi-Fi & mobile data) UA ? Or what if the dCDN is between the UA and the CGN (assuming that the uCDN or CSP are upstream of the CGN) ?

Also, "If the received signed JWT contains a Client IP claim" uses singular rather than "one or several"

I also noted that Section 7 (security considerations) puts some restrictions on the usefulness of cdniip.

I would welcome some applicability statements on the use of cdniip.
2022-01-03
24 Éric Vyncke [Ballot Position Update] Position for Éric Vyncke has been changed to Abstain from Discuss
2022-01-03
24 Lars Eggert
[Ballot comment]
Thanks to Christer Holmberg for their General Area Review Team (Gen-ART) review
(https://mailarchive.ietf.org/arch/msg/gen-art/ppG3onLlgjXu_hULqu3LVQPq0iY).

-------------------------------------------------------------------------------
All comments below are about very minor …
[Ballot comment]
Thanks to Christer Holmberg for their General Area Review Team (Gen-ART) review
(https://mailarchive.ietf.org/arch/msg/gen-art/ppG3onLlgjXu_hULqu3LVQPq0iY).

-------------------------------------------------------------------------------
All comments below are about very minor potential issues that you may choose to
address in some way - or ignore - as you see fit. Some were flagged by
automated tools (via https://github.com/larseggert/ietf-reviewtool), so there
will likely be some false positives. There is no need to let me know what you
did with these suggestions.

Section 1.2. , paragraph 3, nit:
> e way in the initial steps #1 and #2 but the later steps involve multiple CD
>                                    ^^^^
Use a comma before "but" if it connects two independent clauses (unless they
are closely connected and short).

Section 2. , paragraph 2, nit:
> gistry claim name is specified in parenthesis below) are used to enforce the
>                                ^^^^^^^^^^^^^^
Did you mean "in parentheses"? "parenthesis" is the singular.

Section 2.1. , paragraph 6, nit:
>  If the received signed JWT contains a Expiry Time claim, then any JWT subse
>                                      ^
Use "an" instead of "a" if the following word starts with a vowel sound, e.g.
"an article", "an hour".

Section 2.1.7. , paragraph 2, nit:
> rejected if sourced from a client outside of the specified IP range. Since th
>                                  ^^^^^^^^^^
This phrase is redundant. Consider using "outside".

Section 2.1.8. , paragraph 2, nit:
> , and mobile clients switching from WiFi to Cellular networks where the clie
>                                    ^^^^
Did you mean "Wi-Fi"? (This is the officially approved term by the Wi-Fi
Alliance.).

Section 2.1.15. , paragraph 4, nit:
> ed URIs would require to be valid for a at least 30 minutes, thereby reducing
>                                      ^
Use "an" instead of "a" if the following word starts with a vowel sound, e.g.
"an article", "an hour".

Section 2.1.15.2. , paragraph 6, nit:
> s generated, the model is not broken and the User Agent can successfully ret
>                                    ^^^^
Use a comma before "and" if it connects two independent clauses (unless they
are closely connected and short).

Section 3.3. , paragraph 2, nit:
> orm verification, regardless of whether or not the URI is signed. Type: Bool
>                                ^^^^^^^^^^^^^^
Consider shortening this phrase to just "whether". It is correct though if you
mean "regardless of whether".

These URLs in the document can probably be converted to HTTPS:
* http://www.iso.org/standard/65274.html
* http://www.iana.org/assignments/jwt
* http://pubs.opengroup.org/onlinepubs/9699919799/
2022-01-03
24 Lars Eggert [Ballot Position Update] New position, No Objection, has been recorded for Lars Eggert
2021-12-31
24 Phil Sorber New version available: draft-ietf-cdni-uri-signing-24.txt
2021-12-31
24 (System) New version accepted (logged-in submitter: Phil Sorber)
2021-12-31
24 Phil Sorber Uploaded new revision
2021-12-30
23 Phil Sorber New version available: draft-ietf-cdni-uri-signing-23.txt
2021-12-30
23 (System) New version accepted (logged-in submitter: Phil Sorber)
2021-12-30
23 Phil Sorber Uploaded new revision
2021-12-29
22 Erik Kline [Ballot comment]
Thanks for addressing my earlier concern.
2021-12-29
22 Erik Kline [Ballot Position Update] Position for Erik Kline has been changed to No Objection from Discuss
2021-12-09
22 Francesca Palombini Telechat date has been changed to 2022-01-06 from 2021-12-16
2021-12-05
22 Barry Leiba Closed request for Telechat review by ARTART with state 'Overtaken by Events': Document has finished IESG processing
2021-12-05
22 Barry Leiba Assignment of request for Telechat review by ARTART to Darrel Miller was marked no-response
2021-11-29
22 Francesca Palombini Telechat date has been changed to 2021-12-16 from 2021-12-02
2021-11-15
22 Éric Vyncke
[Ballot discuss]
Thank you for the work put into this document.

Thank you for fixing all my previous COMMENTs in the -22 revision.

I am …
[Ballot discuss]
Thank you for the work put into this document.

Thank you for fixing all my previous COMMENTs in the -22 revision.

I am afraid that I need to keep my DISCUSS about the cdniip even with the addition of a paragraph at the end of section 2.1.10... This paragraph ressembles to an application statement but it it really light. Why did the authors select not to use RFC 8174 normative language “NOT RECOMMENDED” ?

The section 7 (security considerations) is still very light on the IP address sharing.

-éric

== DISCUSS ==

-- Section 2.1.10 --
About "Client IP (cdniip) claim", I really wonder whether this could be used in real life as some IPv4 Carrier-Grade NAT (CGN) have a large pool of "public" IPv4 addresses that could select different public IPv4 addresses if badly designed. How will it work with dual-stack UAs where some connections could be over IPv4 and some over IPv6 ? Now to mention a dual-home (Wi-Fi & mobile data) UA ? Or what if the dCDN is between the UA and the CGN (assuming that the uCDN or CSP are upstream of the CGN) ?

Also, "If the received signed JWT contains a Client IP claim" uses singular rather than "one or several"

I also noted that Section 7 (security considerations) puts some restrictions on the usefulness of cdniip.

I would welcome some applicability statements on the use of cdniip.
2021-11-15
22 Éric Vyncke Ballot comment and discuss text updated for Éric Vyncke
2021-10-26
22 Barry Leiba Request for Telechat review by ARTART is assigned to Darrel Miller
2021-10-26
22 Barry Leiba Request for Telechat review by ARTART is assigned to Darrel Miller
2021-10-26
22 Francesca Palombini Telechat date has been changed to 2021-12-02 from 2021-02-25
2021-10-25
22 (System) Removed all action holders (IESG state changed)
2021-10-25
22 (System) Sub state has been changed to AD Followup from Revised ID Needed
2021-10-25
22 (System) IANA Review state changed to Version Changed - Review Needed from IANA OK - Actions Needed
2021-10-25
22 Phil Sorber New version available: draft-ietf-cdni-uri-signing-22.txt
2021-10-25
22 (System) New version approved
2021-10-25
22 (System) Request for posting confirmation emailed to previous authors: Kent Leung , Phil Sorber , Ray van Brandenburg , cdni-chairs@ietf.org
2021-10-25
22 Phil Sorber Uploaded new revision
2021-03-31
21 Francesca Palombini Changed action holders to Kent Leung, Ray van Brandenburg, Phil Sorber (Removed Barry as he stepped down as Responsible AD.)
2021-03-31
21 Francesca Palombini
[Ballot comment]
Thank you for the work on this document.

One more comment to add to those of my fellow ADs: please align the claim …
[Ballot comment]
Thank you for the work on this document.

One more comment to add to those of my fellow ADs: please align the claim description and the section name for the Client IP (cdniip) claim (description in IANA section 6.6.1 is "CDNI IP Address").

Francesca
2021-03-31
21 Francesca Palombini [Ballot Position Update] New position, Yes, has been recorded for Francesca Palombini
2021-03-10
21 Cindy Morgan Shepherding AD changed to Francesca Palombini
2021-03-04
21 Sabrina Tanamal IANA Experts State changed to Expert Reviews OK from Reviews assigned
2021-03-04
21 Sabrina Tanamal IANA Review state changed to IANA OK - Actions Needed from IANA - Not OK
2021-02-25
21 (System) Changed action holders to Barry Leiba, Kent Leung, Ray van Brandenburg, Phil Sorber (IESG state changed)
2021-02-25
21 Cindy Morgan IESG state changed to IESG Evaluation::Revised I-D Needed from IESG Evaluation
2021-02-25
21 Robert Wilton [Ballot Position Update] New position, No Objection, has been recorded for Robert Wilton
2021-02-24
21 Murray Kucherawy
[Ballot comment]
The IANA Considerations section creates two registries under Specification Required rules.  RFC 8126 recommends that the defining document include advice to the designated …
[Ballot comment]
The IANA Considerations section creates two registries under Specification Required rules.  RFC 8126 recommends that the defining document include advice to the designated experts (thank you for volunteering, by the way) about how to evaluate new submissions, but none are included here.  Are any appropriate?

This seems to be my pet peeve this week, but I'm wondering about most of the SHOULDs in this document.  Why aren't they MUSTs?  Or in the alternative, could we include some guidance about when an implementer might legitimately choose to deviate from what the SHOULD says to do?

I support Roman's DISCUSS position about Section 1.3.
2021-02-24
21 Murray Kucherawy [Ballot Position Update] New position, No Objection, has been recorded for Murray Kucherawy
2021-02-24
21 Benjamin Kaduk
[Ballot discuss]
I support Éric's and Erik's and Roman's Discusses.

We've had similar issues with embedding client IP addresses in security
tokens all over the …
[Ballot discuss]
I support Éric's and Erik's and Roman's Discusses.

We've had similar issues with embedding client IP addresses in security
tokens all over the place, e.g., in Kerberos tickets, where it provided
negligible security benefit and frequently caused (hard to diagnose!)
breakage.
I further note based on some of the responses so far that (as I
understand it) the issues of multiple client IPs is quite realistic just
for making requests to the CSP vs the uCDN, and no amount of
time-locality can save us.
I expect that the IESG will have some in-person discussion of this topic
and what we are willing to put in an IETF-stream RFC.  (My own personal
opinion is that we have a fair amount of leeway to document "some people
are doing this thing" accompanied by explanations of the flaws in that
practice, but that we have very limited scope to recommend bad
practices.)

I think we should also discuss the proposed technique of redistributing
shared secrets used to generate MACs for signed JWTs.  I see a minimal
acknowledgment that there is potential cause concern in the penultimate
paragraph of the security considerations that "it is important to know
the implications of a compromised shared key", but in my mind the text
there does not really call out the severity of those implications.  I
would have expected something like "redistributing the shared key in
this manner allows the dCDNs to impersonate the CSP to the uCDN and
produce arbitrary signed URLs that are accepted by the uCDN as
authentic".  Well, what I *actually* would have expected was to just not
define this mechanism at all, as it is too risky to use a group-shared
symmetric key in a group where participants are at different trust
levels.  But perhaps the WG can produce some explanation of why this is
acceptable...

I also have concerns about our guidance to leave the JWT "jti" unchanged
when re-signing with different contents, e.g., changing Issuer and/or
Audience, etc..  We don't seem to mention one way or another whether
"jti" needs to be preserved while performing Signed Token Renewal, but
changing the "exp" while preserving "jti" seems like it would be
problematic as well.  The guidance in RFC 7519 is somewhat vague
(basically, that it needs to change if it identifies a "different data
object"), so we may want to consult the broader OAuth WG (not
necessarily just the IANA DE) for further interpretation.  I can also
add based on the responses so far that the "jti" is not solely to be
used to prevent replay, and so I am skeptical of reasoning based on such
an argument.

The combined defaults for the CDNI Metadata Interface for URI Signing
seem to be an unsafe combination.  Specifically, the default behavior
for the "issuers" property is to allow any Issuer, and the default for
the "jwt-header" property is to take the header from the JWT in band.
As far as I can tell, this means that the dCDN will just blindly accept
anything that is formatted as a JWT and signed by any key nown to the
dCDN.  The authentication and authorization properties of such behavior
are so poor so as to effectively be useless, absent some level of care
surrounding key management to isolate keys to given URIs.  In fact, the
lack of substantive discussion of key
management and requirements thereof seems Discuss-worthy in its own
right.  We need to say something about obtaining a key along with a
trust path to what it's authorized to be used for, even if the specific
protocol mechanism for doing so is left out of scope.
2021-02-24
21 Benjamin Kaduk
[Ballot comment]
Balloting late in the week I have the benefit of seeing the comments of
the other ADs.  I've tried to suppress duplicates but …
[Ballot comment]
Balloting late in the week I have the benefit of seeing the comments of
the other ADs.  I've tried to suppress duplicates but no doubt have
missed a few; sorry for the extra work and feel free to just reference
some other discussions instead of repeating their contents.

Please don't refer to the "jti" claim as a "Nonce".  There is a separate
registered "nonce" JWT claim that plays a different role, and mixing up
the terminology is confusing, even if the JWT ID value can be used as a
nonce in some circumstances (but not all).

Please reference (and act on, if/as appropriate) the JWT BCP (RFC 8725).

Section 1

  Specifically, the CDNI Framework [RFC7336] states:

      The CSP may also trust the CDN operator to perform actions such as
      delegating traffic to additional downstream CDNs, and to enforce
      per-request authorization performed by the CSP using techniques
      such as URI Signing.

  In particular, the following requirement is listed in the CDNI
  Requirements [RFC7337]:

(editorial) It reads a bit oddly to have both a "specifically" and an
"in particular"; the second line might be reframed as more of an
"additionally" or "also" type remark.

Section 1.2

  A CSP and CDN are assumed to have a trust relationship that enables
  the CSP to authorize access to a content item by including a set of
  claims in the form of a signed JWT in the URI before redirecting a UA
  to the CDN.  [...]

nit/editorial: the trust relationship is what enables the authorization
of access, but using claims in a signed JWT to effectuate that is more
of an implementation agreement that builds on the trust relationship
than an aspect of the trust relationship itself.  So this could be
"enables the CSP to authorize access to a content item, which is
realized in practice by including a set of claims in a signed JWT", or
similar.

Section 1.3

                      In step #3, the UA may send an HTTP request or a
  DNS request.  Depending on whether HTTP-based or DNS-based request
  routing is used.  [...]

nit: sentence fragment.

                                        Regardless of the type of keys
  used, the verifying entity has to obtain the key (either the public
  or the symmetric key).  [...]

Not just obtain the key, but obtain it in a manner that allows trust to
be placed in the assertions made using that key.

Section 2

  o  URI Signing Package (URISigningPackage): The URI attribute that
      encapsulates all the URI Signing claims in a signed JWT encoded
      format.  This attribute is exposed in the Signed URI as a path-
      style parameter or a form-style parameter.

Is there a good reference for "URI attribute"?  It sounds like should be
a technical term but I couldn't find a clear definition.

  The URI Signing Package will be found by parsing any path-style
  parameters and form-style parameters looking for a key name matching
  the URI Signing Package Attribute.  Both parameter styles MUST be
  supported to allow flexibility of operation.  The first matching
  parameter SHOULD be taken to provide the signed JWT, though providing
  more than one matching key is undefined behavior.

Shouldn't the metadata specify which parameter style is going to be
used?  (Perhaps two, rather than one, new values for cdnistt?)

Section 2.1

  The following claims (where the "JSON Web Token Claims" registry
  claim name is specified in parenthesis below) are used to enforce the
  distribution policies.  All of the listed claims are mandatory to
  implement in a URI Signing implementation, but are not mandatory to
  use in a given signed JWT.  (The "optional" and "mandatory"
  identifiers in square brackets refer to whether or not a given claim
  MUST be present in a URI Signing JWT.)

The final parenthetical suggests that the previous sentence should read
"not necessarily mandatory to use" (since apparently some of them *are*
mandatory to use).  Though I do see this was noted by Roman as well.  I
would be interested to hear why cdniuc is not mandatory (see below)...

  Note: The time on the entities that generate and verify the signed
  URI SHOULD be in sync.  In the CDNI case, this means that CSP, uCDN,
  and dCDN servers need to be time-synchronized.  It is RECOMMENDED to
  use NTP [RFC5905] for time synchronization.

It's surprising that this is only a SHOULD-level requirement for time
synchronization, given the scope of issues that can result if time is
not synchronized.  When would it be okay to ignore the SHOULD?

Also, separately, I note that RFC 8915 presents Network Time Security
for NTP, which might be a helpful reference (and, arguably, worth
recommending in its own right).

Section 2.1.x

In general, my stance is that it's redundant to say that "the semantics
in Section X of RFC 7519 MUST be followed", because that's inherent in
the definition of the JWT claim.  But you're free to write the text as
you wish.

Section 2.1.1

  Issuer (iss) [optional] - The semantics in [RFC7519] Section 4.1.1
  MUST be followed.  This claim MAY be used to verify authorization of
  the issuer of a signed JWT and also MAY be used to confirm that the
  indicated key was provided by said issuer.  If the CDN verifying the

What is meant by "to verify authorization of the issuer of a signed
JWT"?  In some sense, the "iss" claim is meaningless unless the JWT
signature is validated as having been generated by a trusted key
associated that belongs to the "iss" identity (or the JWT was received
on a trusted channel, which of course does not apply here since it's via
the UA).  (Also note that the JWT BCP (RFC 8725) has some things to say
about when to use "iss" and how that relates to whether a given key is
used in more than one context...)

  signed JWT does not support Issuer verification, or if the Issuer in

I think this is intended to be "If an Issuer claim is present and the
CDN verifying the signed JWT [...]".

  the signed JWT does not match the list of known acceptable Issuers,
  the CDN MUST reject the request.  [...]

I think this list also needs to include "if the Issuer claim does not
match the key used to sign the JWT".

Section 2.1.2

  Subject (sub) [optional] - The semantics in [RFC7519] Section 4.1.2
  MUST be followed.  If this claim is used, it MUST be a JSON Web
  Encryption (JWE [RFC7516]) Object in compact serialization form,
  because it contains personally identifiable information.  This claim

While I am happy to see that the subject information is recognized as
PII and required to be protected, it seems that this formulation is
over-constrained.  Why does the Subject specifically need to be
compact-serialization-form JWE, as opposed to some other encrypted form
(that cannot be correlated to other instances of the same encrypted
Subject?  Why does just using a signed-and-encrypted JWT for the
containing JWT not suffice?

  contains information about the subject (for example, a user or an
  agent) that MAY be used to verify the signed JWT.  If the received
  signed JWT contains a Subject claim, then any JWT subsequently
  generated for CDNI redirection MUST also contain a Subject claim, and
  the Subject value MUST be the same as in the received signed JWT.  [...]

Strict value equivalence seems problematic (given that we mandate
compact-form JWE), since there is a key (re)distribution problem for
making the information usable to any dCDN that is involved.  If it's
encrypted using a symmetric key, then the uCDN sharing it to the dCDN
introduces the same issue as for "signed" JWTs -- the dCDN can
impersonate the CSP; if it's using an asymmetric key then the set of
recipients is fixed at JWE creation (by the CSP) and we either lose the
ability to seamlessly add CDN tiers or have to redistribute the private
key (which is against best practices), in order to meet the "byte for
byte the same value" requirement.  What motivates the prohibition of
re-encrypting for the next level of hierarchy?

Section 2.1.3

  Audience (aud) [optional] - The semantics in [RFC7519] Section 4.1.3
  MUST be followed.  This claim is used to ensure that the CDN verifing
  the JWT is an intended recipient of the request.  The claim should
  contain an identity on behalf of whom the CDN can verify the token
  (e.g., the CSP or any uCDN in the chain).  A dCDN MAY modify the
  claim as long it can generate a valid signature.

While RFC 7519 does say that "[t]he processing of this claim is
generally application specific", the description here doesn't seem to
make a whole lot of sense.  It's supposed to be used by the entity
receiving the JWT, which is never going to be the CSP (which generates
the JWT).  My intuition is that typically the CSP would issue a JWT with
Audience of the uCDN (or some meta-Audience for the combination of uCDN
and dCDN), and then either the uCDN would re-sign with the dCDN as the
Audience or the dCDN would be configured to recognize the Audience used
by the CSP as being valid for itself.

Also, "the Audience used by the CSP" is perhaps ambiguous as to whether
that's the one inserted by the CSP or recognized by the CSP as being
itself.  So maybe "recognize the Audience inserted in the JWT by the
CSP"?

Section 2.1.4

  Expiry Time (exp) [optional] - The semantics in [RFC7519]
  Section 4.1.4 MUST be followed, though URI Signing implementations
  MUST NOT allow for any time synchronization "leeway".  If the CDN

Why do we have "MUST NOT allow for any [leeway]" when it's only
RECOMMENDED to have synchronized time?

  verifying the signed JWT does not support Expiry Time verification,

As above, I think this is meant to be "If the Expiry Time claim is
present and the CDN verifying [...]".

  or if the Expiry Time in the signed JWT corresponds to a time equal
  to or earlier than the time of the content request, the CDN MUST
  reject the request.  [...]

Section 2.1.5

[conceptually same comments as for §2.1.4, adjusted for the "nbf" claim]

Section 2.1.6

  Issued At (iat) [optional] - The semantics in [RFC7519] Section 4.1.6
  MUST be followed.  If the received signed JWT contains an Issued At
  claim, then any JWT subsequently generated for CDNI redirection MUST
  also contain an Issued At claim, and the Issuer value MUST be updated

nit: s/Issuer value/Issued At value/

Section 2.1.7

            If the signed JWT contains a Nonce claim and the CDN
  verifying the signed JWT either does not support Nonce storage or has
  previously seen the Nonce used in a request for the same content,
  then the CDN MUST reject the request.  [...]

As above, this seems predicated on the "jti" claim being present in a
received token.

Section 2.1.9

It might be worth asking the OAuth WG if there's seen to be value in
having a generic "crit" claim that protocols can require comprehension
of, to hold a list of claims that are critical for that token in that
protocol.

                              If any of the listed extension claims are
  not understood and supported by the recipient, then the Signed JWT is
  invalid.  [...]

(editorial) In the other sections we seem to use language about "MUST
reject the request" or "MUST reject the JWT" rather than just saying
that the JWT "is invalid"

Section 2.1.10

[same comments about encryption as for Subject]

Section 2.1.11

Why is the CDNI URI Container claim optional?  It seems like the URI
Signing cannot be fit for purpose if the URI being signed is not
contained in the token...

Section 2.1.12

Can we give any guidance on what kind of values might make sense for the
CDNI Expiration Time Setting field and still providing some reasonable
security properties?  (Conversely, what kind of values are so large so
as to be nonsensical?)

Section 2.1.14

The first two paragraphs seem to talk about this claim as being a
direction to the client of when to send such a token along with a
request, but the third paragraph seems to talk about it as being a
direction to the CDN for generating new tokens as part of Signed Token
Renewal.  This leaves me confused about what the intended usage actually
is.

Section 2.1.15

  The URI Container (cdniuc) claim takes one of the following forms:
  'hash:' or 'regex:'.  More forms may be added in the future to extend
  the capabilities.

How will a JWT producer know whether a JWT consumer knows about any such
extended functionality?

Section 2.1.15.2

  An example of a 'regex:' is the following:

  [^:]*\\://[^/]*/folder/content/quality_[^/]*/segment.{3}\\.mp4(\\?.*)?

It seems a bit surprising to just do a wildcard match on scheme and
assume that the path components will be meaningful for that scheme.
Perhaps a variation that used branches to match only http or https
schemes would be preferred?

Section 3.2

  this document.  However, in order to also support legacy UAs that do
  not include any specific provisions for the handling of signed JWTs,
  Section 3.3 defines a mechanism using HTTP Cookies [RFC6265] that
  allows such UAs to support the concept of renewing signed JWTs
  without requiring any additional UA support.

(editorial) the way this sentence is written suggests that the §3.3
cookie-based mechanism is distinct from the mechanism described here
(most notably due to the use of the word "also"), but it looks like the
mechanism described here also uses cookies.  Are the two actually
distinct?

Section 3.2.1

(editorial) typically we don't use second-person language ("you") in RFC
style.

Section 3.3.1

  In such scenarios, Signed Token Renewal of a signed JWT SHOULD be
  communicated via the query string instead, in a similar fashion to
  how regular signed JWTs (outside of Signed Token Renewal) are
  communicated.  Note that the use of URL embedded signed JWTs SHOULD
  NOT be used in HTTP 2xx Successful messages, since UAs might not know
  how to extract the signed JWTs.

I don't think I understand how (in the last sentence) a URL embedded
signed JWT would be used in an HTTP 2xx response, since the response
would just be normal application content and there's not a particularly
well-defined place to put a URL with embedded JWT.

Section 4

  necessary to allow the dCDN to verify a Signed URI.  Events that
  pertain to URI Signing (e.g., request denial or delivery after access
  authorization) need to be included in the logs communicated through
  the CDNI Logging interface.

(editorial) I don't think I understand what is meant by "e.g., request
denial or delivery after access authorization".  I'm not even 100% sure
if I'm supposed to group thing as "(request denial or delivery) (after
access authorization)" or "(request denial) or (delivery after access
authorization)".  My initial thought was the latter, but "delivery after
access authorization" really doesn't make much sense to me; my current
thinking is that it's the former and that s/after access
authorization/after an access authorization decision has been made/
would clarify.

Section 4.4

      Property: issuers

        Description: A list of valid Issuers against which the Issuer
        claim in the signed JWT may be verified.

Issuers should always be tied to keys that they control.  Leaving keys
and issuer identities to be managed separately invites identity
misbinding attacks.

      Property: package-attribute

        Description: The name to use for the URI Signing Package.

(nit?) Should this be "The attribute name to use"?

      Property: jwt-header

        Description: The header part of JWT that is used for generating
        or verifying a signed JWT when the JWT token in the URI Signing
        Package does not contain a header part.

(editorial) IIUC this metadata interface is for the uCDN to provide
information to the dCDN that the dCDN will use for processing requests
(i.e., in this case, for verifying JWTs).  In that context, I don't see
how it's useful to say that this is the header part of the JWT "that is
used for generating", since the dCDN only needs to verify these JWTs.
If the dCDN is issuing its own JWTs when acting as an uCDN in a
hierarchy, it can list its own jwt-header in its own published metadata.

  The following is an example of a URI Signing metadata payload with
  explicit values:

  {
    "generic-metadata-type": "MI.UriSigning"
    "generic-metadata-value":
      {
        "enforce": true,
        "issuers": ["csp", "ucdn1", "ucdn2"],

It might be more helpful to use the URI form of the Issuer names, since
in this generic RFC we do not have any deployment-specific context that
would allow the use of a short string issuer identifier.

Section 5

  URI Signing supports both HTTP-based and DNS-based request routing.
  JSON Web Token (JWT) [RFC7519] defines a compact, URL-safe means of
  representing claims to be transferred between two parties.  The
  claims in a signed JWT are encoded as a JSON object that is used as
  the payload of a JSON Web Signature (JWS) structure or as the
  plaintext of a JSON Web Encryption (JWE) structure, enabling the
  claims to be digitally signed or integrity protected with a Message
  Authentication Code (MAC) and/or encrypted.

AFAICT this is the only place in the document where we refer to a
possibility of using JWE over the entire JWT (as opposed to just the
Subject or IP address claim bodies).  Yes, this is in some sense a
generic statement about JWT and not necessarily attempting to apply to
the URI Signing usage of JWT, but it still seems out of place.  I would
have expected that we just stick to talking about JWS (or, I suppose,
that JWE was mentioned consistently throughout, but it doesn't seem to
be a great fit for this application anyway).

Section 5.1

  2.  CSP provides to the uCDN the information needed to verify signed
        JWTs from that CSP.  For example, this information may include a
        key value.

When would it not include a key value?

  3.  Using the CDNI Metadata interface, the uCDN communicates to a
        dCDN the information needed to verify signed JWTs from the uCDN
        for the given CSP.  For example, this information may include
        the URI query string parameter name for the URI Signing Package
        Attribute.

It would also include key material if the uCDN is re-signing, right?
So either we should mention key material here or change (9) to not
mention "computes".

  4.  When a UA requests a piece of protected content from the CSP,
        the CSP makes a specific authorization decision for this unique
        request based on its personal distribution policy.

(nit) I'd suggest s/personal/local/, since the CSP is typically not a
person.

Section 5.2

  2.  CSP provides to the uCDN the information needed to verify
        cryptographic signatures from that CSP.  For example, this
        information may include a key.

As above, when would this not include a key value?

  4.  When a UA requests a piece of protected content from the CSP,
        the CSP makes a specific authorization decision for this unique
        request based on its arbitrary distribution policy.

We should use a consistent term between the previous section and here (I
still prefer "local" but the actual word doesn't matter very much).
In general, I'd recomment harmonizing the phrasing between the two
sections; there are several differences that appear when I run a diff,
including "Signed URI" vs "cryptographic signature" or "signed JWTs" vs
"cryptographic signatures".

  12.  If the verification is negative, the dCDN rejects the request
        and sends an error code 403 Forbidden in the HTTP response.

  13.  If the verification is positive, the dCDN serves the request and
        delivers the content.

(nit) I'd suggest "verification result" both here and above.

Section 6.4

  is a 3DIGIT value as defined in Section 4.5.  Additions to the CDNI
  URI Signing Verification Code namespace will conform to the
  "Specification Required" policy as defined in [RFC8126].  Updates to
  this subregistry are expected to be sparse.

(nit) one might interpret "sparse" either as meaning a long time between
allocations or that the numerical values assigned will not be contiguous
ranges, which might be worth clarifying.
(This holds for both the new registries, I think.)

  | 406  | RFCthis  | Signed JWT verification performed and        |
  |      |          | rejected because of Issued At enforcement    |

It's not clear to me what kind of Issued At enforcement might lead to
rejection -- there is no mention of rejection made in §2.1.6, for
example.


Should there be a code for "only one of cdnistt and cdniets present"?

Section 7

                              Whenever the dCDN receives a request with
      a given unique ID, it adds that ID to the list of 'used' IDs.  In
      the case an illegitimate UA tries to use the same URI through a
      replay attack, the dCDN can deny the request based on the already-
      used access ID.

You probably also want to mention expiring out IDs from the list of
'used' IDs when they expire, or this becomes an unbounded state-keeping
requirement...

Section 8

The main body text mentioned both Subject and IP address as having
potential privacy concerns; why do we only mention IP address here?

Section 11.2

https://www.ietf.org/about/groups/iesg/statements/normative-informative-references/
suggests that with NTP being RECOMMENDED, RFC 5905 would be classified
as normative.

Appendix A

The "exp" times are in 2016; if regenerating the examples is automated
using newer dates might be nice (but the risk of getting into an
inconsistent state if redoing them by hand is too big to merit changing
the dates in that case, IMO).

Appendix A.3

  Once the server verifies the signed JWT it will return a new signed
  JWT with an updated expiry time (exp) as shown below.  Note the
  expiry time is increased by the expiration time setting (cdniets)
  value.

This example is adding the "cdniets" value to the previous "exp" value,
but the specification for this claim says that it is added to the "time
at which the JWT is verified", which is unlikely to be exactly the
previous "exp" value.  I suggest adding a few words about this and using
a different (earlier) "exp" in the re-signing example.
2021-02-24
21 Benjamin Kaduk [Ballot Position Update] New position, Discuss, has been recorded for Benjamin Kaduk
2021-02-24
21 Erik Kline
[Ballot discuss]
Apologies for piling on, but I want to second Eric Vyncke's Discuss.  The
use of Client IP addresses is more problematic than one …
[Ballot discuss]
Apologies for piling on, but I want to second Eric Vyncke's Discuss.  The
use of Client IP addresses is more problematic than one might suspect from
a reading of this document.

RFC 8305 Happy Eyeballs means for a dualstack client and a dualstack CSP or
CDN there are no guarantees that the address family will be the same.

Furthermore, a client using RFC 8981 (4941bis) IPv6 temporary addresses might
change source address (even with every request) so an exact match would not be
recommended.

To make matters even more complicated, a mobile client might make the CSP
request on Wi-Fi, walk out of range, and complete a subsequent CDN request
via its mobile provider network (or vice versa).  So, even using a fairly
short CIDR length for truncation may not work since the origin network can be
completely different between requests.

The latter behaviour can also be trigger by connection migration transports,
like MPTCP and (soon) QUIC.

I think one solution might include relaxing all the MUSTs in section 2.1.10.
Instead, perhaps some text that clarifies the presence of reliability issues
with Client IPs and recommends that CDNs be develop a more sophisticated
policy (or avoid using this altogether and prefer to use other claims).
Including the Client IP for logging purposes might be helpful, but being too
strict about verifying it can lead to client-visible failures.

Alternatively, UAs need to be augmented to know that when a cdniip is part
of the claim that it must try to keep the source IP address the same for
subsequent requests, recognizing, as section 7 does, that NAT can make this
impossible.  I'm not sure this is a workable option, though.
2021-02-24
21 Erik Kline [Ballot Position Update] New position, Discuss, has been recorded for Erik Kline
2021-02-24
21 Deborah Brungard [Ballot Position Update] New position, No Objection, has been recorded for Deborah Brungard
2021-02-24
21 Martin Vigoureux [Ballot Position Update] New position, No Objection, has been recorded for Martin Vigoureux
2021-02-23
21 Roman Danyliw
[Ballot discuss]
** Section 1.3.  Per “Note that the signed Redirection URI MUST maintain the same (or higher) level of security as the original Signed …
[Ballot discuss]
** Section 1.3.  Per “Note that the signed Redirection URI MUST maintain the same (or higher) level of security as the original Signed URI.”:

-- How is this equivalence assessed?

-- Can one create an architecture to that cascades a mix of uCDNs whose path will mix both asymmetric and symmetric keys?  Assuming that’s possible what’s “same or higher” here?

** Section 2.1.7.  The specified use of the jti claim in the URI signing workflow appears to conflict with the underlying definition of this claim in RFC7519.

(a) Section 1.3. says “… the CSP needs to allow the uCDN to redistribute shared keys to a subset of their dCDNs.”

(b) Section 2.1.7 says “If the received signed JWT contains a Nonce claim, then any JWT subsequently generated for CDNI redirection MUST also contain a Nonce claim, and the Nonce value MUST be the same as in the received signed JWT.”

(c.1) Section 4.1.7 of RFC7519 says “The identifier value MUST be assigned in a manner that ensures that there is a negligible probability that the same value will be accidentally assigned to a different data object …

(c.2) Section 4.1.7 of RFC7519 also says “… if the application uses multiple issuers, collisions MUST be prevented among values produced by different issuers as well.”

The constraints in (b) suggests that the Nonce claim value needs to be the same across every logical hop in the cascading CDN path.  My understanding of the architecture is that some of the claims in the JWTs such as the cdniuc or cdnistd claims might changes when there are cascading CDNs.  If they change, this seems like that would constitute a different “data object” who have the same unique (jti claim) identifier which would violate (c.1).  One could argue that perhaps the CDNs are at arm-length so they aren’t really an “application us[ing] multiple issuers”, however, the architectural construct of shared keys suggested by (a) seems to imply otherwise which would suggest that this violated (c.2).  If I’ve misunderstood the architecture let me know.

The notion of keeping the nonce the same seems like the right design, its just the reuse of this particular claim seems mismatched.
2021-02-23
21 Roman Danyliw
[Ballot comment]
I support Éric Vyncke DISCUSS position.

** Section 2.1.  Per “(The "optional" and "mandatory" identifiers in square brackets refer to whether or not …
[Ballot comment]
I support Éric Vyncke DISCUSS position.

** Section 2.1.  Per “(The "optional" and "mandatory" identifiers in square brackets refer to whether or not a given claim MUST be present in a URI Signing JWT.)”, this guidance is clear, but I don’t see any “[mandatory]” claims.

** Section 2.3.  Is there any specific guidance on how to construct this identity in an interoperable way for CDNI?  In OAuth, the answer was largely no.

** Section 2.1.7.  Given the CDNI use case and expected lifetime of the JWTs, are there any recommendations on nonce size?

** Section 2.2.  Per “The header value must be transmitted …”, should this be a normative MUST?

** Section 3.3.1.  Per the text around supporting cross-domain redirection of signed token renewal, the guidance is that “[i]n such scenarios, Signed Token Renewal of a signed JWT SHOULD be communicated via the query string instead …” and not via the 'URISigningPackage' cookie as specified in Section 3.3.  Since Section 3.2.1 noted that cdnistt MUST be included, what value should be set for a JWT passed in the query string?

** Section 5.2.  Per “This raises a security concern for applicability of URI Signing with symmetric keys in case of DNS-based inter-CDN request routing”, this caution seems appropriate.  Is there is a reason that stronger normative language such as “this architecture is NOT RECOMMENDED” is not used?  It seems like this should also be reiterated in the security considerations sections.

** Section 7.  Per “One way to reduce exposure to this kind of attack is to not only check for Client IP but also for other attributes, e.g., attributes that can be found in HTTP headers”, can you say more on how this fingerprinting should be operationalized?  Knowing the application in question, couldn’t the  illegitimate clients also reproduce these headers?

** Nits
-- Section 2.1.3.  Typo. s/verifing/verifying/

-- Section 2.1.15.  Typo. s/definined/defined/

-- Section 3.2.1. Editorial.  The voice in this section changed to “you may …” as a opposite to a third person used elsewhere.

-- Section 4.3.  Typo. s/has has/has/

-- Section 6.4.  Typo. s/Extention/Extension/
2021-02-23
21 Roman Danyliw [Ballot Position Update] New position, Discuss, has been recorded for Roman Danyliw
2021-02-23
21 Éric Vyncke
[Ballot discuss]
Thank you for the work put into this document.

Special thanks for the doc shepherd write-up , which was really useful about the …
[Ballot discuss]
Thank you for the work put into this document.

Special thanks for the doc shepherd write-up , which was really useful about the WG history.

Please find below one blocking DISCUSS points (which should be solved easily), one non-blocking COMMENT point (but replies would be appreciated), and some nits.

I hope that this helps to improve the document,

Regards,

-éric

== DISCUSS ==

-- Section 2.1.10 --
About "Client IP (cdniip) claim", I really wonder whether this could be used in real life as some IPv4 Carrier-Grade NAT (CGN) have a large pool of "public" IPv4 addresses that could select different public IPv4 addresses if badly designed. How will it work with dual-stack UAs where some connections could be over IPv4 and some over IPv6 ? Now to mention a dual-home (Wi-Fi & mobile data) UA ? Or what if the dCDN is between the UA and the CGN (assuming that the uCDN or CSP are upstream of the CGN) ?

Also, "If the received signed JWT contains a Client IP claim" uses singular rather than "one or several"

I also noted that Section 7 (security considerations) puts some restrictions on the usefulness of cdniip.

I would welcome some applicability statements on the use of cdniip.
2021-02-23
21 Éric Vyncke
[Ballot comment]
== COMMENTS ==

-- Section 1.3 --
To be honest, I fail to understand the meaning (hence the value) of figure 3.


== …
[Ballot comment]
== COMMENTS ==

-- Section 1.3 --
To be honest, I fail to understand the meaning (hence the value) of figure 3.


== NITS ==

I am afraid that the email address kleung@cisco.com is outdated.

-- Section 1 --
Is CDNI "interconnected CDNs (CDNI)" or "CDN Interconnection (CDNI)" ?
2021-02-23
21 Éric Vyncke [Ballot Position Update] New position, Discuss, has been recorded for Éric Vyncke
2021-02-22
21 Martin Duke [Ballot Position Update] New position, No Objection, has been recorded for Martin Duke
2021-02-22
21 Alvaro Retana [Ballot Position Update] New position, No Objection, has been recorded for Alvaro Retana
2021-02-19
21 Christer Holmberg Request for Last Call review by GENART Completed: Ready. Reviewer: Christer Holmberg. Sent review to list.
2021-02-19
21 Sabrina Tanamal IANA Experts State changed to Reviews assigned
2021-02-19
21 (System) IANA Review state changed to IANA - Not OK from IANA - Review Needed
2021-02-19
21 Sabrina Tanamal
(Via drafts-lastcall@iana.org): IESG/Authors/WG Chairs:

The IANA Functions Operator has completed its review of draft-ietf-cdni-uri-signing-21. If any part of this review is inaccurate, please let …
(Via drafts-lastcall@iana.org): IESG/Authors/WG Chairs:

The IANA Functions Operator has completed its review of draft-ietf-cdni-uri-signing-21. If any part of this review is inaccurate, please let us know.

The IANA Functions Operator has a question about one of the actions requested in the IANA Considerations section of this document.

The IANA Functions Operator understands that, upon approval of this document, there are six actions which we must complete.

First, in the CDNI Payload Types registry on the Content Delivery Network Interconnection (CDNI) Parameters registry page located at:

https://www.iana.org/assignments/cdni-parameters/

a single, new registration will be made as follows:

Payload type: MI.UriSigning
Reference: [ RFC-to-be ]

As this document requests registrations in a or Specification Required (see RFC 8126) registry, we will initiate the required Expert Review via a separate request. This review must be completed before the document's IANA state can be changed to "IANA OK."

Second, in the CDNI Logging record-types registry also on the Content Delivery Network Interconnection (CDNI) Parameters registry page located at:

https://www.iana.org/assignments/cdni-parameters/

a single, new registration will be made as follows:

record-types: cdni_http_request_v2
Description: Extension to CDNI Logging Record version 1 for content delivery using HTTP, to include URI Signing logging fields
Reference: [ RFC-to-be ]

As this also requests registrations in a Specification Required (see RFC 8126) registry, we will initiate the required Expert Review via a separate request. This review must be completed before the document's IANA state can be changed to "IANA OK."

Third, in the CDNI Logging Field Names registry also on the Content Delivery Network Interconnection (CDNI) Parameters registry page located at:

https://www.iana.org/assignments/cdni-parameters/

two, new registrations will be made as follows:

Field Name: s-uri-signing
Reference: [ RFC-to-be ]

Field Name: s-uri-signing-deny-reason
Reference: [ RFC-to-be ]

As this also requests registrations in a Specification Required (see RFC 8126) registry, we will initiate the required Expert Review via a separate request. This review must be completed before the document's IANA state can be changed to "IANA OK."

Fourth, a new registry is to be created called the CDNI URI Signing Verification Code registry. The new registry will be located on the Content Delivery Network Interconnection (CDNI) Parameters registry page located at:

https://www.iana.org/assignments/cdni-parameters/

The new registry will be managed via Specification Required as defined in RFC8126.

There are initial registrations in the new registry as follows:

+-------+-----------------+-----------------------------------------------+
| Value | Reference | Description |
+-------+-----------------+-----------------------------------------------+
| 000 | [ RFC-to-be ] | No signed JWT verification performed |
| 200 | [ RFC-to-be ] | Signed JWT verification performed and |
| | | verified |
| 400 | [ RFC-to-be ] | Signed JWT verification performed and |
| | | rejected because of incorrect signature |
| 401 | [ RFC-to-be ] | Signed JWT verification performed and |
| | | rejected because of Issuer enforcement |
| 402 | [ RFC-to-be ] | Signed JWT verification performed and |
| | | rejected because of Subject enforcement |
| 403 | [ RFC-to-be ] | Signed JWT verification performed and |
| | | rejected because of Audience enforcement |
| 404 | [ RFC-to-be ] | Signed JWT verification performed and |
| | | rejected because of Expiration Time |
| | | enforcement |
| 405 | [ RFC-to-be ] | Signed JWT verification performed and |
| | | rejected because of Not Before enforcement |
| 406 | [ RFC-to-be ] | Signed JWT verification performed and |
| | | rejected because of Issued At enforcement |
| 407 | [ RFC-to-be ] | Signed JWT verification performed and |
| | | rejected because of Nonce enforcement |
| 408 | [ RFC-to-be ] | Signed JWT verification performed and |
| | | rejected because of Version enforcement |
| 409 | [ RFC-to-be ] | Signed JWT verification performed and |
| | | rejected because of Critical Extention |
| | | enforcement |
| 410 | [ RFC-to-be ] | Signed JWT verification performed and |
| | | rejected because of Client IP enforcement |
| 411 | [ RFC-to-be ] | Signed JWT verification performed and |
| | | rejected because of URI Container enforcement |
| 500 | [ RFC-to-be ] | Unable to perform signed JWT verification |
| | | because of malformed URI |
+-------+-----------------+-----------------------------------------------+

Fifth, a new registry is to be created called the CDNI URI Signing Signed Token Transport registry. The new registry will be located on the Content Delivery Network Interconnection (CDNI) Parameters registry page located at:

https://www.iana.org/assignments/cdni-parameters/

The new registry will be managed via Specification Required as defined in RFC8126.

There are initial registrations in the new registry as follows:

+-------+-------------------------------------------+---------------+
| Value | Description | Reference |
+-------+-------------------------------------------+---------------+
| 0 | Designates token transport is not enabled | [ RFC-to-be ] |
| 1 | Designates token transport via cookie | [ RFC-to-be ] |
+-------+-------------------------------------------+---------------+

IANA Question --> What is the maximum value for this new registry?

Sixth, in the JSON Web Token Claims registry on the JSON Web Token (JWT) registry page located at:

https://www.iana.org/assignments/jwt/

seven, new claims are to be registered as follows:

Claim Name: cdniv
Claim Description: CDNI Claim Set Version
Change Controller: IESG
Reference: [ RFC-to-be; Section 2.1.8 ]

Claim Name: cdnicrit
Claim Description: CDNI Critical Claims Set
Change Controller: IESG
Reference: [ RFC-to-be; Section 2.1.9 ]

Claim Name: cdniip
Claim Description: CDNI IP Address
Change Controller: IESG
Reference: [ RFC-to-be; Section 2.1.10 ]

Claim Name: cdniuc
Claim Description: CDNI URI Container
Change Controller: IESG
Reference: [ RFC-to-be; Section 2.1.11 ]

Claim Name: cdniets
Claim Description: CDNI Expiration Time Setting for Signed Token Renewal
Change Controller: IESG
Reference: [ RFC-to-be; Section 2.1.12 ]

Claim Name: cdnistt
Claim Description: CDNI Signed Token Transport Method for Signed Token Renewal
Change Controller: IESG
Reference: [ RFC-to-be; Section 2.1.13 ]

Claim Name: cdnistd
Claim Description: CDNI Signed Token Depth
Change Controller: IESG
Reference: [ RFC-to-be; Section 2.1.14 ]

As this also requests registrations in a Specification Required (see RFC 8126) registry, we will initiate the required Expert Review via a separate request. This review must be completed before the document's IANA state can be changed to "IANA OK."

The IANA Functions Operator understands that these are the only actions required to be completed upon approval of this document.

Note:  The actions requested in this document will not be completed until the document has been approved for publication as an RFC. This message is meant only to confirm the list of actions that will be performed.

Thank you,

Sabrina Tanamal
Senior IANA Services Specialist
2021-02-19
21 Amy Vezza Placed on agenda for telechat - 2021-02-25
2021-02-19
21 Barry Leiba Ballot has been issued
2021-02-19
21 Barry Leiba [Ballot Position Update] New position, Yes, has been recorded for Barry Leiba
2021-02-19
21 Barry Leiba Created "Approve" ballot
2021-02-19
21 Barry Leiba IESG state changed to IESG Evaluation from Waiting for AD Go-Ahead
2021-02-19
21 (System) Changed action holders to Barry Leiba (IESG state changed)
2021-02-19
21 (System) IESG state changed to Waiting for AD Go-Ahead from In Last Call
2021-02-11
21 Jean Mahoney Request for Last Call review by GENART is assigned to Christer Holmberg
2021-02-11
21 Jean Mahoney Request for Last Call review by GENART is assigned to Christer Holmberg
2021-02-11
21 Phil Sorber New version available: draft-ietf-cdni-uri-signing-21.txt
2021-02-11
21 (System) New version accepted (logged-in submitter: Phil Sorber)
2021-02-11
21 Phil Sorber Uploaded new revision
2021-02-09
20 Gunter Van de Velde Request for Last Call review by OPSDIR is assigned to Ron Bonica
2021-02-09
20 Gunter Van de Velde Request for Last Call review by OPSDIR is assigned to Ron Bonica
2021-02-05
20 Amy Vezza IANA Review state changed to IANA - Review Needed
2021-02-05
20 Amy Vezza
The following Last Call announcement was sent out (ends 2021-02-19):

From: The IESG
To: IETF-Announce
CC: barryleiba@gmail.com, cdni-chairs@ietf.org, cdni@ietf.org, draft-ietf-cdni-uri-signing@ietf.org, kevin.j.ma@ericsson.com …
The following Last Call announcement was sent out (ends 2021-02-19):

From: The IESG
To: IETF-Announce
CC: barryleiba@gmail.com, cdni-chairs@ietf.org, cdni@ietf.org, draft-ietf-cdni-uri-signing@ietf.org, kevin.j.ma@ericsson.com
Reply-To: last-call@ietf.org
Sender:
Subject: Last Call:  (URI Signing for Content Delivery Network Interconnection (CDNI)) to Proposed Standard


The IESG has received a request from the Content Delivery Networks
Interconnection WG (cdni) to consider the following document: - 'URI Signing
for Content Delivery Network Interconnection (CDNI)'
  as Proposed Standard

The IESG plans to make a decision in the next few weeks, and solicits final
comments on this action. Please send substantive comments to the
last-call@ietf.org mailing lists by 2021-02-19. Exceptionally, comments may
be sent to iesg@ietf.org instead. In either case, please retain the beginning
of the Subject line to allow automated sorting.

Abstract


  This document describes how the concept of URI Signing supports the
  content access control requirements of Content Delivery Network
  Interconnection (CDNI) and proposes a URI Signing method as a JSON
  Web Token (JWT) profile.

  The proposed URI Signing method specifies the information needed to
  be included in the URI to transmit the signed JWT, as well as the
  claims needed by the signed JWT to authorize a User Agent (UA).  The
  mechanism described can be used both in CDNI and single Content
  Delivery Network (CDN) scenarios.




The file can be obtained via
https://datatracker.ietf.org/doc/draft-ietf-cdni-uri-signing/


The following IPR Declarations may be related to this I-D:

  https://datatracker.ietf.org/ipr/2603/
  https://datatracker.ietf.org/ipr/4628/





2021-02-05
20 Amy Vezza IESG state changed to In Last Call from Last Call Requested
2021-02-05
20 Barry Leiba Last call was requested
2021-02-05
20 Barry Leiba Last call announcement was generated
2021-02-05
20 Barry Leiba Ballot approval text was generated
2021-02-05
20 Barry Leiba IESG state changed to Last Call Requested from AD Evaluation::AD Followup
2021-02-05
20 (System) Sub state has been changed to AD Followup from Revised ID Needed
2021-02-05
20 Phil Sorber New version available: draft-ietf-cdni-uri-signing-20.txt
2021-02-05
20 (System) New version accepted (logged-in submitter: Phil Sorber)
2021-02-05
20 Phil Sorber Uploaded new revision
2021-02-05
Jenny Bui Posted related IPR disclosure Koninklijke KPN N.V.'s Statement about IPR related to draft-ietf-cdni-uri-signing
2020-03-13
19 Barry Leiba Ballot writeup was changed
2020-03-12
19 Barry Leiba IESG state changed to AD Evaluation::Revised I-D Needed from AD Evaluation
2020-03-12
19 Barry Leiba Changed consensus to Yes from Unknown
2020-03-01
19 Barry Leiba IESG state changed to AD Evaluation from Publication Requested
2020-03-01
19 Kevin Ma
Document Shepherd: Kevin J. Ma

Responsible AB: Barry Leiba

This document defines a standard for URI signing to enable interoperability between interconnected CDNs.  We are …
Document Shepherd: Kevin J. Ma

Responsible AB: Barry Leiba

This document defines a standard for URI signing to enable interoperability between interconnected CDNs.  We are requesting publication as "Proposed Standard" as we feel it has been extensively reviewed and vetted by the WG.  The draft has undergone significant rewrite multiple times as a result of the reviews and implementations.  There are commercial implementations, as well as interest and review by other SDOs (e.g., the Streaming Video Alliance and the MPEG WG, see https://datatracker.ietf.org/liaison/1413/).  During the most recent rewrite, over the course of many IETFs, the authors, interested parties, and WG discussed all aspects of the switch to JWT.  In the more recent revisions, non-editorial changes were primarily the result of implementation findings.  At this point, the WG feels that the document is mature and complete.

The document originally went to WGLC in July 2016.  In an pre-sec-dir review, Matt Miller had "reinventing the wheel" (more specifically, reinventing crypto wheels by non-security folks) concerns (see https://mailarchive.ietf.org/arch/msg/cdni/3xTSo1OzQyFf6ky8gj8kMxPTU1Q/).  At that time, it was decided to rewrite the draft to rely on JWT for the security aspects.  This greatly simplified the security aspects of the draft to specifying just the JWT claims needed to implement the CDNI security policies.

There are known security limitations with URI signing, and they are documented in the Introduction and Security Considerations sections.  If used responsibly for its intended purpose, URI signing serves a specific function providing basic access control, useful in protecting the CDN itself (though not necessarily the content being served by the CDN).  Though these limitations are often misunderstood by or misrepresented to content owners, URI signing is widely used for its intended (stated) purpose by network operators.  Because of this wide use, the WG feels that standardizing URI signing is important for interoperability.

As Matt Miller was deeply involved in the rewrite, the WG feels that the security aspects should be well vetted at this point.

The other major change since the original WGLC was the inclusion of Token Renewal for HTTP Addaptive Streaming (HAS).  Originally, the WG decided to avoid HAS in all WG documents, because we could not come to a concensus on how to address it, and there was concern that a lot of IPR would be implicated.  For URI signing, an IPR disclosure was made on HAS related conten (see https://datatracker.ietf.org/ipr/2603/), and the WG decided to split out the IPR encumbered portion at IETF-93 (see https://tools.ietf.org/wg/cdni/minutes?item=minutes-93-cdni.html).  The IPR disclosure was subsequently updated (see https://datatracker.ietf.org/ipr/2806/) removing the royalties and the WG decided to re-incorporate the IPR encumbered portion at IETF-96 (see https://tools.ietf.org/wg/cdni/minutes?item=minutes-96-cdni.html).

Because HAS has become such a significant portion of CDN traffic, the WG felt that HAS support was important to include and the updated IPR terms were deemed acceptable.

The authors have confirmed that there is no other known undisclosed IPR related to the contents of this document.

There are no downward references in the document, and I agree with the normative vs informative reference designations.  I suppose it could be argued that the CDNI problem statement and requirements documents are normative to URI Signing's purpose, but they don't really affect the protocol specifics so they are listed as informative.  Similarly, the reference to the CDNI Request Routing interface, only used to say that there is no dependency on the CDNI Request Routing interface also seems fine as non-normative.

This document registers a new CDNI Payload Type in our IANA registry, for the purpose of identifying URI Signing CDNI Metadata and advertising URI Signing CDNI Capabilities.  This is inline with the intended purpose of the registry.  I am the creator of and one of the two expert reviewers for that registry and approve of this registration.

This document registers a new CDNI Logging Record Type and two associated CDNI Logging Field Names.  These registrations are inline with the intended extensibility design of CDNI Logging.  I am  one of the two expert reviewers for these registries and approve of this registration.

This document registers seven new claims in the JSON Web Token Claims registry.  The authors have discussed the registrations with Brian Campbell, one of the Expert reviewers for the JSON Web Token Claims registry, and he approved of the registrations.

This document creates two new IANA registries: the CDNI URI Signing Verification Code registry and the CDNI URI Signing Signed Token Transport registry.  Both registries are defined as Specification Required.  Phil Sorber and I volunteer to be expert reviewers for both registries.

The CDNI URI Signing Verification Code registry is for registering error codes reported in CDNI logs.  URI Signing allows for extension claims to be defined in the future.  The error codes correspond one-to-one with claims.  Though future extensions would likely be defined in RFCs, and new error codes could be defined in those RFCs, a registry seemed like a better way to prevent overlapping or duplicate error codes.

The CDNI URI Signing Signed Token Transport registry is for registering valid values for the CDNI Signed Token Transport claim.  There are only two values initially defined: none and cookie.  The intent of the registry is to allow for future extensibility.  Though cookies were the proposed implementation for HAS support, the WG did not wanted to assume cookies would always be the best solution.

2020-03-01
19 Kevin Ma IETF WG state changed to Submitted to IESG for Publication from WG Consensus: Waiting for Write-Up
2020-03-01
19 Kevin Ma IESG state changed to Publication Requested from I-D Exists
2020-03-01
19 Kevin Ma IESG process started in state Publication Requested
2020-03-01
19 Kevin Ma Tag Revised I-D Needed - Issue raised by WGLC cleared.
2020-03-01
19 Kevin Ma
Document Shepherd: Kevin J. Ma

Responsible AB: Barry Leiba

This document defines a standard for URI signing to enable interoperability between interconnected CDNs.  We are …
Document Shepherd: Kevin J. Ma

Responsible AB: Barry Leiba

This document defines a standard for URI signing to enable interoperability between interconnected CDNs.  We are requesting publication as "Proposed Standard" as we feel it has been extensively reviewed and vetted by the WG.  The draft has undergone significant rewrite multiple times as a result of the reviews and implementations.  There are commercial implementations, as well as interest and review by other SDOs (e.g., the Streaming Video Alliance and the MPEG WG, see https://datatracker.ietf.org/liaison/1413/).  During the most recent rewrite, over the course of many IETFs, the authors, interested parties, and WG discussed all aspects of the switch to JWT.  In the more recent revisions, non-editorial changes were primarily the result of implementation findings.  At this point, the WG feels that the document is mature and complete.

The document originally went to WGLC in July 2016.  In an pre-sec-dir review, Matt Miller had "reinventing the wheel" (more specifically, reinventing crypto wheels by non-security folks) concerns (see https://mailarchive.ietf.org/arch/msg/cdni/3xTSo1OzQyFf6ky8gj8kMxPTU1Q/).  At that time, it was decided to rewrite the draft to rely on JWT for the security aspects.  This greatly simplified the security aspects of the draft to specifying just the JWT claims needed to implement the CDNI security policies.

There are known security limitations with URI signing, and they are documented in the Introduction and Security Considerations sections.  If used responsibly for its intended purpose, URI signing serves a specific function providing basic access control, useful in protecting the CDN itself (though not necessarily the content being served by the CDN).  Though these limitations are often misunderstood by or misrepresented to content owners, URI signing is widely used for its intended (stated) purpose by network operators.  Because of this wide use, the WG feels that standardizing URI signing is important for interoperability.

As Matt Miller was deeply involved in the rewrite, the WG feels that the security aspects should be well vetted at this point.

The other major change since the original WGLC was the inclusion of Token Renewal for HTTP Addaptive Streaming (HAS).  Originally, the WG decided to avoid HAS in all WG documents, because we could not come to a concensus on how to address it, and there was concern that a lot of IPR would be implicated.  For URI signing, an IPR disclosure was made on HAS related conten (see https://datatracker.ietf.org/ipr/2603/), and the WG decided to split out the IPR encumbered portion at IETF-93 (see https://tools.ietf.org/wg/cdni/minutes?item=minutes-93-cdni.html).  The IPR disclosure was subsequently updated (see https://datatracker.ietf.org/ipr/2806/) removing the royalties and the WG decided to re-incorporate the IPR encumbered portion at IETF-96 (see https://tools.ietf.org/wg/cdni/minutes?item=minutes-96-cdni.html).

Because HAS has become such a significant portion of CDN traffic, the WG felt that HAS support was important to include and the updated IPR terms were deemed acceptable.

The authors have confirmed that there is no other known undisclosed IPR related to the contents of this document.

There are no downward references in the document, and I agree with the normative vs informative reference designations.  I suppose it could be argued that the CDNI problem statement and requirements documents are normative to URI Signing's purpose, but they don't really affect the protocol specifics so they are listed as informative.  Similarly, the reference to the CDNI Request Routing interface, only used to say that there is no dependency on the CDNI Request Routing interface also seems fine as non-normative.

This document registers a new CDNI Payload Type in our IANA registry, for the purpose of identifying URI Signing CDNI Metadata and advertising URI Signing CDNI Capabilities.  This is inline with the intended purpose of the registry.  I am the creator of and one of the two expert reviewers for that registry and approve of this registration.

This document registers a new CDNI Logging Record Type and two associated CDNI Logging Field Names.  These registrations are inline with the intended extensibility design of CDNI Logging.  I am  one of the two expert reviewers for these registries and approve of this registration.

This document registers seven new claims in the JSON Web Token Claims registry.  The authors have discussed the registrations with Brian Campbell, one of the Expert reviewers for the JSON Web Token Claims registry, and he approved of the registrations.

This document creates two new IANA registries: the CDNI URI Signing Verification Code registry and the CDNI URI Signing Signed Token Transport registry.  Both registries are defined as Specification Required.  Phil Sorber and I volunteer to be expert reviewers for both registries.

The CDNI URI Signing Verification Code registry is for registering error codes reported in CDNI logs.  URI Signing allows for extension claims to be defined in the future.  The error codes correspond one-to-one with claims.  Though future extensions would likely be defined in RFCs, and new error codes could be defined in those RFCs, a registry seemed like a better way to prevent overlapping or duplicate error codes.

The CDNI URI Signing Signed Token Transport registry is for registering valid values for the CDNI Signed Token Transport claim.  There are only two values initially defined: none and cookie.  The intent of the registry is to allow for future extensibility.  Though cookies were the proposed implementation for HAS support, the WG did not wanted to assume cookies would always be the best solution.

2020-03-01
19 Kevin Ma
Document Shepherd: Kevin J. Ma

Responsible AB: Barry Leiba

This document defines a standard for URI signing to enable interoperability between interconnected CDNs.  We are …
Document Shepherd: Kevin J. Ma

Responsible AB: Barry Leiba

This document defines a standard for URI signing to enable interoperability between interconnected CDNs.  We are requesting publication as "Proposed Standard" as we feel it has been extensively reviewed and vetted by the WG.  The draft has undergone significant rewrite multiple times as a result of the reviews and implementations.  There are commercial implementations, as well as interest and review by other SDOs (e.g., the Streaming Video Alliance and the MPEG WG, see https://datatracker.ietf.org/liaison/1413/).  During the most recent rewrite, over the course of many IETFs, the authors, interested parties, and WG discussed all aspects of the switch to JWT.  In the more recent revisions, non-editorial changes were primarily the result of implementation findings.  At this point, the WG feels that the document is mature and complete.

The document originally went to WGLC in July 2016.  In an pre-sec-dir review, Matt Miller had "reinventing the wheel" (more specifically, reinventing crypto wheels by non-security folks) concerns (see https://mailarchive.ietf.org/arch/msg/cdni/3xTSo1OzQyFf6ky8gj8kMxPTU1Q/).  At that time, it was decided to rewrite the draft to rely on JWT for the security aspects.  This greatly simplified the security aspects of the draft to specifying just the JWT claims needed to implement the CDNI security policies.

There are known security limitations with URI signing, and they are documented in the Introduction and Security Considerations sections.  If used responsibly for its intended purpose, URI signing serves a specific function providing basic access control, useful in protecting the CDN itself (though not necessarily the content being served by the CDN).  Though these limitations are often misunderstood by or misrepresented to content owners, URI signing is widely used for its intended (stated) purpose by network operators.  Because of this wide use, the WG feels that standardizing URI signing is important for interoperability.

As Matt Miller was deeply involved in the rewrite, the WG feels that the security aspects should be well vetted at this point.

The other major change since the original WGLC was the inclusion of Token Renewal for HTTP Addaptive Streaming (HAS).  Originally, the WG decided to avoid HAS in all WG documents, because we could not come to a concensus on how to address it, and there was concern that a lot of IPR would be implicated.  For URI signing, an IPR disclosure was made on HAS related conten (see https://datatracker.ietf.org/ipr/2603/), and the WG decided to split out the IPR encumbered portion at IETF-93 (see https://tools.ietf.org/wg/cdni/minutes?item=minutes-93-cdni.html).  The IPR disclosure was subsequently updated (see https://datatracker.ietf.org/ipr/2806/) removing the royalties and the WG decided to re-incorporate the IPR encumbered portion at IETF-96 (see https://tools.ietf.org/wg/cdni/minutes?item=minutes-96-cdni.html).

Because HAS has become such a significant portion of CDN traffic, the WG felt that HAS support was important to include and the updated IPR terms were deemed acceptable.

The authors have confirmed that there is no other known undisclosed IPR related to the contents of this document.

There are no downward references in the document, and I agree with the normative vs informative reference designations.  I suppose it could be argued that the CDNI problem statement and requirements documents are normative to URI Signing's purpose, but they don't really affect the protocol specifics so they are listed as informative.  Similarly, the reference to the CDNI Request Routing interface, only used to say that there is no dependency on the CDNI Request Routing interface also seems fine as non-normative.

This document registers a new CDNI Payload Type in our IANA registry, for the purpose of identifying URI Signing CDNI Metadata and advertising URI Signing CDNI Capabilities.  This is inline with the intended purpose of the registry.  I am the creator of and one of the two expert reviewers for that registry and approve of this registration.

This document registers a new CDNI Logging Record Type and two associated CDNI Logging Field Names.  These registrations are inline with the intended extensibility design of CDNI Logging.  I am  one of the two expert reviewers for these registries and approve of this registration.

This document registers seven new claims in the JSON Web Token Claims registry.  The authors have discussed the registrations with Brian Campbell, one of the Expert reviewers for the JSON Web Token Claims registry, and he approved of the registrations.

This document creates two new IANA registries: the CDNI URI Signing Verification Code registry and the CDNI URI Signing Signed Token Transport registry.  Both registries are defined as Specification Required.

The CDNI URI Signing Verification Code registry is for registering error codes reported in CDNI logs.  URI Signing allows for extension claims to be defined in the future.  The error codes correspond one-to-one with claims.  Though future extensions would likely be defined in RFCs, and new error codes could be defined in those RFCs, a registry seemed like a better way to prevent overlapping or duplicate error codes.

The CDNI URI Signing Signed Token Transport registry is for registering valid values for the CDNI Signed Token Transport claim.  There are only two values initially defined: none and cookie.  The intent of the registry is to allow for future extensibility.  Though cookies were the proposed implementation for HAS support, the WG did not wanted to assume cookies would always be the best solution.

2019-10-08
19 Phil Sorber New version available: draft-ietf-cdni-uri-signing-19.txt
2019-10-08
19 (System) New version approved
2019-10-08
19 (System) Request for posting confirmation emailed to previous authors: Ray van Brandenburg , Kent Leung , Phil Sorber
2019-10-08
19 Phil Sorber Uploaded new revision
2019-09-25
18 Barry Leiba IESG state changed to I-D Exists from AD is watching
2019-08-11
18 Kevin Ma IETF WG state changed to WG Consensus: Waiting for Write-Up from WG Document
2019-05-07
18 Phil Sorber New version available: draft-ietf-cdni-uri-signing-18.txt
2019-05-07
18 (System) New version approved
2019-05-07
18 (System) Request for posting confirmation emailed to previous authors: Ray van Brandenburg , Kent Leung , Phil Sorber
2019-05-07
18 Phil Sorber Uploaded new revision
2019-03-27
17 Cindy Morgan Shepherding AD changed to Barry Leiba
2019-03-11
17 Phil Sorber New version available: draft-ietf-cdni-uri-signing-17.txt
2019-03-11
17 (System) New version approved
2019-03-11
17 (System) Request for posting confirmation emailed to previous authors: Ray van Brandenburg , Kent Leung , Phil Sorber
2019-03-11
17 Phil Sorber Uploaded new revision
2018-11-16
16 Alexey Melnikov IESG state changed to AD is watching from Dead
2018-10-23
16 Phil Sorber New version available: draft-ietf-cdni-uri-signing-16.txt
2018-10-23
16 (System) New version approved
2018-10-23
16 (System) Request for posting confirmation emailed to previous authors: Ray van Brandenburg , Kent Leung , Phil Sorber
2018-10-23
16 Phil Sorber Uploaded new revision
2018-10-22
15 Phil Sorber New version available: draft-ietf-cdni-uri-signing-15.txt
2018-10-22
15 (System) New version approved
2018-10-22
15 (System) Request for posting confirmation emailed to previous authors: Ray van Brandenburg , Kent Leung , Phil Sorber , cdni-chairs@ietf.org
2018-10-22
15 Phil Sorber Uploaded new revision
2018-09-06
14 (System) Document has expired
2018-09-06
14 (System) IESG state changed to Dead from AD is watching
2018-07-04
14 Phil Sorber Added to session: IETF-102: cdni  Fri-0930
2018-03-05
14 Phil Sorber New version available: draft-ietf-cdni-uri-signing-14.txt
2018-03-05
14 (System) New version approved
2018-03-05
14 (System) Request for posting confirmation emailed to previous authors: Ray van Brandenburg , Kent Leung , Phil Sorber , cdni-chairs@ietf.org
2018-03-05
14 Phil Sorber Uploaded new revision
2017-11-16
13 Alexey Melnikov IESG state changed to AD is watching from Dead
2017-10-30
13 Phil Sorber New version available: draft-ietf-cdni-uri-signing-13.txt
2017-10-30
13 (System) New version approved
2017-10-30
13 (System) Request for posting confirmation emailed to previous authors: Ray van Brandenburg , Kent Leung , Phil Sorber
2017-10-30
13 Phil Sorber Uploaded new revision
2017-06-25
12 Phil Sorber New version available: draft-ietf-cdni-uri-signing-12.txt
2017-06-25
12 (System) New version approved
2017-06-25
12 (System) Request for posting confirmation emailed to previous authors: Ray van Brandenburg , Kent Leung , Phil Sorber , Matthew Miller , cdni-chairs@ietf.org
2017-06-25
12 Phil Sorber Uploaded new revision
2017-05-18
11 Phil Sorber New version available: draft-ietf-cdni-uri-signing-11.txt
2017-05-18
11 (System) New version approved
2017-05-18
11 (System) Request for posting confirmation emailed to previous authors: Ray van Brandenburg , Kent Leung , Phil Sorber , Matthew Miller , cdni-chairs@ietf.org
2017-05-18
11 Phil Sorber Uploaded new revision
2017-04-07
10 (System) Document has expired
2017-04-07
10 (System) IESG state changed to Dead from AD is watching
2017-03-28
10 Tero Kivinen Closed request for Early review by SECDIR with state 'Team Will not Review Version'
2016-10-04
10 Ray van Brandenburg New version available: draft-ietf-cdni-uri-signing-10.txt
2016-10-04
10 (System) New version approved
2016-10-04
09 (System)
Request for posting confirmation emailed to previous authors: "Michel Fisher" , "Bill Downey" , cdni-chairs@ietf.org, "Kent Leung" , "Ray van Brandenburg" , "Francois Le …
Request for posting confirmation emailed to previous authors: "Michel Fisher" , "Bill Downey" , cdni-chairs@ietf.org, "Kent Leung" , "Ray van Brandenburg" , "Francois Le Faucheur"
2016-10-04
09 Ray van Brandenburg Uploaded new revision
2016-08-10
09 Kevin Ma Tag Revised I-D Needed - Issue raised by WGLC set.
2016-08-10
09 Kevin Ma IETF WG state changed to WG Document from In WG Last Call
2016-07-19
09 Kevin Ma IETF WG state changed to In WG Last Call from WG Document
2016-06-28
09 Ray van Brandenburg New version available: draft-ietf-cdni-uri-signing-09.txt
2016-06-20
08 Ray van Brandenburg New version available: draft-ietf-cdni-uri-signing-08.txt
2016-05-20
07 Alexey Melnikov Intended Status changed to Proposed Standard
2016-05-20
07 Alexey Melnikov IESG process started in state AD is watching
2016-05-20
07 (System) Earlier history may be found in the Comment Log for /doc/draft-leung-cdni-uri-signing/
2016-04-05
07 Ray van Brandenburg New version available: draft-ietf-cdni-uri-signing-07.txt
2015-12-31
06 Ray van Brandenburg New version available: draft-ietf-cdni-uri-signing-06.txt
2015-11-04
05 Kevin Ma Notification list changed to "Kevin J. Ma" <kevin.j.ma@ericsson.com>
2015-11-04
05 Kevin Ma Document shepherd changed to Kevin J. Ma
2015-10-29
05 Tero Kivinen Request for Early review by SECDIR is assigned to Brian Weis
2015-10-29
05 Tero Kivinen Request for Early review by SECDIR is assigned to Brian Weis
2015-08-12
05 Ray van Brandenburg New version available: draft-ietf-cdni-uri-signing-05.txt
2015-06-08
Naveen Khan Posted related IPR disclosure: Koninklijke KPN N.V.'s Statement about IPR related to draft-ietf-cdni-uri-signing
2015-06-01
04 Ray van Brandenburg New version available: draft-ietf-cdni-uri-signing-04.txt
2015-04-14
03 Ray van Brandenburg New version available: draft-ietf-cdni-uri-signing-03.txt
2015-03-26
02 Ray van Brandenburg New version available: draft-ietf-cdni-uri-signing-02.txt
2014-09-16
01 Kent Leung New version available: draft-ietf-cdni-uri-signing-01.txt
2014-07-01
00 François Le Faucheur This document now replaces draft-leung-cdni-uri-signing instead of None
2014-06-15
00 Ray van Brandenburg New version available: draft-ietf-cdni-uri-signing-00.txt