<?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.7.35 (Ruby 3.3.5) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-scitt-receipts-ccf-profile-03" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.32.0 -->
  <front>
    <title abbrev="CCF Profile for COSE Receipts">CCF Profile for COSE Receipts</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-scitt-receipts-ccf-profile-03"/>
    <author initials="H." surname="Birkholz" fullname="Henk Birkholz">
      <organization abbrev="Fraunhofer SIT">Fraunhofer SIT</organization>
      <address>
        <postal>
          <street>Rheinstrasse 75</street>
          <city>Darmstadt</city>
          <code>64295</code>
          <country>Germany</country>
        </postal>
        <email>henk.birkholz@ietf.contact</email>
      </address>
    </author>
    <author initials="A." surname="Delignat-Lavaud" fullname="Antoine Delignat-Lavaud">
      <organization>Microsoft Research</organization>
      <address>
        <postal>
          <street>21 Station Road</street>
          <city>Cambridge</city>
          <code>CB1 2FB</code>
          <country>UK</country>
        </postal>
        <email>antdl@microsoft.com</email>
      </address>
    </author>
    <author initials="C." surname="Fournet" fullname="Cedric Fournet">
      <organization>Microsoft Research</organization>
      <address>
        <postal>
          <street>21 Station Road</street>
          <city>Cambridge</city>
          <code>CB1 2FB</code>
          <country>UK</country>
        </postal>
        <email>fournet@microsoft.com</email>
      </address>
    </author>
    <author initials="A." surname="Chamayou" fullname="Amaury Chamayou">
      <organization>Microsoft Research</organization>
      <address>
        <postal>
          <street>21 Station Road</street>
          <city>Cambridge</city>
          <code>CB1 2FB</code>
          <country>UK</country>
        </postal>
        <email>amaury.chamayou@microsoft.com</email>
      </address>
    </author>
    <date year="2026" month="June" day="08"/>
    <area>Security</area>
    <workgroup>SCITT</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <?line 79?>

<t>This document defines a new verifiable data structure (VDS) type for COSE Receipts and inclusion proofs specifically designed for append-only logs produced by the Confidential Consortium Framework (CCF) to provide stronger tamper-evidence guarantees.</t>
    </abstract>
  </front>
  <middle>
    <?line 83?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>The COSE Receipts document <xref target="I-D.ietf-cose-merkle-tree-proofs"/> defines a common framework for expressing different types of proofs about verifiable data structures (VDS), providing a standardized way to convey trust-relevant evidence. For instance, inclusion proofs guarantee to a verifier that a given serializable element is recorded at a given state of the VDS, while consistency proofs are used to establish that an inclusion proof is still consistent with the new state of the VDS at a later time.</t>
      <t>In this document, we define a new type of VDS and inclusion proof associated with an application of the Confidential Consortium Framework (CCF) ledger that implements the SCITT Architecture defined in <xref target="I-D.ietf-scitt-architecture"/>. This VDS carries indexed transaction information in a binary Merkle Tree, where new transactions are appended to the right, so that the binary decomposition of the index of a transaction can be interpreted as the position in the tree if 0 represents the left branch and 1 the right branch.
Compared to <xref target="RFC9162"/>, the leaves of CCF trees carry additional internal information for the following purposes:</t>
      <ol spacing="normal" type="1"><li>
          <t>To bind the full details of the transaction executed, which is a superset of what is exposed in the proof and captures internal details useful for detailed system audit, but not for application purposes.</t>
        </li>
        <li>
          <t>To allow the distributed system executing the application logic in Trusted Execution Environments (TEEs) to persist signatures to storage early. Receipt production is only enabled once transactions are fully committed by the consensus protocol.</t>
        </li>
      </ol>
      <section anchor="requirements-notation">
        <name>Requirements Notation</name>
        <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
        <?line -18?>

</section>
    </section>
    <section anchor="description-of-the-confidential-consortium-framework-ledger-verifiable-data-structure">
      <name>Description of the Confidential Consortium Framework Ledger Verifiable Data Structure</name>
      <t>This document extends the VDS registry of <xref target="I-D.ietf-cose-merkle-tree-proofs"/> with the following value:</t>
      <table align="left" anchor="verifiable-data-structure-values">
        <name>Verifiable Data Structure Algorithms</name>
        <thead>
          <tr>
            <th align="left">Name</th>
            <th align="left">Value</th>
            <th align="left">Description</th>
            <th align="left">Reference</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">CCF_LEDGER_SHA256</td>
            <td align="left">TBD_1 (requested assignment 2)</td>
            <td align="left">Historical transaction ledgers, such as the CCF ledger</td>
            <td align="left">RFCthis</td>
          </tr>
        </tbody>
      </table>
      <section anchor="merkle-tree-shape">
        <name>Merkle Tree Shape</name>
        <t>A CCF ledger is a binary Merkle Tree constructed from a hash function H, which is defined from the log type. For instance, the hash function for <tt>CCF_LEDGER_SHA256</tt> is <tt>SHA256</tt>, whose <tt>HASH_SIZE</tt> is 32 bytes.</t>
        <t>The Merkle Tree encodes an ordered list of <tt>n</tt> transactions T_n = {T[0], T[1], ..., T[n-1]}. We define the Merkle Tree Hash (MTH) function, which takes as input a list of serialized transactions (as byte strings), and outputs a single HASH_SIZE byte string called the Merkle root hash, by induction on the list.</t>
        <t>This function is defined as follows:</t>
        <t>The hash of an empty list is the hash of an empty string:</t>
        <artwork><![CDATA[
MTH({}) = HASH().
]]></artwork>
        <t>The hash of a list with one entry (also known as a leaf hash) is:</t>
        <artwork><![CDATA[
MTH({d[0]}) = HASH(d[0]).
]]></artwork>
        <t>For n &gt; 1, let k be the largest power of two smaller than n (i.e., k &lt; n &lt;= 2k). The Merkle Tree Hash of an n-element list D_n is then defined recursively as:</t>
        <artwork><![CDATA[
MTH(D_n) = HASH(MTH(D[0:k]) || MTH(D[k:n])),
]]></artwork>
        <t>where:</t>
        <ul spacing="normal">
          <li>
            <t>|| denotes concatenation</t>
          </li>
          <li>
            <t>: denotes concatenation of lists</t>
          </li>
          <li>
            <t>D[k1:k2] = D'_(k2-k1) denotes the list {d'[0] = d[k1], d'[1] = d[k1+1], ..., d'[k2-k1-1] = d[k2-1]} of length (k2 - k1).</t>
          </li>
        </ul>
      </section>
      <section anchor="transaction-components">
        <name>Transaction Components</name>
        <t>Each leaf in a CCF ledger carries the following components:</t>
        <sourcecode type="cddl"><![CDATA[
ccf-leaf = [
  ; Byte string of size HASH_SIZE(32)
  internal-transaction-hash: bstr .size 32

  ; Text string of at most 1024 bytes
  internal-evidence: tstr .size (1..1024)

  ; Byte string of size HASH_SIZE(32)
  data-hash: bstr .size 32
]
]]></sourcecode>
        <t>The <tt>internal-transaction-hash</tt> and <tt>internal-evidence</tt> values are internal to the CCF implementation. They can be safely ignored by receipt Verifiers, but they commit the transparency service (TS) to the whole tree contents and may be used for additional, CCF-specific auditing.</t>
        <t><tt>internal-transaction-hash</tt> is a hash over the complete entry in the <xref target="CCF-Ledger-Format"/>, and <tt>internal-evidence</tt> is a revealable <xref target="CCF-Commit-Evidence"/> value that allows early persistence of ledger entries before distributed consensus can be established. This mechanism is useful to implement high-throughput transparency applications in Trusted Execution Environments (TEEs) that only provide a limited amount of memory, while maintaining high availability afforded by distributed consensus. Using a secure one-way function <tt>f</tt> to publish an <tt>f(x)</tt> commitment to an <tt>x</tt> value that can be revealed at a later time is a common feature of distributed protocols (<xref target="COIN-FLIPPING"/>). The hash function used for <tt>internal-transaction-hash</tt> is the same hash function <tt>H</tt> as in the Merkle Tree construction for the selected verifiable data structure algorithm. For <tt>CCF_LEDGER_SHA256</tt>, this function is <tt>SHA256</tt>.</t>
        <t><tt>data-hash</tt> summarizes the application data included in the ledger at this transaction, which is a Signed Statement as defined by <xref target="I-D.ietf-scitt-architecture"/>. The hash function used for <tt>data-hash</tt> is also the same hash function <tt>H</tt> as in the Merkle Tree construction for the selected verifiable data structure algorithm. For <tt>CCF_LEDGER_SHA256</tt>, this function is <tt>SHA256</tt>.</t>
      </section>
    </section>
    <section anchor="ccf-inclusion-proofs">
      <name>CCF Inclusion Proofs</name>
      <t>CCF inclusion proofs consist of a list of digests tagged with a single left-or-right bit.</t>
      <sourcecode type="cddl"><![CDATA[
ccf-proof-element = [
  ; Position of the element
  left: bool

  ; Hash of the proof element: byte string of size HASH_SIZE(32)
  hash: bstr .size 32
]

ccf-inclusion-proof = bstr .cbor {
  &(leaf: 1) => ccf-leaf
  &(path: 2) => [+ ccf-proof-element]
}
]]></sourcecode>
      <t>Unlike some other tree algorithms, the index of the element in the tree is not explicit in the inclusion proof, but the list of left-or-right bits can be treated as the binary decomposition of the index, from the least significant (leaf) to the most significant (root).</t>
      <section anchor="ccf-inclusion-proof-signature">
        <name>CCF Inclusion Proof Signature</name>
        <t>The proof signature for a CCF inclusion proof is a COSE signature (encoded with the <tt>COSE_Sign1</tt> CBOR type) which includes the following additional requirements for protected and unprotected headers. Please note that there may be additional header parameters defined by the application.</t>
        <t>The protected header parameters for the CCF inclusion proof signature <bcp14>MUST</bcp14> include the following:</t>
        <ul spacing="normal">
          <li>
            <t><tt>verifiable-data-structure: int/tstr</tt>. This header <bcp14>MUST</bcp14> be set to the verifiable data structure algorithm identifier for <tt>CCF_LEDGER_SHA256</tt> (TBD_1).</t>
          </li>
          <li>
            <t><tt>label: int</tt>. This header <bcp14>MUST</bcp14> be set to the value of the <tt>inclusion</tt> proof type in the IANA registry of Verifiable Data Structure Proof Type (-1).</t>
          </li>
        </ul>
        <t>The unprotected header for a CCF inclusion proof signature <bcp14>MUST</bcp14> include the following:</t>
        <ul spacing="normal">
          <li>
            <t><tt>inclusion-proof: bstr .cbor ccf-inclusion-proof</tt>. This contains the serialized CCF inclusion proof, as defined above.</t>
          </li>
        </ul>
        <t>The payload of the signature is the CCF ledger Merkle root digest, and <bcp14>MUST</bcp14> be detached in order to force verifiers to recompute the root from the inclusion proof in the unprotected header. This provides a safeguard against implementation errors that use the payload of the signature but do not recompute the root from the inclusion proof.</t>
      </section>
      <section anchor="inclusion-proof-verification-algorithm">
        <name>Inclusion Proof Verification Algorithm</name>
        <t>CCF uses the following algorithm to verify an inclusion receipt:</t>
        <artwork><![CDATA[
compute_root(proof):
  h := HASH(
       proof.leaf.internal-transaction-hash
           || HASH(proof.leaf.internal-evidence)
           || proof.leaf.data-hash
       )

  for [left, hash] in proof.path:
      h := HASH(hash + h) if left
           HASH(h + hash) else
  return h

verify_inclusion_receipt(inclusion_receipt):
  let label = INCLUSION_PROOF_LABEL
  assert(label in inclusion_receipt.unprotected_header)
  let proof = inclusion_receipt.unprotected_header[label]
  assert(inclusion_receipt.payload == nil)
  let payload = compute_root(proof)

  # Use the Merkle Root as the detached payload
  return verify_cose(inclusion_receipt, payload)
]]></artwork>
        <t>A description can also be found at <xref target="CCF-Receipt-Verification"/>.</t>
      </section>
    </section>
    <section anchor="usage-in-cose-receipts">
      <name>Usage in COSE Receipts</name>
      <t>A COSE Receipt with a CCF inclusion proof is described by the following CDDL definition:</t>
      <sourcecode type="cddl"><![CDATA[
protected-header-map = {
  &(alg: 1) => int
  &(vds: 395) => 2
  * cose-label => cose-value
}
]]></sourcecode>
      <ul spacing="normal">
        <li>
          <t>alg (label: 1): <bcp14>REQUIRED</bcp14>. Signature algorithm identifier. Value type: int.</t>
        </li>
        <li>
          <t>vds (label: 395): <bcp14>REQUIRED</bcp14>. Verifiable data structure algorithm identifier. Value type: int.</t>
        </li>
      </ul>
      <t>The unprotected header for an inclusion proof signature is described by the following CDDL definition:</t>
      <sourcecode type="cddl"><![CDATA[
inclusion-proof = ccf-inclusion-proof

inclusion-proofs = [ + inclusion-proof ]

verifiable-proofs = {
  &(inclusion-proof: -1) => inclusion-proofs
}

unprotected-header-map = {
  &(vdp: 396) => verifiable-proofs
  * cose-label => cose-value
}
]]></sourcecode>
    </section>
    <section anchor="privacy-considerations">
      <name>Privacy Considerations</name>
      <t>See the privacy considerations section of:</t>
      <ul spacing="normal">
        <li>
          <t><xref target="I-D.ietf-cose-merkle-tree-proofs"/></t>
        </li>
      </ul>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>The security considerations of <xref target="I-D.ietf-cose-merkle-tree-proofs"/> apply.</t>
      <section anchor="trusted-execution-environments">
        <name>Trusted Execution Environments</name>
        <t>CCF networks of nodes rely on executing in TEEs to secure their function, in particular:</t>
        <ol spacing="normal" type="1"><li>
            <t>The evaluation of registration policies</t>
          </li>
          <li>
            <t>The creation and usage of receipt signing keys</t>
          </li>
        </ol>
        <t>A compromise in the TEE platform used to execute the network may allow an attacker to produce invalid and divergent ledger branches.
Clients can mitigate this risk in two ways: by regularly auditing the consistency of the CCF ledger; and by regularly fetching attestation information about the TEE instances, available in the ledger and from the network itself, and confirming that the nodes composing the network are running up-to-date, trusted platform components.</t>
      </section>
      <section anchor="operators">
        <name>Operators</name>
        <t>An operator has the ability to start successor networks with a distinct identity. The operator of a CCF network can recover the service by starting a successor network, for example a new CCF network with its own service identity, that endorses the ledger state of the previous instance. This provides service continuity after a catastrophic failure of a majority of the nodes. However, a malicious operator could exploit this mechanism and truncate the ledger’s history by initializing the successor network from an earlier ledger prefix, thereby omitting some later entries. Clients can mitigate this risk by auditing the successor ledger and verifying that their latest known receipts from the prior service are included in the successor’s ledger.</t>
      </section>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <section anchor="additions-to-existing-registries">
        <name>Additions to Existing Registries</name>
        <section anchor="tree-alg-registry">
          <name>Tree Algorithms</name>
          <t>This document requests IANA to add the following new value to the 'COSE Verifiable Data Structures' registry:</t>
          <ul spacing="normal">
            <li>
              <t>Name: CCF_LEDGER_SHA256</t>
            </li>
            <li>
              <t>Value: 2 (requested assignment)</t>
            </li>
            <li>
              <t>Description: Append-only logs that are integrity-protected by a Merkle Tree and signatures produced via Trusted Execution Environments containing a mix of public and confidential information, as specified by the Confidential Consortium Framework.</t>
            </li>
            <li>
              <t>Reference: RFCthis</t>
            </li>
            <li>
              <t>Related information: <xref target="I-D.ietf-cose-merkle-tree-proofs"/></t>
            </li>
          </ul>
        </section>
      </section>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC9162">
          <front>
            <title>Certificate Transparency Version 2.0</title>
            <author fullname="B. Laurie" initials="B." surname="Laurie"/>
            <author fullname="E. Messeri" initials="E." surname="Messeri"/>
            <author fullname="R. Stradling" initials="R." surname="Stradling"/>
            <date month="December" year="2021"/>
            <abstract>
              <t>This document describes version 2.0 of the Certificate Transparency (CT) protocol for publicly logging the existence of Transport Layer Security (TLS) server certificates as they are issued or observed, in a manner that allows anyone to audit certification authority (CA) activity and notice the issuance of suspect certificates as well as to audit the certificate logs themselves. The intent is that eventually clients would refuse to honor certificates that do not appear in a log, effectively forcing CAs to add all issued certificates to the logs.</t>
              <t>This document obsoletes RFC 6962. It also specifies a new TLS extension that is used to send various CT log artifacts.</t>
              <t>Logs are network services that implement the protocol operations for submissions and queries that are defined in this document.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9162"/>
          <seriesInfo name="DOI" value="10.17487/RFC9162"/>
        </reference>
        <reference anchor="I-D.ietf-cose-merkle-tree-proofs">
          <front>
            <title>COSE (CBOR Object Signing and Encryption) Receipts</title>
            <author fullname="Orie Steele" initials="O." surname="Steele">
              <organization>Tradeverifyd</organization>
            </author>
            <author fullname="Henk Birkholz" initials="H." surname="Birkholz">
              <organization>Fraunhofer SIT</organization>
            </author>
            <author fullname="Antoine Delignat-Lavaud" initials="A." surname="Delignat-Lavaud">
              <organization>Microsoft</organization>
            </author>
            <author fullname="Cedric Fournet" initials="C." surname="Fournet">
              <organization>Microsoft</organization>
            </author>
            <date day="2" month="December" year="2025"/>
            <abstract>
              <t>   COSE (CBOR Object Signing and Encryption) Receipts prove properties
   of a verifiable data structure to a verifier.  Verifiable data
   structures and associated proof types enable security properties,
   such as minimal disclosure, transparency and non-equivocation.
   Transparency helps maintain trust over time, and has been applied to
   certificates, end to end encrypted messaging systems, and supply
   chain security.  This specification enables concise transparency
   oriented systems, by building on CBOR (Concise Binary Object
   Representation) and COSE.  The extensibility of the approach is
   demonstrated by providing CBOR encodings for Merkle inclusion and
   consistency proofs.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-cose-merkle-tree-proofs-18"/>
        </reference>
        <reference anchor="I-D.ietf-scitt-architecture">
          <front>
            <title>An Architecture for Trustworthy and Transparent Digital Supply Chains</title>
            <author fullname="Henk Birkholz" initials="H." surname="Birkholz">
              <organization>Fraunhofer SIT</organization>
            </author>
            <author fullname="Antoine Delignat-Lavaud" initials="A." surname="Delignat-Lavaud">
              <organization>Microsoft Research</organization>
            </author>
            <author fullname="Cedric Fournet" initials="C." surname="Fournet">
              <organization>Microsoft Research</organization>
            </author>
            <author fullname="Yogesh Deshpande" initials="Y." surname="Deshpande">
              <organization>ARM</organization>
            </author>
            <author fullname="Steve Lasker" initials="S." surname="Lasker">
         </author>
            <date day="10" month="October" year="2025"/>
            <abstract>
              <t>   Traceability in supply chains is a growing security concern.  While
   verifiable data structures have addressed specific issues, such as
   equivocation over digital certificates, they lack a universal
   architecture for all supply chains.  This document defines such an
   architecture for single-issuer signed statement transparency.  It
   ensures extensibility, interoperability between different
   transparency services, and compliance with various auditing
   procedures and regulatory requirements.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-scitt-architecture-22"/>
        </reference>
        <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="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="CCF" target="https://github.com/microsoft/ccf">
          <front>
            <title>Confidential Consortium Framework</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="CCF-Ledger-Format" target="https://microsoft.github.io/CCF/main/architecture/ledger.html">
          <front>
            <title>CCF Ledger Format</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="CCF-Commit-Evidence" target="https://microsoft.github.io/CCF/main/use_apps/verify_tx.html#commit-evidence">
          <front>
            <title>CCF Commit Evidence</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="CCF-Receipt-Verification" target="https://microsoft.github.io/CCF/main/use_apps/verify_tx.html#receipt-verification">
          <front>
            <title>CCF Receipt Verification</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="COIN-FLIPPING" target="https://dl.acm.org/doi/epdf/10.1145/1008908.1008911">
          <front>
            <title>Coin Flipping By Telephone - A Protocol For Solving Impossible Problems</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
          <seriesInfo name="DOI" value="10.1145/1323293.1294280"/>
        </reference>
      </references>
    </references>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA9Vb63LbSHb+j6foyFVrckagRNozO+aOZ1eW5JEqsuRY9KQ2
tkpsAk2ylyDAAA3JHElTeY38y7PkUfIk+c7pbgC8yPZspbYq/iMC6Mu5n++c
bodhGBhtEtUXh4evxds8G+tEiXGWi8OLy2PxTkVKL0wRyNEoVzdfGhVnUSrn
WCzO5diEWplxWETamDB3Q8IoGocLu0C4/ywojEzja5lkKWaZvFSBXuT8qzC9
/f0X+71A5kr2xaWKylybZXA7wcPh6WAQzG774jQ1Kk+VCY9oxyCSpi8KEwdF
OZrrotBZapYLLH16PHgdLHQ/EMJkUV8sVYGfRZabXI2L6nk5rx8DWZpplveD
UFimTlQ6E690Pptmya8YneUg5XUuy3SajVUuLk8HeOsltfFBzaVO+mKKVToj
t8pfSESdCFTKyBABIEeBhXdTpVM8yKJQ4o/f4UuUxSDh6ffPey++e0rPkEVf
HMl8DhHGhkeUqcnx8meVz2W6rOg+SE2mUyWOVKInqTThmbyRZWw5kKn+VRrI
qS/e6CjPimxsoNBCyTyaNijqdcWl4YHiXSbjmqLDV13Re/2qpulQzke5jieq
5lmmJk7+Mvfrg+F5k+D3/1zReqjiXEfidVaSVv+BJI7tjl9F5MFclvlSHE7l
XC6z8h8pSN65E7mdP0ttkGawA6NvFFn9u9eHL7rf9+jnaXjUYdeMskKFc5XP
4ItEHTlmRubPH7zLNmdYZyaOtFGRKXMQvvkuCHQ6bm6OqEF/4Hs21uwcZulY
xyo1WiYCD+SIupyT08zVbZbPduxwmU9IZjtTYxZFf29vos20HBGzexXrewgp
O4HdJTxTkFcevubd1/ZE6LKfhf38yB61TN1uOtvD3D1oIN1rsrmX8GqdqZkn
FQGH2XyuTXh8Q+xFapMEO0D4AX8PEWWhruViUezdqFyPl9fmE9PwJLJ7q2pp
R5OLz+EvNFxH1ko3CHOjRHPU/yV1zp7Cm5X1icSL0/Pw9dnp27en5z+v24lO
xetELxY6nYhXSzFQiVpMkS1EKA4oEyGaZwkpVFxmyQ2NOp0vMkT+ETIUvuPP
vHiEjTjpyGjegfPuxZneU4t4vNfd73S7z7/D3/0fXuz/0OG/3a5doQDpqiDj
tmQKcXRx2hfVnGe9Z70Xzzrd3ovnvR/2g4AMHJ6MsZfHZ6+xM7zQTDXoCcIw
RKqgEI/AHwzwUiB7lnNMEbEaI14XQopU3QorL0n8xNJICiQl259o/XJ02RaU
4DZzMWJuLHQaJSUlQWE9WxQLFbHwk2SJbQrkAxXzZGhMpXGYpfiQZJOCZsRl
hK+jpTBTJb7osqIFEwA5GU0lEyRKs5T8zcj5Al7pDVNMSpkjJyhVdKwk5jqO
E8SNJ5TQeWOyDpKLWmOrEtLdXbgSph4eGnIjTwDX44o2YlF9WuQKlgEbifUY
iZmWIekVIht7CclRVprHZV5Yoe86Hmkt+gphyzzWv0Jct3JJMkBOv1FLC2RA
Y6JuwLDwEuiwxVKKl3ja3VRUJSFaSzp6SJJTafA8QWBN2RxlgrRDdGILlgsM
CSLJ8hi0NMci5yjik3QJFnbF7ZRAHOgsdGFA1LISAUwLThzT1grzRokupm7n
dJ1U2q8wOknqlYy4RVTgjch+13e2VCV4CXb0XMEETlNhmh4A4pTTpnMCNnKs
wfM3LVsAKGWRxpqx3RyEwqITF2b87l9rwzawW5b1fGElW/ASDD3FQSMNOEKJ
JjLKzXT48NAR7OBEfCRziiEYHKtPJGOouZBs7qLKmvwbnI90KgE03nCKFgOk
aFIbDNfKpJ5qlWZ92CqOaM31ZApZFpnlhF65FWNYCIVJ3ZQOk0QPcoWqCLIc
0VcoDA5EIpZWFtUCOuVnwhBCj8U+LJBcrRJaooCFRlgzmrL2ujV57nUnQF5c
gAkm/u7OwZWHh123gLyxbkqZivYpWJJLIeOYaYBCmUL7o5YjOT6tMM6SJLsl
f12UOQhXRT8IulBMRjKJ7ZgSZhwrA6hVeKE0JQGFRSX4Z98BK5pCTVEitBXK
0IRbNpiCIk1WWItgOVkTxS6RXNgoUtHqt4PDYXsm177C9GIJd5oLYHUNNY4Q
l9LM+Ghd2bbnp+PYkcQo7xvDHXM9IpL9WpYFEgMNaC6DoA/gDYoHFLIw49gO
xafj9EYjklsnaA2Ojwsb5sE3dhAFVxXMFt4WJsvlBPFI5smyU6GKRRXVSUCc
ZlRKgSvGQ6Q2jZmUsRQW0pg6DVGUUWlRcoLi5I/48eQJ9vn3UufOUc8zi7Bt
ApkhDsO540LsvHl/OdjZtX/F+QX/fnf8L+9P3x0f0e/Lk4Ozs+pH4EZcnly8
Pzuqf9UzDy/evDk+P7KT8VasvAp23hz8FV9I8zsXbwenF+cHZzvWKpr5ntiF
5DacLECGjqBAa0mvDt/+9391n8M5/gne0et2XyDl2Ycfun98jgeEhtTuxvK1
jxDaMqDIIHMOKhSp5UIbmRS75MjFNLtNBQUVCPKbDySZq774cRQtus9/ci+I
4ZWXXmYrL1lmm282Jlshbnm1ZZtKmivv1yS9Su/BX1eevdwbL3/8c0KZJez+
8OefAgIdRyznxe9LFa6W+KWGCkcEFS49VFhHdeoTcmNcVGkwVxPyzyXtuAXM
VDm0jlw3MilRUQT34hxEiHvxC73A3yb993AFxjaRCu6BrYJ7hMzrs+Ojn4/f
XUMhve++x5jBq6Prrmjl8BpVWGsjN2ZCe20MONHkyIQUV0KgzYywnKKkWG65
oZjsUua9cBA3uOuLJzWMCglGhRWMCpkVODp1JF7uUH7YsaD/5c6jAhUHyQQk
mSkA/QM7fSMxisupXEDmB01qOEBvJlEOIrwqgd88Q4gVUwmMMy5Ty+ZJI8T7
9M4DORllE8Yj6yCOvq0uQ6F6uCH+Ia06dL9pI2heDE8OLk+uL0//7Zg/P+sh
4BnGxxTCmsRDs1lMsoOtAuVRykwoDMOMhulwNZAOrlPxUny8G3z8sP/xalfg
b5f+djodfkhDPH4EPvnXCm+Zte1OiKPWm8FJu+LLC8fIGdFB2WxRMqhzdHhg
uopvkDswltgiPA2DLtouWpUG8zmZ4i02rmTRHC2oalFxk0DkVcMi36X0gDTu
Mkxm8y6R03FuWOmkoVFQY52LsMDAa49TtVDzhVlahnRRq7b50ZKFqb/99lsA
AbXuHtqQNhHfanf47eqqdjl2bKpgFbVqIJMEAG2WUhSWJANgnTHPaWPn5urx
h/2regd68ruQHabiJ9HdxWwjZpRKWABU8WLLRXYLb6DIdosEPSc5MrpNMaul
OwrGMBM/4uHHl6I3axNc3WIElvc09JUGc3N0nToBpZVcc+rVFig7kIRkkwUM
rujn5w/7/dkVws29sI+zfnrVbu9arhjpYnYoPt5/vMfqQD+E+4AXAPRTm+FD
0d/+hcglCgsMOfr4Ydbtz3ofr7D70dPr1qwXzrrtaqI3FnhK/JRdBeNimkTO
Qq+69atvaw+iL7xUWH/vWZfi7VU6ga6xmwgF9rNIZdAIpwR6YQrALEFwLOFS
rHzG/o0w5muG1WwQVXOthEWEGjqg/jov8lJ8CIT4k3jV8CByTXhl7V+tZ702
Rnk0Gja8NSQT7AtqUYgOz3rWC3jFATJZY0VA3nkG2XX3e89t0Gqu6CvevjD1
Sq1up0PD28FXk8j5YxtJV7WjDR/lY8hxZrhB1VD4RJSrGpO78ok0UFV/bFPs
GEtfERVyTBaODJblFqDmKy00zpOE2g1Psn2/qqagYoeKbsTKGw0A3Bpctv3O
SAmJK6fobIAxLTEwl0vamItzLgOq4meXG32+vWNLBogTFvc5oXB+tOHpRuUO
XxPHxkcnV8Hc3W00V6k0e0yovG6ubpRMOI/b6WutUWAcFr7rLHActlWDryy4
V8R+xG5AFJEbjBR4X61u6qrA6abqW6jYFd9zFSHg6WJO1LlqC+KuFCymKEdD
M82zcjKldLaipUalVPyOIok4YyzuW2KUAyAESj5z6tUTe3M1z/Klb8hQDxX1
X0rOQCQJeYNqUI50opFz5HhsWzuwtq0C6Ij3hetKURRWlGlC6klVCXA4HnL1
Vtq+jqQ3rU/tobNQlgU1nfD+07CpIidaq1ffXar7OFbrvvOmuCIk9ppk+poN
EoJNNPu+Dw8u7awiqMrUv2DGZKQFgeLV6cOTocUnG7CmgoDNJkGB1Mag8PGe
q/QY1KK/Lehu11Z3TcDhwR65YxXIhsDQ87nMEceKjWqcd+UmV1z3EZwfcCuH
eK4FsdKRuLRdXTplspYta8gDs/lMj+px6Teopj2SIvv/I/InHMlPq47hW25z
BgHH9/XGq+tiNvAamzDBKEhcTiZVh9GDVSpewiwPXTtLE+RcSce8coWafF5+
u9Z9c9/xjRZElsuyxKZHD77qVpIb21+Bx49lzu1JkymruLc0gjY7LBpBzneY
+4cWYYm+AFZ6+ZPw2II/LKTBsj3+8OFbscHoVfBgM/P7NNEzUJnBVDLwkNvE
Vmm12F3tPjaEsdpYLLj9pT6Rl+jq25oGq4xbKW9DP1WSwLKy0c78Ym90t1ED
Kuk6X3ycAlJZUlUGZ0S08plqFYcAt5gjO630bQOv56qzZrO92GKx1uX5jKQe
3bI1Ylw3EYY04po26Q7F4auLd1zBtn3YsIFmHWE2eqt5s71GxFAkt45LIKBM
6+epkqhKkYjekpAUKU1VDehceRDTWNzOEMi1CCeI8ivhai0ydir5rGzXnOxD
yzZp1TLivpZjfJVvwOlvxPDR3kWfgOIeodmhgxaOBF6RcKEy3gy+IqgJ22Xi
053H+gUtbtfAekAXoIBKmIav2J6TtzPhYSWLoRMGH6o4Nzo9OD9YaUk93oax
Bjugya2QqxrSyKYJfMZov14NayGq34xQW0KYlwlfqdGpAwZ1O2ILMbvN/ChH
QMLexuQyyWTs5VfTrDfaXs1+hE0WFhx7nVBLP5raTM5NG9IQxBOp6miPm+c5
x57SWFHwclXI2XB8q7hNuTsROMjJbRVUKnSiCP4mJBWzVtcIlecZUUBeiqRv
U81j7FOAjTMOxr+DXhv61sNe87JB3d+zuRmEbESkymsgLHu/YPVM0lVgrufg
iLsmwlpMRZsO46ei75oQ7hTfUUgRvPMozvRj6d/9vZ2/bZ4vg9prExpjKzTl
h3AhTO7ygbLVLufsK9KwncS51o2tiWfc9a2gPpHNcs0N7Qj6zJ0klRR0jShX
0GAqpkHgLmdUkrt2kmttvGGRUVuJIw8wwun54dn7y9OL8+u37y4uEKwOXh2f
0c23Ao5mWnaYbmjFr9Rp2Oq1tdW2W9vjj6+Z84F3uKp33JzkbfflS5HqpNrE
vxVbDIM08ATF00oH9B1ZtIMHlQ+7ZWpxOllSB3+Tll0/vm3h0IGIG916QiKM
pkdk5mXKVZUtl7fd2gFMJzz7vqATNoh49folNb8bLzxOfQQ11IdLLsvWbnZ4
dHRmQ6K2d4VqQFspI7TKCOdyAYFasAj39FhRM5T9Q+smLvri2Yvv+GUPr76x
t8ucMf1knzhRecAYkpuLlkt03XZf+OOmTg2TtibQjjsRsXc+QUIHi4GCajEi
pLncL78rP29Z/rOpb/OyxEoO+fsUsInZt6TBYH1YQXUHosH67CsXCSzQqYZa
dW7k3tDrdnVtKC5oyGCbZdzEC5L+9zx/Y8evMosnSBn6RkZLPo6DVnLbjgmC
S+UylvserXynRoiD8gwpthy20eL+gvHG6gNGEO7j2tLbj+4Iri59s/dzfSKb
51Jl6ECRV0v5aCenvmJ14YAMglpOx8f2gN32dcCwzhtHMpQsZG50VCYyd3cb
qJIiGVYNcQfw3MWBjAopVQQ9OzSicog+MKLnEMNTbDDhYgaUzNSSIw2FUKR6
XVQQEgSKRSINXb6oLxDZOxPuNhAzyhWAvaVA0c8grM4sInJ3zrAgqNa2tIg1
zGXC5w0Wa9kLI3Q0dphorkcoiM7hKBPJG9ENKF3MmKzbjC5kFX3bnZ2QbOhQ
wrVHqxsF/gaUP/ytkN2fmIaVyWNloimDEWOozbhxdcdeIfMS8eeDdNpuO3lJ
JTHf0Ekbp4teSKhTVTK2MDKiw+h8bil2N3mspbhS1bHi51I3Oy9T1le5CE1G
JQydUDprrLRUnyFYc71YkGkDCkLDMBj3RBjC1mGuC8nXPGBsdAoMzgo6fvJG
7JIOdf0QJ4wLn2ZpbaxakvsrDetnJRKc9I1o3xcfLe1erqm5vuGuu9onCdC6
y2LNZZkcqvnpfM2v6WnateJUaQyW/TmQ1cnKrbVFDlCXlUWlzHWI7RemskOn
pe3UUmNUgi8j6SLkApW2GMMAXFtUwg3+lnFQcbuwRjviJLtVEMIujyAPpY0r
uUVZmcTcBMm06wPWnW2yFeiYT8EazPzPf/wnqkQ+0F/ag1JtuCDydrMhVXcq
nnI/nipTJxUIYqw/7dpKHitldDmHVuHuju0FuzZ9R3zBPUdrflgT0XALC62a
ho+gR/ughrFnpj7u1h6ENIBFvErsyc5qI7XaiiXjrnHz7VOqgtcTAPziwDUr
OAAff2LbngBncTSlEIpBT2yXs76kIO6e8K16QInQV9YP67dC3A2Mwm5Nffc4
XgMDfAnYAg9b1j9llPdogV48rQp5Tnjn9n9WrLcV8IXhTF/0tl8EaWNE42ZJ
Xxys3xG2Jzfu6GxCthzWSIj0u9L/JX027opVF4xvtPzSeYor520MmGvuE/IB
RlTHR39ZpxGK7QUneyj2O24yU5+lukTTR4b/A13fBkyg1wm3DBub9LcCCrrV
PEJiC/4XYm89NGM1AAA=

-->

</rfc>
