<?xml version="1.0" encoding="US-ASCII"?>
<!-- This template is for creating an Internet Draft using xml2rfc,
     which is available here: http://xml2rfc.tools.ietf.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://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml">
<!ENTITY I-D.ietf-rats-architecture SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-rats-architecture.xml">
<!ENTITY I-D.ietf-teep-architecture SYSTEM "http://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-teep-architecture.xml">
]>
<?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://xml2rfc.tools.ietf.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="yes" ?>
<!-- give errors regarding ID-nits and DTD validation -->
<!-- control the table of contents (ToC) -->
<?rfc toc="yes"?>
<!-- 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="info" docName="draft-yang-teep-ccican-00" ipr="trust200902">
  <!-- category values: std, bcp, 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="ccican">architecture of confidential computing in computing aware network</title>

    <!-- add 'role="editor"' below for the editors if appropriate -->

    <!-- Another author who claims to be an editor -->

    <author fullname="Penglin Yang" initials="P." surname="Yang">
      <organization>China Mobile</organization>
      <address>
        <email>yangpenglin@chinamobile.com</email>
      </address>
    </author>
		<author fullname="Meiling Chen" initials="M." surname="Chen">
      <organization>China Mobile</organization>
      <address>
        <email>chenmeiling@chinamobile.com</email>
       </address>
    </author>
		<author fullname="Li Su" initials="L." surname="Su">
      <organization>China Mobile</organization>
      <address>
        <email>suli@chinamobile.com</email>
      </address>
		</author>
		

    <date month="March" year="2022" />

    <!-- Meta-data Declarations -->

    <area>General</area>

    <workgroup>Internet Engineering Task Force</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>confidential computing</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>Confidential Computing is the protection of data in use by performing computation in a hardware-based Trusted Execution Environment. Especially in virtualization environments, confidential computing could protect data and applications from access or tampering by hypervisor or other privileged users. In Computing-Aware network, computing resource is an essential element to provide computing services for network users&apos; applications. Introducing confidential computing in Computing-Aware network could mitigate the distrust of computing resource efficiently. This document provides the architecture of confidential computing in Computing-Aware network management plane to provide confidentiality and integrity for applications. </t>
    </abstract>
  </front>

  <middle>
    <section title="Introduction">
      <t>The Confidential Computing Consortium defined the concept of confidential computing as &quot;Confidential Computing is the protection of data in use by performing computation in a hardware-based Trusted Execution Environment&quot;<xref target="CCC-White-Paper"></xref>. In detail, CPU with confidential computing feature could generate an isolated hardware-protected area, in which processing data or running code will be protected from any illegal access or tampering. In cloud computing scenario, CPU with confidential computing feature could be used to protect users&apos; applications and data from access or tampered by hypervisor, privileged users or other attackers in the cloud platform. In hardware industry, Intel, AMD, ARM and other chip venders have already released their confidential computing CPU series.</t>
			
			<t>In Computing-Aware network, cloud-based computing resource prepared for applications is from different places like edge or data center. If the edge or data center is outsourced or even distributed in different security domains, not only the network administrator but also the application owner cannot trust the computing environment. The potential leakage of secret data or intellectual property will restrict the range of applications. With the protection of confidential computing, users could trust the computing environment and make sure their sensitive data and intellectual property will not be leaked. </t>
			
			<t>This document introduces confidential computing to Computing-Aware network and illustrates the general architecture in network management plane. Computing-Aware network designers and users could use this document as a information reference to enhance their security.</t>

      <section title="Terminology">
        <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
        "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
        document are to be interpreted as described in <xref
        target="RFC2119">RFC 2119</xref>.</t>
				<t>CC: Confidential Computing</t>
				<t>CCR: Confidential Computing Resource</t>
				<t>TEE: Trust Execution Environment</t>
				<t>CCM: Confidential Computing Management</t>
				<t>CCI: Confidential Computing Instance</t>
				<t>TEEP: Trust Execution Environment Provisioning</t>
				<t>TAM: Trusted Application Management</t>
			</section>
    </section>

    <section anchor="motiscope" title="Motivation and Scope">
      <section anchor="motivation" title="Motivation">
			  <t>In Computing-Aware network, there is a suspicion about how to protect users&apos; application and data efficiently. Computing resource in Computing-Aware network is more decentralized and ambiguous than regular cloud computing. The network may distribute users&apos; applications in different computing platforms maintained by different administrators. If the computing platform is malicious, secret data and application intellectual property could be easily stolen or tampered. Confidential computing provides a new security model in where network users only need to trust the confidential computing hardware, firmware and the applications provided by users themselves, any other hypervisor or software in computing platform do not have to be trusted. </t>
			</section>
			<section anchor="scope" title="Scope">
			  <t>This document mainly focuses on the unique features of confidential computing in network management plane. Other network planes like control/forwarding/data which have no direct interaction with confidential computing features will be ignored.</t>
			</section>
		</section>

    <section anchor="architecture" title="General Architecture of Confidential Computing in Computing-Aware Network">
      
      <figure align="center" anchor="architecturef" title="Architecture of Confidential Computing in Computing-Aware Network">
        <artwork align="center"><![CDATA[
     Targeting
+--> Environment
|  +-------------+     +----------+    
|  | Application |  +->| APP Owner|<--+
|  +-------------+  |  +----------+   |
|  |  Middleware |<-+                 |
|  +-------------+                    |
|  |  TEEP Agent |<-----+             |
|  +-------------+      |             |
|                       |             |
|  +--------------------+------+      |
|  | Hypervisor    TEEP Broker |<--+  |
|  +---------------------------+   |  |
|  | CPU/Firmware    Attesting |   |  |
|  |                Environment|   |  |
|  +---------------------+-----+   |  |
|                        |         |  |
+------------------------+         |  |
                                   |  |
              +--------------------+--+-+
              |  TAM & Middleware Repo  |
              |          M/OC           |
              +-------------------------+
            ]]></artwork>
      </figure>

      <t>Figure 1 shows the basic architecture of confidential computing in Computing-Aware Network. This architecture refers to RATs <xref target="I-D.ietf-rats-architecture"></xref> arch and TEEP<xref target="I-D.ietf-teep-architecture"></xref> arch for remote attestation and trust execution environment provisioning. Confidential computing needs the support of CPU, in which MUST have the function of generating isolated execution environment and attesting environment. The layer of Hypervisor is for virtualization. </t>
			
			<t><list counter="a" hangIndent="4" style="format (%d)">
            <t>Targeting Environment</t>
          </list>Targeting Environment is the computing environment e.g. virtual machine, process that could provide confidentiality and integrity for applications. When used for remote attestation, the Targeting Environment will be attested by application owner. Targeting environment includes Application, Middleware, and TEEP Agent.</t>
			<t><list counter="a" hangIndent="4" style="format (%d)">
            <t>Application</t>
          </list>Application which runs in Computing-Aware network.</t>
			<t><list counter="a" hangIndent="4" style="format (%d)">
            <t>Middleware</t>
          </list>Middleware in CC has two functions&#58; enable remote attestation and environment provisioning; provide a user-friendly environment. Some confidential computing CPU like SGX needs to use middleware to provide a environment in where applications don&apos;t have to change their source code, e.g. Enarx <xref target="Enarx"></xref> and Occlum <xref target="Occlum"></xref>.</t>
			<t><list counter="a" hangIndent="4" style="format (%d)">
            <t>TEEP Agent</t>
          </list>TEEP Agent is a module for provisioning middleware and application in Targeting Environment.</t>
			<t><list counter="a" hangIndent="4" style="format (%d)">
            <t>TEEP Broker</t>
          </list>TEEP Broker is only for communication between TEEP Agent and TAM, it doesn&apos;t have to know any confidential information.</t>
			<t><list counter="a" hangIndent="4" style="format (%d)">
            <t>Attesting Environment</t>
          </list>Attesting Environment is hardware based component, like Intel Quote SGX, AMD SEV-SP, etc. This component is a part of TCB, and is used to collect targeting environment evidence for remote attestation.</t>	
      <t><list counter="a" hangIndent="4" style="format (%d)">
            <t>M/OC</t>
          </list>M/OC is the manage and orchestration console of Computing-Aware Network.</t>					
			<t><list counter="a" hangIndent="4" style="format (%d)">
            <t>TAM</t>
          </list>Trust Application Management, this entity is for provisioning of application and relevant middleware.</t>
      <t><list counter="a" hangIndent="4" style="format (%d)">
            <t>Middleware Repository</t>
          </list>This repository keeps a variety of middleware packages, which is for TAM to access based on Application type and confidential computing hardware type.</t>						
    </section>

    <!-- This PI places the pagebreak correctly (before the section title) in the text output. -->

    <?rfc needLines="8" ?>

    <section anchor="envProv" title="Environment Provisioning">
      <t>When deploying applications in Computing-Aware network, TAM will choose confidential computing environment and relevant Middleware to fit their applications. Meanwhile, Computing-Aware Network needs to provide the secure procedure of provisioning middleware and applications. This document uses TEEP as reference to provision Middleware and applications in Computing-Aware network.</t>
      <figure align="center" anchor="prov" title="Application and Middleware Provisioning in Computing-Aware Network">
        <artwork align="center"><![CDATA[
     Targeting
     Environment
   +-------------+     +----------+    
   | Application |     | App Owner|<--+
   +-------------+     +----------+   |
   |  Middleware |                    |
   +-------------+                    |
   |  TEEP Agent |<-----+             |
   +-------------+      |3            |
                        |             |
   +--------------------+------+      |1
   | Hypervisor    TEEP Broker |<--+  |
   +---------------------------+   |  |
   | CPU/Firmware    Attesting |   |  |
   |                Environment|   |2 |
   +---------------------+-----+   |  |
                                   |  |
                                   |  |
                                   |  |
              +--------------------+--+-+
              |  TAM & Middleware Repo  |
              |          M/OC           |
              +-------------------------+
            ]]></artwork>
      </figure>
			
			<t>The Provisioning steps in Computing-Aware Network are illustrated below. <list counter="b" hangIndent="4" style="format (%d)">
            <t>First, Application owner requests for confidential computing resource in Computing-Aware Network. Second, based on the request and confidential computing resource type, TAM will chose appropriate middleware.</t>
          </list></t>
			<t><list counter="b" hangIndent="4" style="format (%d)">
            <t>TAM establishes connections with TEEP Broker to transfer provisioning information.</t>
          </list></t>
			<t><list counter="b" hangIndent="4" style="format (%d)">
            <t>TEEP Broker triggers the confidential computing platform to create Targeting Environment with TEEP Agent. Then TEEP Broker establishes connections with TEEP agent. TEEP agent receives the provisioning information and unpacks it as Middleware.</t>
          </list></t>
			<t>Need to clarify that at this stage the Middleware dosen&apos;t contain any secret information. The secret information of application should be provisioned after remote attestation.  The specific mechanism of building targeting environment is based on specific CPU and is out of scope of this document.</t>
    </section>

    <section anchor="rat" title="Remote Attestation">
      <t>In Computing-Aware Network, remote attestation is used for application owner to appraise if the Targeting Environment is trusted. Only after remote attestation, application owner could trust the confidential computing environment and deploy secret information. The general architecture of remote attestation in Computing-Aware Network is shown below.</t>
      <figure align="center" anchor="rats" title="Remote Attestation in Computing-Aware Network">
        <artwork align="center"><![CDATA[
     Targeting
+--> Environment
|  +-------------+ 1/4 +----------+    
|  | Application |  +->| APP Owner|<--+
|  +-------------+  |  +----------+   |
|  |  Middleware |<-+                 |
|  +-------------+                    |
|  |  TEEP Agent |                    |
|  +-------------+                    |
|2                                    |3
|  +--------------------+------+      |
|  | Hypervisor    TEEP Broker |<--+  |
|  +---------------------------+   |  |
|  | CPU/Firmware    Attesting |   |  |
|  |                Environment|   |  |
|  +---------------------+-----+   |  |
|                        |         |  |
+------------------------+         |  |
                                   |  |
              +--------------------+--+-+
              |  TAM & Middleware Repo  |
              |          M/OC           |
              +-------------------------+
            ]]></artwork>
      </figure>			
			<t>The remote attestation steps in Computing-Aware Network are shown below. After appraising the remote attestation evidence, the application owner could deploy secret data in Targeting Environment.<list counter="c" hangIndent="4" style="format (%d)">
            <t>Application owner establishes secure connection with middleware and launches remote attestation request with certain parameters like nonce.</t>
          </list></t>
			<t><list counter="c" hangIndent="4" style="format (%d)">
            <t>Targeting Environment launches evidence collection by Middleware. Middleware sends request to Attesting Environment for remote attestation evidence. After generating evidence by Attesting Environment, the evidence will be sent back to Middleware.</t>
          </list></t>
			<t><list counter="c" hangIndent="4" style="format (%d)">
            <t>The Application Owner requests for TEEP agent and middleware source code to generate reference value and appraise the remote attestation evidence.</t>
          </list></t>
			<t><list counter="c" hangIndent="4" style="format (%d)">
            <t>The Targeting Environment sends the evidence to Application Owner. After appraising, Application Owner sends its application and private data to Targeting Environment.</t>
          </list></t>
    </section>

    <section anchor="usecase" title="Use Case">
      <t>Confidential computing provides confidentiality and integrity of data and applications in the running stage. This document depicts the abstract architecture of confidential computing from the perspective of Computing-Aware Network. The following are some use cases of confidential computing in Computing-Aware Network.</t>
			<t>VR/AR Application: Users wants to use Computing-Aware Network to host VR communication and interaction with other user. They don&apos;t want their conversation to be awared by the network. And it is hard to encrypt all the VR context because of unacceptable cost. So, the users choose confidential computing to protect their privacy. After the remote attestation of computing environment, the users could transfer and process private information in Computing-Aware Network.</t>
			<t>Medical Imaging Aalysis: A medical institute wants to use Computing-Aware Network to share and process medical images in different branches. One primary concern is that they don&apos;t want the patients&apos; medical images to be leaked. So they choose confidential computing to process these images.</t>
    </section>
    <section anchor="secconsider" title="Security Considerations">
		  <t>The root of trust of confidential computing is the CPU hardware. Application Owner could use the certificate or signature in remote attestation information to verify the identity of CPU. The connections between Application Owner and their applications are protected by security protocols like TLS.</t>
		</section>
    
		<section anchor="Acknowledgements" title="Acknowledgements">
      <t>The author would like to thank Eric Voit, Mike Bursul and Dave Thaler in CCC group who have provided valuable supports and suggestions.</t>
    </section>

    
    <section anchor="IANA" title="IANA Considerations">
      <t>This memo includes no request to IANA.</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">
      &RFC2119;
			&I-D.ietf-rats-architecture;
      &I-D.ietf-teep-architecture;
    </references>

    <references title="Informative References">
      
      <!-- A reference written by by an organization not a person. -->

      <reference anchor="CCC-White-Paper" target="https://confidentialcomputing.io/wp-content/uploads/sites/85/2021/03/confidentialcomputing_outreach_whitepaper-8-5x11-1.pdf">
        <front>
          <title>Confidential Computing: Hardware-Based Trusted Execution for Applications and Data</title>
          <author>
            <organization>Confidential Computing Consortium</organization>
          </author>
          <date year="2021" />
        </front>
      </reference>
			<reference anchor="Enarx" target="https://enarx.dev/docs/Technical/Introduction">
        <front>
          <title>Enarx</title>
          <author>
            <organization>Profian, Inc.</organization>
          </author>
          <date year="2022" />
        </front>
      </reference>
			
			<reference anchor="Occlum" target="https://occlum.io/">
        <front>
          <title>Occlum</title>
          <author>
            <organization>Occlum</organization>
          </author>
          <date year="2022" />
        </front>
      </reference>
			
    </references>

   
  </back>
</rfc>