<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.6.35 (Ruby 3.0.2) -->
<?rfc rfcedstyle="yes"?>
<?rfc tocindent="yes"?>
<?rfc strict="yes"?>
<?rfc comments="yes"?>
<?rfc inline="yes"?>
<?rfc text-list-symbols="-o*+"?>
<?rfc docmapping="yes"?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-yang-teep-tee-dpr-00" category="std" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.17.4 -->
  <front>
    <title abbrev="TEE-DPR">TEE Distributed Provisioning Relay</title>
    <seriesInfo name="Internet-Draft" value="draft-yang-teep-tee-dpr-00"/>
    <author initials="P." surname="Yang" fullname="Penglin Yang">
      <organization>China Mobile</organization>
      <address>
        <postal>
          <street>No.32 Xuanwumen West Street</street>
          <city>Beijing</city>
          <country>China</country>
        </postal>
        <email>yangpenglin@chinamobile.com</email>
      </address>
    </author>
    <author initials="T." surname="Pang" fullname="Ting Pang">
      <organization>Huawei Technology Co.,Ltd.</organization>
      <address>
        <postal>
          <street>127 Jinye Road, Yanta District</street>
          <city>Xi'an</city>
          <country>China</country>
        </postal>
        <email>pangting@huawei.com</email>
      </address>
    </author>
    <author initials="X." surname="Zhang" fullname="Xiaomeng Zhang">
      <organization>AntGroup</organization>
      <address>
        <postal>
          <street>World Financial Center, No.1 East 3rd Ring Middle Road</street>
          <city>Beijing</city>
          <country>China</country>
        </postal>
        <email>zhangxiaomeng.zxm@antgroup.com</email>
      </address>
    </author>
    <date year="2023" month="July" day="7"/>
    <area>Security</area>
    <workgroup>TEEP</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <?line 89?>

<t>Big data computing framework uses Master-Worker structure to provision applications and process data. When process remote attestation for this kind of framework in TEE cluster, Verifier or Relying party needs to know the dynamic reference value of Worker nodes. This document shows how to use Master to relay Worker provision information to Verifier or Relying Party and its relevant protocol.</t>
    </abstract>
  </front>
  <middle>
    <?line 93?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>In big data area, different from stand-alone application, distributed application like machine learning always need to be split by Master-Worker framework like MESOS<xref target="MESOS"/>, YARM<xref target="YARN"/>, Spark<xref target="Spark"/> or kubernets<xref target="Kubernetes"/> . The Master node in charges of splitting distributed application to computing tasks. Then these tasks will be deployed on Workers for execution. TEE could be used to protect the application and its secret data, if only the whole process lifecycle is covered by TEE cluster. If a Verifier or Relying Party would like to attest distributed application running in TEE cluster, it has to verify the Worker nodes since the Worker nodes are the real place in where specific tasks and data are processing. The Master node conducts the splitting process and provision specific tasks or executable code to Workers after running the main part of application. Master node could relay these tasks or executable code information to Verifier or Relying party for remote attestation. As a result, Verifier or Relying Party could assess the trustworthiness of the lifecycle of distributed application in TEE cluster. This document specifies the method and protocol of this distributed TEE provision relay.</t>
    </section>
    <section anchor="terminology">
      <name>Terminology</name>
      <t>The following terms are used:</t>
      <ul spacing="normal">
        <li>Master: The node that runs the main application and in charges of splitting and distributing tasks to Worker nodes.</li>
        <li>Worker: The node that runs the specific tasks that generated by Master.</li>
        <li>Relay: Master transfer the original provision message to Verifier/Relying party for remote attestation.</li>
      </ul>
    </section>
    <section anchor="use-cases">
      <name>Use Cases</name>
      <t>In privacy-preserve computing, participants want to create a unified machine learning model without leaking private data owned by each other. TEE cluster as a trusted party could make sure data inside this environment is integrated and confidential. If the federated machine learning participants trust this TEE cluster and application, they could transfer their data in that TEE cluster and generate the final machine learning model. The method and protocol described in this document could help privacy-preserve computing participants to process remote attestation of TEE cluster during runtime.</t>
    </section>
    <section anchor="architecture">
      <name>Architecture</name>
      <t>The following figure shows the architecture of TEE distributed provisioning relay. In this architecture, Master runs the main part of distributed application, which will generate tasks or executable code and provision to Workers. Master accepts remote attestation challenge from Verifier and response Evidence of Master. Then, Master relay provisioning information of Workers to Verifier/Relying Party. In the end, Evidence of Workers will be transfered to Verifier/Relying Party by Master. The security or trust logic of this architecture is to build a trust chain between Master and Workers, in which the Verifier/Relying party could trust the Master first and let the Master to relay the provisioning information of Workers to Verifier/Relying Party.</t>
      <figure anchor="norm-arch">
        <name>Distributed Application Remote  Attestation</name>
        <artwork><![CDATA[
                      +-------------+
                      |  Verifier/  |
                      |Relying Party| 
                      +-------------+
                            ^
   1. Remote attestation    | 2. Return Evidence of Master
      of Master             | 4. Relay Worker runtime provisioning
                            v 6. Return Evidence of Workers
                +-----------------------+
                |Master/Main application|
                +-----------------------+
   3. Generate tasks &      ^ 5. Remote attestation of Workers
   distribute to Workers    | 
       ---------------------+----------------------
       |                    |                     |
       v                    v                     v
   +--------+           +--------+            +--------+
   | Worker |           | Worker |            | Worker |
   +--------+           +--------+            +--------+
]]></artwork>
      </figure>
      <t>The steps of TEE distributed provisioning relay is described below.</t>
	  <t>- Verifier/Relying party sends challenge to Master and tries to assess the trustworthiness of this distributed application runs in TEE cluster.</t>
	  <t>- Master generates Evidence of itself and return to Verifier/Relying Party.</t>
	  <t>- Master generates tasks  and provisions to Workers.</t>
	  <t>- Meanwhile, Master transfer the tasks provisioning information and Worker information back to Verifier/Relying Party to generate reference value of Workers.</t>
	  <t>- Master challenges Worker for Evidence.</t>
	  <t>- Master sends the Evidence of Workers back to Verifier/Relying Party for attestation.</t>
    </section>
    <section anchor="worker-runtime-provisioning-relay">
      <name>Worker Runtime Provisioning Relay</name>
      <t>Worker runtime provisioning relay message is sent from Master to Verifier/Relying Party. It's function is to provide Verifier/Relying Party information to generate reference value of Workers. This message can only be sent after remote attestation of Master.</t>
      <section anchor="rationality">
        <name>Rationality</name>
        <t>In big data computing framework, Reference Value of Workers may change during runtime based on computing stages and input data source. Thus it is not rational to generate Reference Value of Workers statically. Instead, Master is the manage and monitor center of the tasks in Workers. The following reason shows that Master is the reasonable choice to generate and relay Worker runtime provisioning message.</t>
        <ul spacing="normal">
          <li>Master runs the main part of distributed application which reference value is static and could be pre-generated.</li>
          <li>Master is task generator, it in charges of generating different tasks or executable code for Workers in different processing stage.</li>
          <li>Master is computing resource manager of TEE cluster, it in charges of orchestrating TEE hardware resource.</li>
        </ul>
      </section>
      <section anchor="worker-runtime-provisioning-relay-by-cddl">
        <name>Worker Runtime Provisioning Relay by CDDL</name>
        <t>Worker runtime provisioning relay message includes 3 message type, task-serialized, hardware-manifest and software-manifest. The following figure shows the message framework of Worker runtime provisioning relay in CDDL.</t>
        <figure anchor="frame">
          <name>TEE Distributed Provisioning Relay Message Framework</name>
          <artwork><![CDATA[
tee-dpr-message = $tee-dpr-message-type .within 
tee-dpr-message-framework
tee-dpr-message-framework = [
    type: $tee-dpr-type,
    optionis: { * tee-dpr-option}
]
tee-dpr-option = (uint =>any)
$tee-dpr-message-type /= tee-task-serialized
$tee-dpr-message-type /= tee-worker-hardware-manifest
$tee-dpr-message-type /= tee-worker-software-manifest

$tee-dpr-type = uint .size 1
TEE-task-serialized = 1
TEE-worker-hardware-manifest = 2
TEE-worker-software-manifest = 3
]]></artwork>
        </figure>
        <section anchor="task-serialized">
          <name>Task serialized</name>
          <t>Task serialized represents the execution content like executable code of task.  Master generate and distribute tasks to workers by its default mechanism. Meanwhile Master needs to relay this tee-task-serialized message to Verifier/Relying Party for remote attestation of Workers.</t>
          <artwork><![CDATA[
tee-task-serialized = [
    type: TEE-task-serialized
    options:{ 
        Recommended-serialized-type: uint .bits serialized-type
        serialized-payload = bstr
    }
]
serialized-type = &(
    json: 0
    protobuf: 1
    thrift: 2
    pre-defined: 3
)
]]></artwork>
        </section>
        <section anchor="worker-hardware-manifest">
          <name>Worker Hardware Manifest</name>
          <t>Worker hardware manifest message needs to be relayed to Verifier before remote attestation. Worker hardware manifest is intent to describe the specific hardware environment of Workers, which includes CPU, memory, and other necessary information.</t>
          <artwork><![CDATA[
tee-worker-hardware-manifest = [
    type: TEE-worker-hardware-manifest
    options:{
        CPU-core-number: uint .size 1
        CPU-architecture: text .size(1..128)
        CPU-version: text .size(1..128)
        CPU-frequency: unit .size 2
        ;the cpu frequency unit is MHZ
        MEMORY-size: uint .size 4
        ;the memory size unit is MB 
    }
]
]]></artwork>
        </section>
        <section anchor="worker-software-manifest">
          <name>Worker Software Manifest</name>
          <t>Worker software manifest message includes operation system version, memory allocation method, memory protection method, etc. This message needs to be relayed to Verifier before remote attestation. Worker software manifest message is intent to describe the specific software environment of Worker, which includes operation system, memory, and other necessary information. Verifier will use this message to generate reference value.</t>
          <artwork><![CDATA[
tee-worker-software-manifest = [
    type: TEE-worker-software-manifest
    options:{
        os-version: text .size(1..128)
        memory-allocation: text .size(1..128)
        sadr: bool
        canary: bool
        worker-executor-version: text .size(1..128)
        time-stamp: text .size(1..128)
    }
]
]]></artwork>
        </section>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>This protocol is used to relay Worker TEE provisioning message between Master and Verifier, between which secure channel could be built by TLS and etc. The secure channel between Worker and Verifier could also use TLS or other secure protocol to protect provisioning message.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document does not require actions by IANA.</t>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification.  These words are often capitalized.  This document defines these words as they should be interpreted in IETF documents.  This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        
        
        <reference anchor="I-D.ietf-teep-protocol">
          <front>
            <title>Trusted Execution Environment Provisioning (TEEP) Protocol</title>
            <author fullname="Hannes Tschofenig" initials="H." surname="Tschofenig">
         </author>
            <author fullname="Mingliang Pei" initials="M." surname="Pei">
              <organization>Broadcom</organization>
            </author>
            <author fullname="Dave Wheeler" initials="D. M." surname="Wheeler">
              <organization>Amazon</organization>
            </author>
            <author fullname="Dave Thaler" initials="D." surname="Thaler">
              <organization>Microsoft</organization>
            </author>
            <author fullname="Akira Tsukamoto" initials="A." surname="Tsukamoto">
              <organization>ALAXALA Networks Corp.</organization>
            </author>
            <date day="3" month="July" year="2023"/>
            <abstract>
              <t>   This document specifies a protocol that installs, updates, and deletes Trusted Components in a device with a Trusted Execution Environment (TEE).  This specification defines an interoperable protocol for managing the lifecycle of Trusted Components.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-teep-protocol-15"/>
        </reference>
      </references>
      <references>
        <name>Informative References</name>
		<reference anchor="I-D.ietf-teep-architecture">
          <front>
            <title>Trusted Execution Environment Provisioning (TEEP) Architecture</title>
            <author fullname="Mingliang Pei" initials="M." surname="Pei">
              <organization>Broadcom</organization>
            </author>
            <author fullname="Hannes Tschofenig" initials="H." surname="Tschofenig">
              <organization>Arm Limited</organization>
            </author>
            <author fullname="Dave Thaler" initials="D." surname="Thaler">
              <organization>Microsoft</organization>
            </author>
            <author fullname="Dave Wheeler" initials="D. M." surname="Wheeler">
              <organization>Amazon</organization>
            </author>
            <date day="24" month="October" year="2022"/>
            <abstract>
              <t>   A Trusted Execution Environment (TEE) is an environment that enforces that any code within that environment cannot be tampered with, and that any data used by such code cannot be read or tampered with by any code outside that environment.  This architecture document motivates the design and standardization of a protocol for managing the lifecycle of trusted applications running inside such a TEE.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-teep-architecture-19"/>
        </reference>
		<reference anchor="I-D.ietf-teep-usecase-for-cc-in-network">
          <front>
            <title>TEEP Usecase for Confidential Computing in Network</title>
            <author fullname="Penglin Yang" initials="P." surname="Yang">
              <organization>China Mobile</organization>
            </author>
            <author fullname="chenmeiling" initials="" surname="chenmeiling">
              <organization>China Mobile</organization>
            </author>
            <author fullname="Li Su" initials="L." surname="Su">
              <organization>China Mobile</organization>
            </author>
            <author fullname="Ting Pang" initials="T." surname="Pang">
              <organization>Huawei Technology Co.,Ltd.</organization>
            </author>
            <date day="5" month="July" year="2023"/>
            <abstract>
              <t>Confidential computing is the protection of data in use by performing computation in a hardware-based Trusted Execution Environment. Confidential computing could provide integrity and confidentiality for users who want to run applications and process data in that environment. When confidential computing is used in scenarios which need network to provision user data and applications in the TEE environment, TEEP architecture[I-D.ietf-teep-architecture] and protocol [I-D.ietf-teep-protocol] could be used.  This document focuses on using TEEP to provision Network User data and applications in confidential computing.  This document is a use case and extension of TEEP and could provide guidance for cloud computing, [MEC] and other scenarios to use confidential computing in network.
              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-teep-usecase-for-cc-in-network-04"/>
        </reference>
        <reference anchor="Spark" target="https://spark.apache.org/docs/3.3.2/cluster-overview.html">
          <front>
            <title>Spark Overview</title>
            <author initials="S." surname="Community" fullname="Spark Community">
              <organization/>
            </author>
            <date year="2023" month="March" day="02"/>
          </front>
        </reference>
        <reference anchor="YARN" target="https://hadoop.apache.org/docs/current/hadoop-yarn/hadoop-yarn-site/YARN.html">
          <front>
            <title>Apache Hadoop YARN</title>
            <author initials="A. H." surname="Community" fullname="Apache Hadoop Community">
              <organization/>
            </author>
            <date year="2022" month="July" day="29"/>
          </front>
        </reference>
        <reference anchor="MESOS" target="https://mesos.apache.org/documentation/latest/architecture/">
          <front>
            <title>MESOS Architecture</title>
            <author initials="A. M." surname="Community" fullname="Apache MESOS Community">
              <organization/>
            </author>
            <date year="2023" month="March" day="02"/>
          </front>
        </reference>
        <reference anchor="Kubernetes" target="https://kubernetes.io/docs/concepts/architecture/cloud-controller/">
          <front>
            <title>Kubernetes Cloud Controller Manager</title>
            <author initials="K." surname="Community" fullname="Kubernetes Community">
              <organization/>
            </author>
            <date year="2022" month="December" day="17"/>
          </front>
        </reference>
        <reference anchor="MapReduce" target="https://hadoop.apache.org/docs/current/hadoop-mapreduce-client/hadoop-mapreduce-client-core/MapReduceTutorial.html#Overview">
          <front>
            <title>MapReduce Overview</title>
            <author initials="A. M." surname="Community" fullname="Apache MapReduce Community">
              <organization/>
            </author>
            <date year="2022" month="July" day="27"/>
          </front>
        </reference>
      </references>
    </references>
    <?line 244?>

<section anchor="appendix1">
      <name>Appendix 1 Full CDDL of TEE DP protocol</name>
      <t>The full CDDL of TEE distributed provisioning protocol is shown below.</t>
      <artwork><![CDATA[
tee-dpr-message = $tee-dpr-message-type .within 
tee-dpr-message-framework
tee-dpr-message-framework = [
    type: $tee-dpr-type,
    optionis: { * tee-dpr-option}
]
tee-dpr-option = (uint =>any)
$tee-dpr-message-type /= tee-task-serialized
$tee-dpr-message-type /= tee-worker-hardware-manifest
$tee-dpr-message-type /= tee-worker-software-manifest

$tee-dpr-type = uint .size 1
TEE-task-serialized = 1
TEE-worker-hardware-manifest = 2
TEE-worker-software-manifest = 3

tee-task-serialized = [
    type: TEE-task-serialized
    options:{ 
        Recommended-serialized-type: uint .bits serialized-type
        Serialized-payload = bstr
    }
]
serialized-type = &(
    json: 0
    protobuf: 1
    thrift: 2
    pre-defined: 3
)

tee-worker-hardware-manifest = [
    type: TEE-worker-hardware-manifest
    options:{
        CPU-core-number: uint .size 1
        CPU-architecture: text .size(1..128)
        CPU-version: text .size(1..128)
        CPU-frequency: unit .size 2
        ;the cpu frequency unit is MHZ
        MEMORY-size: uint .size 4
        ;the memory size unit is MB 
    }
]

tee-worker-software-manifest = [
    type: TEE-worker-software-manifest
    options:{
        OS-version: text .size(1..128)
        Memory-allocation: text .size(1..128)
        Sadr: bool
        Canary: bool
        Worker-executor-version: text .size(1..128)
        Time-stamp: text .size(1..128)
    }
]
; labels of mapkey for tee dp message parameters, uint (0..15)
Recommended-serialized-type = 0
Serialized-payload = 1
CPU-core-number = 2
CPU-architecture = 3
CPU-version = 4
CPU-frequency = 5
MEMORY-size = 6
OS-version = 7
Memory-allocation = 8
Sadr = 9
Canary = 10
Worker-executor-version = 11
Time-stamp = 12
]]></artwork>
    </section>
  </back>
  <!-- ##markdown-source:
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
NgAA

-->

</rfc>
