<?xml version="1.0" encoding="UTF-8"?>
<!-- This template is for creating an Internet Draft using xml2rfc,
  which is available here: http://xml.resource.org. -->
<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [
<!-- One method to get references from the online citation libraries.
  There has to be one entity for each item to be referenced.
  An alternate method (rfc include) is described in the references. --> 
<!ENTITY RFC2119 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.2119.xml">
<!ENTITY RFC2818 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.2818.xml">
<!ENTITY RFC5280 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.5280.xml">
<!ENTITY RFC7230 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.7230.xml">
<!ENTITY RFC3444 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.3444.xml">
<!ENTITY RFC3466 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.3466.xml">
<!ENTITY RFC8446 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.8446.xml">
<!ENTITY RFC6844 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.6844.xml">
<!ENTITY RFC5424 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.5424.xml">
<!ENTITY RFC3568 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.3568.xml">
<!ENTITY RFC6770 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.6770.xml">
<!ENTITY RFC6707 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.6707.xml">
<!ENTITY RFC2629 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.2629.xml">
<!ENTITY RFC6698 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.6698.xml">
<!ENTITY RFC7336 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.7336.xml">
<!ENTITY RFC7337 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.7337.xml">
<!ENTITY RFC7540 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.7540.xml">
<!ENTITY RFC7937 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.7937.xml">
<!ENTITY RFC8006 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.8006.xml">
<!ENTITY RFC8007 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.8007.xml">
<!ENTITY I-D.fieau-cdni-https-delegation SYSTEM "http://xml.resource.org/public/rfc/bibxml3/reference.I-D.fieau-cdni-https-delegation.xml">
<!ENTITY I-D.thomson-http-scd SYSTEM "http://xml.resource.org/public/rfc/bibxml3/reference.I-D.thomson-http-scd">
<!ENTITY I-D.thomson-http-bc SYSTEM "http://xml.resource.org/public/rfc/bibxml3/reference.I-D.thomson-http-bc">
<!ENTITY I-D.reschke-http-oob-encoding SYSTEM "http://xml.resource.org/public/rfc/bibxml3/reference.I-D.reschke-http-oob-encoding">
<!ENTITY I-D.thomson-http-mice SYSTEM "http://xml.resource.org/public/rfc/bibxml3/reference.I-D.thomson-http-mice">
<!ENTITY I-D.ietf-httpbis-encryption-encoding SYSTEM "http://xml.resource.org/public/rfc/bibxml3/reference.I-D.ietf-httpbis-encryption-encoding">
<!ENTITY I-D.ietf-tls-subcerts SYSTEM "http://xml.resource.org/public/rfc/bibxml3/reference.I-D.ietf-tls-subcerts">
<!ENTITY I-D.ietf-acme-star SYSTEM "http://xml.resource.org/public/rfc/bibxml3/reference.I-D.ietf-acme-star">
<!ENTITY I-D.cairns-tls-session-key-interface SYSTEM "http://xml.resource.org/public/rfc/bibxml3/reference.I-D.cairns-tls-session-key-interface">
<!ENTITY I-D.mglt-lurk-tls SYSTEM "http://xml.resource.org/public/rfc/bibxml3/reference.I-D.mglt-lurk-tls">
]>
<?xml-stylesheet type='text/xsl' href='rfc2629.xslt' ?>
<!-- used by XSLT processors -->
<!-- For a complete list and description of processing instructions (PIs),
  please see http://xml.resource.org/authoring/README.html. -->
<!-- Below are generally applicable Processing Instructions (PIs) that most I-Ds might want to use.
  (Here they are set differently than their defaults in xml2rfc v1.32) -->
<?rfc strict="no" ?>
<!-- give errors regarding ID-nits and DTD validation -->
<!-- control the table of contents (ToC) -->
<?rfc toc="yes"?>
<!-- Display comments -->
<?rfc comments="no"?>
<!-- generate a ToC -->
<?rfc tocdepth="4"?>
<?rfc inline="yes"?>
<!-- the number of levels of subsections in ToC. default: 3 -->
<!-- control references -->
<?rfc symrefs="yes"?>
<!-- use symbolic references tags, i.e, [RFC2119] instead of [1] -->
<?rfc sortrefs="yes" ?>
<!-- sort the reference entries alphabetically -->
<!-- control vertical white space
  (using these PIs as follows is recommended by the RFC Editor) -->
<?rfc compact="yes" ?>
<!-- do not start each main section on a new page -->
<?rfc subcompact="no" ?>
<!-- keep one hblank line between list items -->
<!-- end of list of popular I-D processing instructions -->
<rfc category="std"
     docName="draft-fieau-cdni-interfaces-https-delegation-05">
	<!-- category values: std, bCSP, info, exp, and historic
  ipr values: full3667, noModification3667, noDerivatives3667
  you can add the attributes updates="NNNN" and obsoletes="NNNN"
  they will automatically be output with "(if approved)" -->

	<!-- ***** FRONT MATTER ***** -->
	<front>
		<!-- The abbreviated title is used in the page header - it is only necessary if the
  full title is longer than 39 characters -->

		<title abbrev="CDNI extensions for HTTPS delegation">CDNI extensions for HTTPS delegation</title>

		<!-- add 'role="editor"' below for the editors if appropriate -->

		<!-- Another author who claims to be an editor -->

		<author fullname="Frederic Fieau"
		        initials="F.F"
		        surname="Fieau"
				role="editor">
			<organization>Orange</organization>

			<address>
				<postal>
					<street>40-48, avenue de la Republique</street>

					<!-- Reorder these if your country does things differently -->

					<city>Chatillon</city>

					<region/>

					<code>92320</code>

					<country>France</country>
										
				</postal>


				<email>frederic.fieau@orange.com</email> 

				<!-- uri and facsimile elements may also be added -->
			</address>
		</author>

		<author fullname="Emile Stephan"
		        initials="E.S"
		        surname="Stephan"
				>
			<organization>Orange</organization>

			<address>
				<postal>
					<street>2, avenue Pierre Marzin</street>

					<!-- Reorder these if your country does things differently -->

					<city>Lannion</city>

					<region/>

					<code>22300</code>

					<country>France</country>
										
				</postal>


				<email>emile.stephan@orange.com</email> 

				<!-- uri and facsimile elements may also be added -->
			</address>
		</author>
		
		<author fullname="Sanjay Mishra"
		        initials="S.M"
		        surname="Mishra"
				>
			<organization>Verizon</organization>

			<address>
				<postal>
					<street>13100 Columbia Pike</street>

					<!-- Reorder these if your country does things differently -->

					<city>Silver Spring</city>

					<region/>
									
					<code>MD 20904</code>

					<country>USA</country>
										
				</postal>


				<email>sanjay.mishra@verizon.com</email> 

				<!-- uri and facsimile elements may also be added -->
			</address>
		</author>		

		<date day="17"
		      month="September"
		      year="2018" />

		<!-- If the month and year are both specified and are the current ones, xml2rfc will fill
  in the current day for you. If only the current year is specified, xml2rfc will fill
  in the current day and month for you. If the year is not the current one, it is
  necessary to specify at least a month (xml2rfc assumes day="1" if not specified for the
      purpose of calculating the expiry date).  With drafts it is normally sufficient to
  specify just the year. -->

		<!-- Meta-data Declarations -->

		<area>ART</area>

		<workgroup>CDNI Working Group</workgroup>

		<!-- WG name at the upperleft corner of the doc,
  IETF is fine for individual submissions.
  If this element is not present, the default is "Network Working Group",
  which is used by the RFC Editor as a nod to the history of the IETF. -->

		<keyword>CDNI, CDN, CSP, UA, Interconnection, HTTPS, API, TLS, delegation, LURK, private, key, certificate, STAR, OOB, SLC, SubCert, credential, delegated, metadata, interface, control, triggers</keyword>

		<!-- Keywords will be incorporated into HTML output
  files in a meta tag but they have no effect on text or nroff
  output. If you submit your draft to the RFC Editor, the
  keywords will be used for the search engine. -->

		<abstract>
			<t>
			The delivery of content over HTTPS involving multiple CDNs raises credential management issues. This document proposes extensions in  CDNI Control and Metadata interfaces to setup HTTPS delegation from an Upstream CDN (uCDN) to a Downstream CDN (dCDN). 
			</t>
		</abstract>

	</front>

	<middle>
		<section title="Introduction">
		<t>
		Content delivery over HTTPS using one or more CDNs along the path requires credential management.  This specifically applies when an entity delegates delivery of encrypted content to another trusted entity.  
		</t>
		<t>
		Several delegation methods are currently proposed within different IETF working groups. They specify different methods for provisioning HTTPS delivery credentials. 
		</t>
		<t>
		This document extends the CDNI Metadata interface to setup HTTPS delegation between an upstream CDN (uCDN) and downstream CDN (dCDN). Furthermore, it includes a proposal of IANA registry to enable the adding of new methods.
		</t>
		<t>
		Section 2 is about terminology used in this document. Section 3 presents delegation methods specified at the IETF. Section 4 addresses the extension for handling HTTPS delegation in CDNI. Section 5 describes simple data types. Section 6 is about an IANA registry for delegation methods. Section 7 raises the security issues. 
		</t>
		</section>
		
		<section title="Terminology">
		<t>
			This document uses terminology from CDNI framework documents such as: CDNI framework document <xref target="RFC7336"/>, CDNI requirements <xref target="RFC7337"/> and CDNI interface specifications documents: CDNI Metadata interface <xref target="RFC8006"/> and CDNI Control interface / Triggers <xref target="RFC8007"/>.
		</t>
		</section>
	
	
		<section title="Known delegation methods">
			<t>
			There are currently two Internet drafts within the TLS and ACME working groups adopted to handle delegation of HTTPS delivery between entities. 
			</t>
			<t>
			This I-D proposes standardizing HTTPS delegation between the entities using CDNI interfaces.
			</t>
			<t>This document considers the following two I-D that supports HTTPS delegation:</t>
			<t>- Sub-certificates <xref target="I-D.ietf-tls-subcerts"/> </t>
			<t>- Short-term certificates in ACME using STAR API <xref target="I-D.ietf-acme-star"/> </t>
		</section>
		


		<section title="Extending the CDNI metadata model">
		<t>
		This section defines a CDNI extension to the current Metadata interface model that allows bootstrapping delegation methods between a uCDN and a delegate dCDN.
		</t>
		
		<section title="Extension to PathMetadata object">
		<t>
		This extension reuses PathMetadata object, as defined in <xref target="RFC8006" />, by adding new "Delegation methods" objects as specified in the following sections.
		</t>
		<t>This allows to explicitly indicate support for the given method. Therefore, the presence (or lack thereof) of an AcmeStarDelegationMethod, SubcertsDelegationMethod, and/or further delegation methods, imply support (or lack thereof) for the given method.
		</t>
		<t>Example:</t>
		<t>
		The PathMatch object can reference a path-metadata that points at the delegation information. Delegation metadata are added to PathMetaData object.
		</t>
		<t>
<figure><artwork type="drawing">
<![CDATA[
PathMatch:
{
	"path-pattern": {
      "pattern": "/movies/*",
      "case-sensitive": true
	},
	"path-metadata": {
	  "type": "MI.PathMetadata",
      "href": "https://metadata.ucdn.example/video.example.com/movies"
	}
}

Below shows the PathMetaData Object related to /movie/* 
(located at https://metadata.ucdn.example/video.example.com/movies)

PathMetadata:
{
    "metadata": [
	    {
	     "generic-metadata-type": "MI.TimeWindowACL",
	     "generic-metadata-value": {
		    "times": [{
			    "windows": [
			    {
				    "start": "1213948800",
				    "end": "1478047392"
			    }]}],
		    "action": "allow",
	    }},
	    {
        "generic-metadata-type": "MI.AcmeStarDelegationMethod",
        "generic-metadata-value": {	
        "starproxy": "10.2.2.2",
        "acmeserver" : "10.2.3.3",
        "credentialslocationuri": “www.ucdn.com/credentials",
        "periodicity": 36000
	    }}]
}
]]>
</artwork>
</figure>		
		</t>
		<t>
		The existence of the "MI.AcmeStarDelegationMethod" object in a PathMetaData Object shall enable the use of one of the AcmeStarDelegation Methods, chosen by the delegate. The delegation method will be activated for the set of Path defined in the PathMatch. See next section for more details about delegation methods metadata specification.
		</t>

		</section>


		<section title="Delegation methods">
		<t>
		This section defines the delegation methods objects metadata.  Those metadata allows bootstrapping a secured delegatioin by providing the dCDN with the needed parameters to set it up.
		</t>
		
	
		<section title="AcmeStarDelegationMethod object">
		<t>This section defines the AcmeStarDelegationMethod object which describes metadata related to the use of Acme Star API  presented in <xref target="I-D.ietf-acme-star"/>
		</t>
		<t>
		As expressed in <xref target="I-D.ietf-acme-star"/>, when an origin has set a delegation to a specific domain (i.e. dCDN), the dCDN should present to the end-user client, a short-term certificate bound to the master certificate.
		</t>
		<t>Property: starproxy		
		</t><t><list>
		<t>Description: Used to advertise the STAR Proxy to the dCDN. Endpoint type defined in RFC8006, section 4.3.3</t>	
		<t>Type: Endpoint</t>
		<t>Mandatory-to-Specify: Yes</t>		
		</list></t>

		<t>Property: acmeserver</t><t><list>
		<t>Description: used to advertise the ACME server to the dCDN. Endpoint type is defined in RFC8006, section 4.3.3</t>
		<t>Type: Endpoint</t>		
		<t>Mandatory-to-Specify: Yes</t>
		</list></t>
		
		<t>Property: credentialslocationuri</t><t><list>
		<t>Description: expresses the location of the credentials to be fetched by the dCDN. Link type is as defined in RFC8006, section 4.3.1</t>
		<t>Type: Link</t>		
		<t>Mandatory-to-Specify: Yes</t>
		</list></t>

		<t>Property: periodicity</t><t><list>
		<t>Description: expresses the credentials renewal periodicity. See next section on simple meta data type.</t>
		<t>Type: Periodicity</t>		
		<t>Mandatory-to-Specify: Yes</t>
		</list></t>
		
		<t>As an example, AcmeStarDelegationMethod object could express the Acme-Star delegation as the following:</t>
		
		
		<figure><artwork type="drawing">
<![CDATA[
AcmeStarDelegationMethod: {
    "generic-metadata-type": "MI.AcmeStarDelegationMethod",
    "generic-metadata-value": {
        “starproxy”: “10.2.2.2”,
        “acmeserver”: “10.2.3.3”,
        "credentialslocationuri": “www.ucdn.com/credentials”,
        "periodicity": 36000  
    }
}
]]>
</artwork>
</figure>	
		</section>		

		<section title="SubcertsDelegationMethod object">
		<t>This section defines the SubcertsDelegationMethod object which describes metadata related to the use of Subcerts as presented in <xref target="I-D.ietf-tls-subcerts"/>
		</t>
		<t>
		As expressed in <xref target="I-D.ietf-tls-subcerts"/>, when an origin has set a delegation to a specific domain (i.e. dCDN),  the dCDN should present the Origin or uCDN certificate or "delegated_credential" during the TLS handshake <xref target="RFC8446"/> to the end-user client application, instead of its own certificate.
		</t>
		<t>Property: credentialsdelegatingentity</t>
		<t><list>
		<t>Description: Endpoint ID (IP) of the delegating Entity (uCDN). Endpoint type defined in RFC8006, section 4.3.3</t>
		<t>Type: Endpoint</t>
		<t>Mandatory-to-Specify: Yes</t>
		</list></t>

		<t>Property: credentialrecipiententity</t><t><list>
		<t>Description: Endpoint ID (IP) of the delegated entity (dCDN). Endpoint type is defined in RFC8006, section 4.3.3</t>
		<t>Type: Endpoint</t>
		<t>Mandatory-to-Specify: Yes</t>
		</list></t>
		
		<t>Property: credentialslocationuri</t><t><list>
		<t>Description: expresses the location of the credentials to be fetched by the dCDN. Link type is as defined in RFC8006, section 4.3.1</t>
		<t>Type: Link</t>		
		<t>Mandatory-to-Specify: Yes</t>
		</list></t>

		<t>Property: periodicity</t><t><list>
		<t>Description: expresses the credentials renewal periodicity. See next section on simple meta data type.</t>
		<t>Type: Periodicity</t>		
		<t>Mandatory-to-Specify: Yes</t>
		</list></t>
		
		<t>As an example, when a uCDN has delegated HTTPS delivery to dCDN, a SubcertsDelegationMethod object can express the SubCerts delegation as the following:</t>
		
		<figure><artwork type="drawing">
<![CDATA[
SubcertsDelegationMethod: {
    "generic-metadata-type": "MI.SubcertsDelegationMethod",
    "generic-metadata-value": {
        "credentialsdelegatingentity": “10.2.2.2”,
        “credentialsrecepiententity”: “10.2.3.3”,
        "credentialslocationuri": “www.ucdn.com/credentials”,
        "periodicity": 36000  
    }
}
]]>
</artwork>
</figure>	
		</section>			
		

	</section>
	</section>
	
		
	<section title="Metadata Simple Data Type Descriptions">
	<t>This section describes the simple data types that are used for properties for objects in this document.</t>
	<section title="Periodicity">
		<t>A time value expressed in seconds to indicate a periodicity.</t>

		<t>Type: Integer</t>   

	</section>
	</section>

		<section title="IANA considerations">
		<t>This document requests the registration of the following entries under the "CDNI Payload Types" registry hosted by IANA regarding “CDNI delegation”:
		</t>
		
		<figure><artwork type="drawing">
<![CDATA[	
+----------------------------+---------------+
| Payload Type               | Specification |
+----------------------------+---------------+
| MI.AcmeStarDelegationMethod| RFCthis       |
| MI.SubCertDelegationMethod | RFCthis       |
+----------------------------+---------------+

[RFC Editor: Please replace RFCthis with the published RFC number for
   this document.]
]]>

		</artwork>
		</figure>			
		
		<section title=" CDNI MI AcmeStarDelegationMethod Payload Type">
		<t>
		Purpose: The purpose of this Payload Type is to distinguish AcmeStarDelegationMethod MI objects (and any associated capability advertisement)
		</t>
		<t>
			Interface: MI/FCI
		</t>
		<t>
			Encoding: see Section 4.2.1
		</t>
		</section>


		
		<section title="CDNI MI SubCertsDelegationMethod Payload Type">
		<t>
			Purpose: The purpose of this Payload Type is to distinguish SubcertsDelegationMethod  MI objects (and any associated capability advertisement)
		</t>
		<t>
			Interface: MI/FCI
		</t>
		<t>
			Encoding: see Section 4.2.2
		</t>
		</section>
		
		</section>

		<section title="Security considerations">
		<t>Extensions proposed here do not change Security Considerations as outlined in the CDNI Metadata and Footprint and Capabilities RFCs <xref target="RFC8006"/>.</t>	
		</section>


	</middle>
	<!--  *****BACK MATTER ***** -->

	<back>
		<!-- References split into informative and normative -->

		<!-- There are 2 ways to insert reference entries from the citation libraries:
     1. define an ENTITY at the top, and use "ampersand character"RFC2629; here (as shown)
     2. simply use a PI "less than character"?rfc include="reference.RFC.2119.xml"?> here
        (for I-Ds: include="reference.I-D.narten-iana-considerations-rfc2434bis.xml")

     Both are cited textually in the same manner: by using xref elements.
     If you use the PI option, xml2rfc will, by default, try to find included files in the same
     directory as the including file. You can also define the XML_LIBRARY environment variable
     with a value containing a set of directories to search.  These can be either in the local
     filing system or remote ones accessed by http (http://domain/dir/... ).-->



		<references title="Normative References">
			<!--?rfc include="http://xml.resource.org/public/rfc/bibxml/reference.RFC.2119.xml"?-->
			<!--&RFC2119;
	     
		  &RFC2629;-->
			<!--&RFC3568;-->
			<!-- &RFC6698; DANE-->			
			<!--&RFC2818; -->
			&RFC8446;
			<!--&RFC5280;-->
			<!--&RFC6770;-->
			<!--&RFC6844;-->
			<!--&RFC7230;-->
			&RFC7937;
			&RFC8006;
			&RFC8007;
			<!--&RFC7540;-->
		</references>

		<references title="Informative References">
			<!-- Here we use entities that we defined at the beginning. -->			
				
			<!--&I-D.thomson-http-scd;-->
			<!--&I-D.ietf-acme-caa;-->
			<!--<?rfc include="reference.I-D.thomson-http-bc"?>-->
			<!--<?rfc include="reference.I-D.thomson-http-mice"?>-->
			<!--<?rfc include="reference.I-D.ietf-httpbis-encryption-encoding"?>-->
			&RFC7336;
			&RFC7337;	
			<?rfc include="reference.I-D.ietf-tls-subcerts"?>
			<?rfc include="reference.I-D.ietf-acme-star"?>
			
			<!--<?rfc include="reference.I-D.cairns-tls-session-key-interface"?>-->

						
			<!--<?rfc include="reference.I-D.ietf-cdni-redirection.xml"?>-->


			<!-- references to add		
				   [HTTPS-CDN] J. Liang, J. Jiang, H. Duan, K. Li, T. Wan, and J. Wu,
		   "When HTTPS Meets CDN: A Case of Authentication in Delegated
		   Service," in 2014 IEEE Symposium on Security and Privacy (SP), 2014,
		   pp. 67-82.

		   [SSL-Challenges] J. Clark and P. C. van Oorschot, "SoK: SSL and
		   HTTPS: Revisiting Past Challenges and Evaluating Certificate Trust
		   Model Enhancements," in 2013 IEEE Symposium on Security and Privacy
		   (SP), 2013, pp. 511-525.
		   
	



			<reference anchor="LURK_Mailing_List"
			           target="https://mailarchive.ietf.org/arch/search/?email_list=lurk">
				<front>
					<title>LURK Mailing List</title>

					<author fullname="">
						<organization/>
					</author>

					<date year=""/>
				</front>
			</reference>
	   -->
	   

		</references>
		
		
		

		<!-- Change Log

v00 2006-03-15  EBD   Initial version

v01 2006-04-03  EBD   Moved PI location back to position 1 -
                      v3.1 of XMLmind is better with them at this location.
v02 2007-03-07  AH    removed extraneous nested_list attribute,
                      other minor corrections
v03 2007-03-09  EBD   Added comments on null IANA sections and fixed heading capitalization.
                      Modified comments around figure to reflect non-implementation of
                      figure indent control.  Put in reference using anchor="DOMINATION".
                      Fixed up the date specification comments to reflect current truth.
v04 2007-03-09 AH     Major changes: shortened discussion of PIs,
                      added discussion of rfc include.
v05 2007-03-10 EBD    Added preamble to C program example to tell about ABNF and alternative 
                      images. Removed meta-characters from comments (causes
                      problems).
    2015-04-17 AR     updated ipr attribute.  -->
	</back>


</rfc>