<?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 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 RFC5246 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.5246.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 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 I-D.barnes-hard-problem SYSTEM 
                     "http://xml.resource.org/public/rfc/bibxml3/reference.I-D.barnes-hard-problem.xml">
<!ENTITY I-D.ietf-cdni-redirection SYSTEM "http://xml.resource.org/public/rfc/bibxml3/reference.I-D.ietf-cdni-redirection.xml">
<!ENTITY I-D.ietf-cdni-footprint-capabilities-semantics SYSTEM "http://xml.resource.org/public/rfc/bibxml3/reference.I-D.ietf-cdni-footprint-capabilities-semantics.xml">
<!ENTITY I-D.ietf-cdni-control-triggers SYSTEM "http://xml.resource.org/public/rfc/bibxml3/reference.I-D.ietf-cdni-control-triggers.xml">
<!ENTITY I-D.ietf-cdni-logging SYSTEM "http://xml.resource.org/public/rfc/bibxml3/reference.I-D.ietf-cdni-logging.xml">
<!ENTITY I-D.ietf-cdni-metadata SYSTEM "http://xml.resource.org/public/rfc/bibxml3/reference.I-D.ietf-cdni-metadata.xml">
<!ENTITY I-D.draft-ietf-tls-tls13 SYSTEM "http://xml2rfc.ietf.org/public/rfc/bibxml3/reference.I-D.draft-ietf-tls-tls13-13.xml">
<!ENTITY I-D.erb-lurk-rsalg SYSTEM "http://xml2rfc.ietf.org/public/rfc/bibxml3/reference.I-D.erb-lurk-rsalg.xml">
<!ENTITY I-D.ma-cdni-publisher-use-cases SYSTEM "http://xml.resource.org/public/rfc/bibxml3/reference.I-D.ma-cdni-publisher-use-cases.xml">
<!ENTITY I-D.ietf-cdni-framework SYSTEM "http://xml.resource.org/public/rfc/bibxml3/reference.I-D.ietf-cdni-framework.xml">
<!ENTITY I-D.brandenburg-cdni-has SYSTEM "http://xml.resource.org/public/rfc/bibxml3/reference.I-D.brandenburg-cdni-has.xml">
<!ENTITY I-D.narten-iana-considerations-rfc2434bis SYSTEM "http://xml.resource.org/public/rfc/bibxml3/reference.I-D.barnes-hard-problem.xml">
<!ENTITY I-D.leung-cdni-uri-signing SYSTEM "http://xml.resource.org/public/rfc/bibxml3/reference.I-D.leung-cdni-uri-signing.xml">
<!ENTITY eacute "&#x00E9;"> 
<!ENTITY acirc "&#x00E2;"> 


]>
<?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"?>
<!-- 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 blank line between list items -->
<!-- end of list of popular I-D processing instructions -->
<rfc category="std"
     docName="draft-cdni-fieau-lurk-https-delegation-00">
	<!-- 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="LURK for CDNI">Limited Use of Remote Keys for Interconnected CDNs</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 R&eacute;publique</street>

					<!-- Reorder these if your country does things differently -->

					<city>Ch&acirc;tillon</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>

		<date day="8"
		      month="July"
		      year="2016" />

		<!-- 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>Network 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, TLS, delegation, LURK, private keys, certificate, RSA, ECDHE</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>
				Sharing private keys amongst administrative entities raises numerous issues for end-users, intermediaries and content origins. The IETF envisions the standardization of protocols to limit the exchange of private keys (LURK).  This document presents CDN Interconnection (CDNI) use cases based on the Limited Use of Remote Keys (LURK) protocol and architecture and identifies a set of requirements.
			</t>
		</abstract>

	</front>

	<middle>
		<section title="Introduction">
			<t>CDNI requirements <xref target="RFC7337"/> and use cases <xref target="RFC6770"/> specify the requirements and use cases of HTTP content delivery between CDNs. The intent of this document is to pursue the work by proposing a solution for delegating content delivery over secure protocols like HTTPS or DTLS. Conversely to HTTP delivery, HTTPS <xref target="RFC2818"/> allows content delivery between Content Service Provider (CSP) and End-users with integrity and confidentiality.
			</t><t>
			From the CDNI perspective, all parties - UAs, CSPs origin servers, and CDNs - are involved in the chain of trust and preserving this chain of trust in HTTPS raises concerns.
			</t>
			<t>Indeed, regarding TLS certificates, CSPs and CDN providers are reluctant to share private keys mainly because of legal and security issues about private keys. Therefore the CDNI working group must specify a solution that avoids the exchange of private keys between CDNs.
			</t>
			<t>This document leverages the work of the LURK initiative <xref target="LURK_Mailing_List" /> and discusses the introduction of a Limited Use of Remote Keys (LURK) solution in the CDNI architecture. It presents 2 use cases which complement those described in <xref target="I-D.mglt-lurk-tls-use-cases" /> and identifies a set of requirements for CDNI. Finally it discusses different options and identifies a set of open issues.
			</t>
			<t>
			The proposed use cases are based on DNS redirection. The user agent is redirected to a dCDN to establish a TLS session to get HTTPS content. Additional use cases are expected in future versions of the draft.
			</t><t>
			This version focus on the delivery over HTTPS only.</t>
		</section>
		
		<section title="Terminology">
		<t>
			This document uses terminology from CDNI framework documents such as CDNI requirements <xref target="RFC7337"/> and CDNI interface specifications documents - CDNI metadata interface <xref target="I-D.ietf-cdni-metadata"/>, CDNI Control interface <xref target="I-D.ietf-cdni-control-triggers"/> and Logging interface <xref target="I-D.ietf-cdni-logging"/>.
		</t>
		</section>
		
		<section title="CDNI architecture using LURK">
		<t>
		This document introduces a Key Server in the CDNI architecture. The general LURK architecture is described in the Session Key interface draft <xref target="I-D.cairns-tls-session-key-interface"/>. 
		</t>
<figure>
<artwork>
<![CDATA[
    +------------+  Handshake  +------------------+    LURK   +------------+
    | TLS Client | <---------> |    TLS Server    | <-------> | Key Server |
    +------------+             +------------------+           +------------+
	]]>
</artwork>
</figure>	
		<t>
             Figure 1: General Key Server Architecture
		</t>
		<t>In CDNI, a LURK interface allows private keys to remain under the authority of its owner – typically the CSP or the uCDN - while delivering the content over HTTPS. 
		</t><t>
		The LURK interface can be introduced at different locations in the CDNI architecture. The location of the LURK function depends on the use cases. Additionally, this architecture may support variants where the Key server is owned by a third party.		
		</t>		
<figure>
<artwork>
<![CDATA[
    +------------+  Handshake  +------------------+    LURK   +--------------------------------+
    | TLS Client | <---------> |dCDN TLS Surrogate| <-------> |(uCDN/CSP/3rd Party) Key Server |
    +------------+             +------------------+           +--------------------------------+
	]]>
</artwork>
</figure>	
<t>Figure 2: Key Server in CDNI Architecture</t>
<t>
This document complements the LURK architecture of <xref target="I-D.mglt-lurk-tls-use-cases"/> with CDNI use cases. In those use cases, content delivery is decoupled from both content acquisition and signaling information needed to route and control the request. 
</t><t>
Currently CDNI signaling exchanges occur over the Request Routing Redirection interface (information to route the request across CDNs), the Metadata interface (per content or group of content information about the acquisition and the delivery), the Logging interface (exchange of monitoring information about the delivery) and the Control interface (information for controlling the lifecycle of the aforementioned interfaces).
</t><t> 
The LURK interface for CDNI adds two types of exchange: one for acquiring the certificate associated with the origin domain and the other for establishing delivery confidentiality and integrity.
</t>
<t>
This document presents two use cases of HTTPS delivery which rely on a LURK function to avoid exchanging private keys between CDNs:
</t>
<t>
   A.  uCDN Key server: the CSP has provided his certificate and private keys to the uCDN. the uCDN provides the LURK key server and interface.
   </t><t> 
   B.  CSP Key server: the CSP provides the LURK Key Server and interface.</t>
<t>
The table below presents the use cases developed in the Section 3.
</t>
<figure>
<artwork>
<![CDATA[
+-------------+--------------+----------------+-------------------+
|Use Case name|UA Redirection|uCDN redirection|CSP Cert delegation|
+-------------+--------------+----------------+-------------------+
|UC A: uCDN KS|DNS CNAME     |recursive       |uCDN               |
+-------------+--------------+----------------+-------------------+
|UC B: CSP KS |DNS CNAME     |recursive       |No                 |
+-------------+--------------+----------------+-------------------+
	]]>
</artwork>
</figure>
<t>
Figure 3: Use cases description table
</t>
<t>
   The use cases' call flows are respectful of the CDNI redirection <xref target="I-D.ietf-cdni-redirection"/> for the description of redirection methods in CDNI.</t>
	<t>They share the same steps.</t>
	<t>The figure below illustrates the framework use cases where the surrogate doesn’t handle the CSP private keys and where the surrogate remotely accesses materials to sign and encrypt information exchanged over the TLS connection.
</t>
<figure>
<artwork>
<![CDATA[
 +----+             +----------+       +----------+                +------+
 | UA |             |surrogate*|       |Key Server|                |Origin|
 +----+             +----------+       +----------+                +------+
   |...                 |                   |                        |
   |1. TLS clientHello  |                   |                        |
   |------------------->|                   |                        |
   |                    |                   |                        |
   |                    |                   |                        |
   |2. TLS serverHello  |+-----------------+|                        |
   |<-------------------||                 ||                        |
   |                    ||                 ||                        |
   |3. Certificate      ||                 ||                        |
   |<-------------------||  LURK Exchanges ||                        |
   |                    ||<--------------->||                        |
   |                    ||                 ||                        |
   |                    ||                 ||                        |
   |                    ||                 ||                        |
   |                    |+-----------------+|                        |
   |4. ServerKeyExchange|                   |                        |
   |<-------------------|                   |                        |
   |... Continued       |                   |                        |
	]]>
</artwork>
</figure>				
<t>
Figure 4: LURK exchanges in CDNI architecture
</t>
		</section>
		
		<section title="LURK use cases for CDNI">
				<t>
					Two use cases are considered in this document to implement LURK in CDNI:
				</t>
				<t>
					<list style="format Use Case %C.">
						<t>
							uCDN Key Server 
						</t><t>
							CSP Key Server
						</t>
					</list>
				</t>


			<section title="Use case A: uCDN Key Server">
				<t>In this use case, the dCDN has a LURK interface to a Key Server hosted at the uCDN side. It may be typically a case of CDNI regional delivery delegation.
				</t>
				<t>
				This following example is based on ECDHE cypher suite. The UA is first redirected from the uCDN to a dCDN using a recursive DNS redirection. Then the UA initiates a TLS connection with the dCDN to get his content. Since the dCDN does not store the private keys for the requested certificate, it queries the uCDN Key Server (KS) to get the credential to establish the TLS session with the User Agent. Finally the dCDN can deliver the content in HTTPS to the UA using the CSP certificate.
				</t>			
				<t>
					<list>
						<t>
							The UA sends an HTTPS request to the CSP to get a content.
						</t>
						<t>
							a. to d. As seen on figure 5, once the DNS resolution is over, i.e., UA was able to resolve dCDN surrogate IP@ steps [a.] to [d.], the user agent connects to the dCDN surrogate. Note that DNS cache is not shown on the figure.
						</t>
						<t>
							1. The UA sends a ClientHello, as defined in the TLS protocol <xref target="RFC5246"/>. The SNI field of the ClientHello includes the CSP domain name.
						</t>
						<t>
							2. The surrogate receives the ClientHello from the UA, and sends a ServerHello to the UA.
						</t>
						<t>
							3.  The surrogate parses the SNI field, and determines the Key Server interface of the CSP domain name. The surrogate uses this piece of information to determine the certificate of the delivery. The surrogate sends the public certificate to the UA. The UA validates the certificate.
						</t><t>
							4. The surrogate determines the ECDHE parameters, and requests the Key Server to sign these parameters with the CSP private key. The request includes the domain name received by the surrogate in the SNI field of the ClientHello.</t>
						<t>
							5. The Key Server returns the necessary credentials to the dCDN surrogate over a secure tunnel.
						</t><t>
							6. and 7. the UA and the surrogate exchange public DH parameters and compute session keys.
						</t>
						<t>
							8. The UA and the surrogate establish a secure connection. The UA issues its request for content over HTTPS.
						</t><t>
							The surrogate then processes the original request.
						</t>	
					</list>
				</t><t>
					Below is an example of the handshake establishment:
				</t>			
				<figure>
					<artwork>
<![CDATA[
+----+               +----+            +-------+                 +----+
| UA |               |dCDN|            |uCDN KS|                 |uCDN|
+----+               +----+            +-------+                 +----+
  |a. DNS A? FQDN CSP  |                   |                        |
  |---------------------------------------------------------------->|
  |                    |                   |                        |
  |b. DNS CNAME dCDN   |                   |                        |
  |<----------------------------------------------------------------|
  |                    |                   |                        |
  |c. DNS A? dCDN      |                   |                        |
  |------------------->|                   |                        |
  |                    |                   |                        |
  |d. DNS A IP Surrogate                   |                        |
  |<-------------------|                   |                        |
  |                    |                   |                        |
  |1. ClientHello (Client Random)          |                        |
  |------------------->|                   |                        |
  |                    |                   |                        |
  |2. ServerHello (Server Random)          |                        |			  
  |<-------------------|                   |                        |
  |                    |                   |                        |
  |3. Certificate (Server certificate)     |                        |			  
  |<-------------------|                   |                        | 
  |                    |                   |                        |
  |                    |4. LURK query for Signature (ECDHEParams)   |			  
  |                    |------------------>|                        |
  |                    |                   |                        |
  |                    |5. LURK response: signature (ECDHEParams)   |
  |                    |<------------------|                        |
  |                    |                   |                        |			  
  |6. ServerKeyExchange (ECDHParams, Signature)                     |
  |<-------------------|                   |                        |
  |                    |                   |                        |
  |7. ClientKeyExchange (clientDHpublic)   |                        |
  |------------------->|                   |                        |
  |Finished            |                   |                        |
  |<------------------>|                   |                        |
  |                    |                   |                        |
  |8. HTTPS request    |                   |                        |
  |------------------->|                   |                        |
]]>
					</artwork>
				</figure>		
				<t>
					Figure 5: Key Server hosted by uCDN 
				</t>				
			</section>

			<section title="Use case B: CSP Key Server">
				<t>This section describes a use case in CDNI where the CSP provides the Key Server (KS).
				</t><t>
				In this example, the CSP delegates the HTTPS content delivery to an uCDN that in turn delegates the HTTPS delivery to a dCDN.  For obvious legal or security reasons, the CSP does not want his private keys to be stored on all CDNs involved in the interconnection. In that case, the dCDN relies on credentials received from a CSP Key Server (KS) to deliver HTTPS content.</t><t>The dCDN cannot here request the KS directly. Instead, the dCDN LURK request will be relayed by the uCDN to the Key Server. Prior to that, the uCDN has to check whether the received LURK request is valid, e.g., complies with Content Distribution policies <xref target="I-D.ietf-cdni-metadata" />.
				</t><t>
				In the following example, the CSP stores his certificates and  private keys  on a Key Server that is able to compute and provide credentials for TLS establishment.
				</t>
				<t>
					<list >
						<t>
							1. The UA sends a ClientHello to the dCDN’s surrogate, as defined in the TLS protocol <xref target="RFC5246"/>. The SNI field of the ClientHello includes the CSP domain name. 
						</t>
						<t>
							2. The dCDN’s surrogate receives the ClientHello from the UA, and sends a ServerHello to the UA..
						</t>
						<t>
							3. The surrogate parses the SNI field, and determines the Key Server interface of the CSP domain name and determine the certificate of the delivery. The surrogate sends the public certificate to the UA.  The UA checks the certificate signature with the public key.
						</t>
						<t>
							4. The dCDN's surrogate requests the uCDN to sign parameters with the private key.
						</t>
						<t>
							5. The uCDN parses the SNI field, and determines the Key Server interface of the CSP domain name. The uCDN relaies the LURK request received from the dCDN's surrogate, to the Key Server to sign parameters with the private key.
						</t>
						<t>
							6. The Key Server returns the necessary credentials to the uCDN surrogate.
						</t><t>
							7. The uCDN returns the necessary credentials to the dCDN's surrogate.
						</t><t>
							8. and 9. the UA and the surrogate exchange public DH parameters and compute session keys.
						</t>
						<t>
							10. The UA and the surrogate establish a secure connection. The UA issues its request for content over HTTPS.
						</t><t>
							The surrogate then processes the original request.
						</t>	
					</list>
				</t>						
				<figure>
					<artwork>
<![CDATA[
+----+               +----+              +----+                +------+
| UA |               |dCDN|              |uCDN|                |CSP KS|
+----+               +----+              +----+                +------+
  | (DNS redirection)  |                   |                        |
  |                    |                   |                        |
  |d. DNS A IP Surrogate                   |                        |
  |<-------------------|                   |                        |
  |                    |                   |                        |
  |1. ClientHello (Client Random)          |                        |
  |------------------->|                   |                        |
  |                    |                   |                        |
  |2. ServerHello (Server Random)          |                        |
  |<-------------------|                   |                        |
  |                    |                   |                        |
  |3. Certificate (Server certificate)     |                        |
  |<-------------------|                   |                        |
  |                    |                   |                        |
  |                    |4. LURK query for Signature (ECDHEParams)   |			  
  |                    |------------------>|                        |
  |                    |                   |5. LURK query for sign. |
  |                    |                   |----------------------->|
  |                    |                   |                        |
  |                    |                   |6. LURK response        |
  |                    |                   |<-----------------------|
  |                    |                   |                        |
  |                    |7. LURK response: signature (ECDHEParams)   |
  |                    |<------------------|                        |
  |                    |                   |                        |
  |8. ServerKeyExchange (ECDHParams, Signature)                     |
  |<-------------------|                   |                        |
  |                    |                   |                        |
  |9. ClientKeyExchange (clientDHpublic)   |                        |
  |------------------->|                   |                        |
  |Finished            |                   |                        |
  |<------------------>|                   |                        |
  |                    |                   |                        |
  |10. HTTPS request   |                   |                        |
  |------------------->|                   |                        |
]]>
					</artwork>
					</figure>
					<t>
					Figure 6: Cascaded delegation with LURK 
				</t>
		</section>	

		<section title="Other use cases">
				<t>
					Other use cases will be described in  a further version of this draft.
				</t>
		</section>
	</section>	

		<section title="Requirements">
			<t>
				This section is a first attempt to identify the requirements introduced by the delivery of HTTPS content.  Some of the requirements are new, whereas others may update existing CDNI requirements  <xref target="RFC7337" />.
			</t>
			<section title="General">
						<!--<list style="format [UA-%d]">-->
<t>
LURK-GEN-1:
The specification should not require any change in User Agent. This is already stated in <xref target="RFC7337"/>/GEN-2
</t><t>
Discussion: Despite this is obvious, it is important to notice that recent limitation in TLS (version, cyphers…) or HTTP (cyphers) documents may constrain User Agent.
</t><t>
LURK-GEN-2: 
The user agent should be able to see that the requested content is delivered by the CDN using the CSP domain. Delivery domain name SHOULD be the same as the CSP portal domain name (or a sub-domain request name)
</t><t>
LURK-GEN-3:
The Certificate delivered by the dCDN and CSP must match the domain of the URL <xref target="RFC2818"/>. As an example, it means that no certificate error occurs on the UA when the dCDN has redirected the UA a dCDN.
</t><t>
LURK-GEN-4:
The dCDN's surrogates which implements LURK interface should support the delivery of content of the protocol HTTPS.
</t><t>
LURK-GEN-5:
The dCDNs must be able to present the CSP certificate and credentials to the user agent when establishing a TLS session 
</t>
			</section>					
			<section title="CDNI Control Interface requirements">
<t>LURK-CI-1:
The CDNI Control Interface may allow the bootstrapping of a Key Server interface. For example this may include:</t><t>
- discovery the Key Server interface endpoint.</t><t>
- credentials for Key Server and CDN mutual authentication.</t><t>
- TLS version, Certificate types, TLS crypto suites.</t><t>
Proposal: add this requirement to the section CDNI Control Interface of <xref target="RFC7337"/>.
</t>
			</section>
			<section title="CDNI Footprint and Capabilities Advertisement interface requirements">
<t>LURK-FC-1:
The CDNI Footprint and Capabilities Advertisement interface should allow the downstream CDN to communicate to the upstream CDN about its capabilities regarding the support of client side of the Key Server interface.
</t>
			</section>
			<section title="CDNI Logging Interface requirements">
<t>This section identifies additional requirements related to the CDNI Logging interface (LI).
</t><t>
TLS-LI-1:
the CDNI Logging interface should allow a dCDN to report to the uCDN logging for deliveries which fail during the establishment of the secure connection, e.g., ability to report certificate validation error.
</t><t>
TLS-LI-2:
The CDNI Logging interface should allow dCDN to report to uCDN logging incomplete deliveries due to encryption errors.
Discussion: this requirement is mostly a subcase of LI-2 about incomplete deliveries.
</t><t>
LURK-LI-3:
the CDNI Logging interface should allow a dCDN to report to the uCDN secure connections failures when using LURK interface. 
</t><t>
As an example, the UA can’t establish a secure connection to a dCDN because either, the credentials provided by a Key Server are invalid, or because the Key Server has refused to provide them to the dCDN.
</t>
			</section>
			<section title="Key Server Interface requirements">
			<t>
LURK-KS-1:
A Key Server interface must not allow the exchange private keys. 
This is the centrality of the LURK interface.
</t><t>
LURK-KS-2:
The Key Server and the requesting CDN must authenticate each other, according to the information provided by the CDNI Control interface.
</t><t>
LURK-KS-3: 
The dCDN Key Server interface must be able to send a LURK request to a Key Server.
</t><t>
As an example (UC A, step 4), the dCDN surrogate determines ECDHE parameters (...), and requests the Key Server to sign these parameters with the CSP private key. The request includes the domain name received by the surrogate in the SNI field of the ClientHello. 
</t>	
			</section>

		</section>	

			<section title="Discussions">		
				<section title="HTTPS and TLS">
						<t>HTTPS contents are delivered with the dCDN credentials. The introduction of a Key Server in the CDNI architecture allows the HTTPS content to be delivered with the CSP origin server certificate. It conforms to the end-to-end HTTPS framework  <xref target="RFC7230"/>. 
						</t>
				</section>
				<section title="Cyphersuites in CDNI">
				<t>CDNI WG and LURK WG should use a common set of cyphersuites, or CDNI WG should specify or points to the set of suites to support. 
				</t>
				<t>				
				TLS and HTTP2 recommend different set of cypher suites. CDNI WG should clarify which one should be supported in the case of a HTTPS delivery based on LURK credentials: HTTP2 Cipher Suite, refer to appendix A of <xref target="RFC7540"/> and "backwards-compatibility-security-restrictions" in [I-D.draft-ietf-tls-tls13"]. 
				</t>
				</section>
				<section title="PFS">
				<t>
				Should the delivery be PFS proof? 
				</t>
				</section>
				<section title="TLS version">
				<t>Which version of TLS should be supported by LURK: TLS/LTS, TLS1.2, TLS1.3?</t>
				</section>
				<section title="Scalability">
						<t>
						   For each TLS session initialization on the dCDNs, the dCDNs need to request the KS to get the necessary credentials.  To be scalable, the KS may need to be replicated.
						</t>
				</section>
				<section title="Certificates and security">
						<t>
							At least one private key per CSP is stored on the KS. Therefore the use of a KS avoids the complexity of duplicating private keys on uncontrolled servers. This also allows the uCDN to maintain a single domain name for the CDN interconnection. 
						</t>
				</section>						
				<section title="Revocation">
						<t>
							In the case of an HTTPS delegation revocation, a dCDN has no longer the delegation right to deliver a content for a given CSP. The uCDN would then deny access to CSP certificates and credentials derived from private keys, and therefore the dCDN would not be able to establish the TLS session without triggering a warning on UA Side.  
						</t>
				</section>		
				<section title="Certificate provisioning">
				<t>
				The dCDN may have to retrieve at least once the CSP public certificate related to the targeted domain name.  The certificates may be cached on the dCDN for a given duration.  .</t>
				<t>
				Is certificate provisioning in the scope of CDNI as it seems implementation dependant? Which interface provides the certificates to the uCDN (Control, Metadata, LURK, ..)? 
				</t>				
				</section>
				<section title="CSP side"><t>
				With regard to the use case B, the CSP may provide a Key server. As a consequence the requirement <xref target="RFC7337"/>/GEN-3 should be updated accordingly.
				</t>
				</section>
				<section title="Acquisition">
				<t>
				Usage of the LURK interface when acquiring content: when the dCDN acquires content directly from the origin server, would it have to request first the KS to get the uCDN credentials ? 
				</t>
				</section>
				<section title="CDNI Control Interface vs CDNI Metadata Interface">
				<t>
				What should be carried by the CI or the MI ?
				</t>
				</section>
			</section>
			
		<section title="Open issues">
			<section title="TLS session resuming"><t>
			Not yet addressed in this document, contributors are welcome.
			</t>
			</section>
			<section title="Stack Evolution"><t>
			Contents might be delivered over other protocols than TCP and than HTTP/1.1 in a close future. The CDNI WG must discuss the support of HTTPS delivery over TLS/LTS, TLSv3, DTLS, QUIC and HTTP2.
			</t>
			</section>
		</section>

		

		<section title="IANA Considerations">
			<t>This document has no IANA considerations.</t>
		</section>

		<section title="Security Considerations">
			<t>The entire document is about security.</t>
		</section>

		<section title="Acknowledgments">
			<t>
			Many thanks to Benoit Gaussen who contributed to this draft.
			</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;			
			&RFC5246;
			&RFC6770;
			&RFC7230;
			&RFC7337;			
			&RFC7540;
		</references>

		<references title="Informative References">
			<!-- Here we use entities that we defined at the beginning. -->			
			
			&I-D.ietf-cdni-redirection;						
			&I-D.ietf-cdni-control-triggers;	
			&I-D.ietf-cdni-metadata;			
			&I-D.ietf-cdni-logging;			
			&I-D.draft-ietf-tls-tls13;
			
			<!--<?rfc include="reference.I-D.ietf-cdni-redirection.xml"?>-->
			
			<?rfc include="reference.I-D.erb-lurk-rsalg.xml"?>
			<?rfc include="reference.I-D.mglt-lurk-tls-use-cases.xml"?>
			<?rfc include="reference.I-D.cairns-tls-session-key-interface.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>