<?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.39 (Ruby 3.4.9) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-opsawg-yang-provenance-05" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.33.0 -->
  <front>
    <title abbrev="yang-data-provenance">Applying COSE Signatures for YANG Data Provenance</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-opsawg-yang-provenance-05"/>
    <author initials="D." surname="Lopez" fullname="Diego Lopez">
      <organization>Telefonica</organization>
      <address>
        <email>diego.r.lopez@telefonica.com</email>
      </address>
    </author>
    <author initials="A." surname="Pastor" fullname="Antonio Pastor">
      <organization>Telefonica</organization>
      <address>
        <email>antonio.pastorperales@telefonica.com</email>
      </address>
    </author>
    <author initials="A." surname="Huang Feng" fullname="Alex Huang Feng">
      <organization>INSA-Lyon</organization>
      <address>
        <email>alex.huang-feng@insa-lyon.fr</email>
      </address>
    </author>
    <author initials="A." surname="Mendez" fullname="Ana Mendez">
      <organization>Telefonica</organization>
      <address>
        <email>ana.mendezperez@telefonica.com</email>
      </address>
    </author>
    <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@sit.fraunhofer.de</email>
      </address>
    </author>
    <date year="2026" month="May" day="29"/>
    <area>Operations and Management</area>
    <workgroup>Operations and Management Area Working Group</workgroup>
    <keyword>provenance</keyword>
    <keyword>signature</keyword>
    <keyword>COSE</keyword>
    <keyword>metadata</keyword>
    <abstract>
      <?line 77?>

<t>This document defines a mechanism based on CBOR Object Signing and Encryption (COSE) signatures to provide and verify the provenance of YANG data, so it is possible to verify the origin and integrity of a dataset, even when those data are going to be processed and/or applied in workflows where a crypto-enabled data transport directly from the original data source is not available. As the application of evidence-based OAM automation and the use of tools such as AI/ML grow, provenance validation becomes more relevant in all scenarios, in support of the assuring the origin and integrity of data. The use of compact signatures facilitates the inclusion of provenance strings in any YANG schema requiring them.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://dr2lopez.github.io/yang-provenance/draft-ietf-opsawg-yang-provenance.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-ietf-opsawg-yang-provenance/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        Operations and Management Area Working Group Working Group mailing list (<eref target="mailto:opsawg@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/opsawg/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/opsawg/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/dr2lopez/yang-provenance"/>.</t>
    </note>
  </front>
  <middle>
    <?line 81?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>OAM automation, generally based on closed-loop principles, requires at least two datasets to be used. Using the common terms in Control Theory, we need those from the plant (the network device or segment under control) and those to be used as reference (the desired values of the relevant data). The usual automation behavior compares these values and takes a decision, by whatever the method (algorithmic, rule-based, an AI model tuned by ML...) to decide on a control action according to this comparison. Assurance of the origin and integrity of these datasets, what we refer in this document as "provenance", becomes essential to guarantee a proper behavior of closed-loop automation.</t>
      <t>When datasets are made available as an online data flow, provenance can be assessed by properties of the data transport protocol, as long as some kind of cryptographic protocol is used for source authentication, with TLS, SSH and IPsec as the main examples. But when these datasets are stored, go through some pre-processing or aggregation stages, or even cryptographic data transport is not available, provenance must be assessed by other means.</t>
      <t>The original use case for this provenance mechanism is associated with <xref target="YANGmanifest"/>, in order to provide a proof of the origin and integrity of the provided metadata, and therefore the examples in this document use the modules described there, but it soon became clear that it could be extended to any YANG datamodel to support provenance evidence. An analysis of other potential use cases suggested the interest of defining an independent, generally applicable mechanism.</t>
      <t>Provenance verification by signatures incorporated in YANG data can be applied to any data processing pipeline, whether they rely on an online flow or use some kind of data store, such as data lakes or time-series databases. The application of recorded data for ML training or validation constitute the most relevant examples of these scenarios.</t>
      <t>This document provides a mechanism for including digital signatures within YANG data. It applies COSE <xref target="RFC9052"/> to make the signature compact and reduce the resources required for calculating it. This mechanism is applicable to any serialization of the YANG data supporting a clear method for canonicalization, but this document considers three base ones: CBOR, JSON and XML.</t>
      <section anchor="target-deployment-scenarios">
        <name>Target Deployment Scenarios</name>
        <t>The provenance mechanisms described in this document are designed to be flexible and applicable in multiple deployment contexts within operational and management practices. The following non-exhaustive list provides examples of intended deployment scenarios:</t>
        <ul spacing="normal">
          <li>
            <t>Device Configuration Integrity: Digital signatures may be applied to device configuration elements to ensure that specific configuration fragments originate from an authorized source (e.g., controller, automation system) and have not been altered in transit. This is useful for zero-touch provisioning and secure configuration distribution in programmable networks.</t>
          </li>
          <li>
            <t>Telemetry and Monitoring Data: When applied to operational state or telemetry data (e.g., YANG-Push updates or Subscription Notifications), provenance signatures can help verify the integrity and authenticity of data collected from network elements, especially when the data may traverse untrusted collection pipelines.</t>
          </li>
          <li>
            <t>Network-Wide Service Orchestration: In multi-vendor or multi-domain environments, provenance can be used to track and validate contributions from different orchestrators or domain controllers in composite service models. This enables trustable service chaining and auditability.</t>
          </li>
        </ul>
      </section>
    </section>
    <section anchor="conventions-and-definitions">
      <name>Conventions and Definitions</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?>

<t>The term "data provenance" refers to information describing the origin of a piece of data and, when available, the history of transformations or transfers it has undergone.</t>
      <t>The signature mechanisms defined in this document provide integrity protection and origin authentication for YANG data at the time of signing. When applied iteratively by different entities along a data path, these signatures can contribute to building a provenance trail. However, such a trail is only as complete as the set of signatures present and its continuity is not guaranteed by these mechanisms alone.</t>
    </section>
    <section anchor="defining-provenance-elements">
      <name>Defining Provenance Elements</name>
      <t>The provenance for a given YANG element <bcp14>MUST</bcp14> be convened by a leaf element, containing the COSE signature bitstring built according to the procedure defined below in this section. The provenance leaf <bcp14>MUST</bcp14> be of type provenance-signature, defined as follows:</t>
      <artwork><![CDATA[
typedef provenance-signature {
     type binary;
     description
      "The provenance-signature type represents a digital signature
       corresponding to the associated YANG element. The signature is based
       on COSE and generated using a canonicalized version of the
       associated element.";
     reference
      "RFC 9052: CBOR Object Signing and Encryption (COSE): Structures and Process
       draft-ietf-opsawg-yang-provenance";
}
]]></artwork>
      <t>The use of this type is the proper method for identifying signature leaves, and therefore whenever this type is used for a leaf element, it <bcp14>MUST</bcp14> be considered a provenance signature element, to be generated or verified according to the procedures described in this section.</t>
      <section anchor="provenance-signature-strings">
        <name>Provenance Signature Strings</name>
        <t>Provenance signature strings are COSE single signature messages with [nil] payload, according to COSE conventions and registries, and with the following structure (as defined by <xref section="4.2" sectionFormat="comma" target="RFC9052"/>):</t>
        <artwork><![CDATA[
COSE_Sign1 = [
protected /algorithm-identifier, kid, serialization-method/
unprotected /algorithm-parameters/
signature /using as external data the content of the YANG
           (meta-)data without the signature leaf/
]
]]></artwork>
        <t>The COSE_Sign1 procedure yields a bitstring when building the signature and expects a bitstring for checking it, hence the proposed type for provenance signature leaves. The structure of the COSE_Sign1 consists of:</t>
        <ul spacing="normal">
          <li>
            <t>The algorithm-identifier, which <bcp14>MUST</bcp14> follow COSE conventions and registries.</t>
          </li>
          <li>
            <t>The kid (Key ID), to be locally agreed, used and interpreted by the signer and the signature validator. URIs <xref target="RFC3986"/> and RFC822-style <xref target="RFC5322"/> identifiers are typical values to be used as kid.</t>
          </li>
          <li>
            <t>The serialization-method, a string identifying the YANG serialization in use. It <bcp14>MUST</bcp14> be one of the three possible values "xml" (for XML serialization <xref target="RFC7950"/>), "json" (for JSON serialization <xref target="RFC7951"/>) or "cbor" (for CBOR serialization <xref target="RFC9254"/>).</t>
          </li>
          <li>
            <t>The value algorithm-parameters, which <bcp14>MUST</bcp14> follow the COSE conventions for providing relevant parameters to the signing algorithm.</t>
          </li>
          <li>
            <t>The signature for the YANG element provenance is being established for, to be produced and verified according to the procedure described below for each one of the enclosing methods for the provenance string described below.</t>
          </li>
        </ul>
      </section>
      <section anchor="signature-and-verification-procedures">
        <name>Signature and Verification Procedures</name>
        <t>To keep a concise signature and avoid the need for wrapping YANG constructs in COSE envelopes, the whole signature <bcp14>MUST</bcp14> be built and verified by means of externally supplied data, as defined in <xref section="4.3" sectionFormat="comma" target="RFC9052"/>, with a [nil] payload.</t>
        <t>The byte strings to be used as input to the signature and verification procedures <bcp14>MUST</bcp14> be built by:</t>
        <ul spacing="normal">
          <li>
            <t>Selecting the exact YANG content to be used, according to the corresponding enclosing methods.</t>
          </li>
          <li>
            <t>Applying the corresponding canonicalization method as described in the following section.</t>
          </li>
        </ul>
        <t>In order to guarantee proper verification, the signature procedure <bcp14>MUST</bcp14> be the last action to be taken before the YANG construct being signed is made available, whatever the means (sent as a reply to a poll or a notification, written to a file or record, etc.), and verification <bcp14>SHOULD</bcp14> take place in advance of any processing by the consuming application. The actions to be taken if the verification fails are specific to the consuming application, but it is <bcp14>RECOMMENDED</bcp14> to at least issue an error warning.</t>
        <ul empty="true">
          <li>
            <t><strong>Note:</strong> In deployments where YANG data are transported through message broker systems, verification can be applied after message deserialization and before instance data processing, consistently with the placement described in <xref target="YANGmsgbroker"/>. In such scenarios, additional schema validation steps (e.g., YANG schema validation performed at the broker level) may complement the provenance mechanism, further strengthening data integrity before application-level processing. The deployment architecture is out of scope for this document, as the provenance mechanisms defined here are intentionally designed for general-purpose applicability across any YANG data processing system.</t>
          </li>
        </ul>
      </section>
      <section anchor="canonicalization">
        <name>Canonicalization</name>
        <t>Signature generation and verification require a canonicalization method to be applied, that depends on the serialization used. According to the three types of serialization defined, the following canonicalization methods <bcp14>MUST</bcp14> be applied:</t>
        <ul spacing="normal">
          <li>
            <t>For CBOR, length-first core deterministic encoding, as defined by <xref target="RFC8949"/>.</t>
          </li>
          <li>
            <t>For JSON, JSON Canonicalization Scheme (JCS), as defined by <xref target="RFC8785"/>.</t>
          </li>
          <li>
            <t>For XML, Exclusive XML Canonicalization 1.0, as defined by <xref target="XMLSig"/>.</t>
          </li>
        </ul>
      </section>
      <section anchor="provenance-signature-yang-module">
        <name>Provenance-Signature YANG Module</name>
        <t>This module defines a provenance-signature type to be used in other YANG modules.</t>
        <sourcecode markers="true" name="ietf-yang-provenance@2025-05-09.yang"><![CDATA[
module ietf-yang-provenance {
  yang-version 1.1;
  namespace
    "urn:ietf:params:xml:ns:yang:ietf-yang-provenance";
  prefix iyangprov;

  organization "IETF OPSAWG (Operations and Management Area Working Group)";
  contact
    "WG Web:   <https://datatracker.ietf.org/wg/opsawg/>
     WG List:  <mailto:opsawg@ietf.org>

     Authors:  Alex Huang Feng
               <mailto:alex.huang-feng@insa-lyon.fr>
               Diego Lopez
               <mailto:diego.r.lopez@telefonica.com>
               Antonio Pastor
               <mailto:antonio.pastorperales@telefonica.com>
               Henk Birkholz
               <mailto:henk.birkholz@sit.fraunhofer.de>";

  description
    "Defines a binary provenance-signature type to be used in other YANG
    modules.

    Copyright (c) 2025 IETF Trust and the persons identified as
    authors of the code.  All rights reserved.

    Redistribution and use in source and binary forms, with or without
    modification, is permitted pursuant to, and subject to the license
    terms contained in, the Revised BSD License set forth in Section
    4.c of the IETF Trust's Legal Provisions Relating to IETF Documents
    (https://trustee.ietf.org/license-info).

    This version of this YANG module is part of RFC XXXX; see the RFC
    itself for full legal notices.";

  revision 2025-05-09 {
    description
      "First revision";
    reference
      "RFC XXXX: Applying COSE Signatures for YANG Data Provenance";
  }

  typedef provenance-signature {
    type binary;
    description
      "The provenance-signature type represents a digital signature
      corresponding to the associated YANG element. The signature is based
      on COSE and generated using a canonicalized version of the
      associated element.";
    reference
      "RFC XXXX: Applying COSE Signatures for YANG Data Provenance";
  }
}
]]></sourcecode>
      </section>
    </section>
    <section anchor="enclosing-methods">
      <name>Enclosing Methods</name>
      <t>Once defined the procedures for generating and verifying the provenance signature string, let's consider how these signatures can be integrated with the associated YANG data by enclosing the signature in the data structure. This document considers four different enclosing methods, suitable for different stages of the YANG schema and usage patterns of the YANG data. The enclosing method defines not only how the provenance signature string is combined with the signed YANG data but also the specific procedure for selecting the specific YANG content to be processed when signing and verifying.</t>
      <t>Appendix A includes a set of examples of the different enclosing methods, applied to the same YANG fragment, to illustrate their use.</t>
      <section anchor="including-a-provenance-leaf-in-a-yang-element">
        <name>Including a Provenance Leaf in a YANG Element</name>
        <t>This enclosing method requires a specific element in the YANG schema defining the element to be signed (the enclosing element), and thus implies considering provenance signatures when defining a YANG module, or the use of augmentation to include the provenance signature element in a existing YANG module.</t>
        <t>When defining a provenance signature leaf element to appear in a YANG schema by means of this enclosing method, the provenance-signature leaf <bcp14>MAY</bcp14> be defined to be at any position in the enclosing element, but only one such leaf <bcp14>MUST</bcp14> be defined for this enclosing element. If the enclosing element contains other non-leaf elements, they <bcp14>MAY</bcp14> define their own provenance-signature leaf, according to the same rule. In this case, the provenance-signature leaves in the children elements are applicable to the specific child element where they are enclosed, while the provenance-signature leaf enclosed in the top-most element is applicable to the whole element contents, including the children provenance-signature leaf themselves. This allows for recursive provenance validation, data aggregation, and the application of provenance verification of relevant children elements at different stages of any data processing pipeline.</t>
        <t>The specific YANG content to be processed <bcp14>SHALL</bcp14> be generated by taking the whole enclosing element and eliminiating the leaf containing the provenance signature string.</t>
        <t>As example, let us consider the two modules proposed in <xref target="YANGmanifest"/>. For the platform-manifest module, the provenance for a platform would be provided by augmenting the current schema with the optional platform-provenance leaf shown below:</t>
        <artwork><![CDATA[
module: ietf-platform-manifest
  +--ro platforms
     +--ro platform* [id]
       +--ro id                      string
       +--ro name?                   string
       +--ro vendor?                 string
       +--ro vendor-pen?             uint32
       +--ro software-version?       string
       +--ro software-flavor?        string
       +--ro os-version?             string
       +--ro os-type?                string
       +--ro platform-provenance?    provenance-signature
       +--ro yang-push-streams
       |  +--ro stream* [name]
       |     +--ro name
       |     +--ro description?
       +--ro yang-library
       + . . .
       .
       .
       .
]]></artwork>
        <t>For data collections, the provenance of each one would be provided by augmenting the schema with an optional collector-provenance leaf, as shown below:</t>
        <artwork><![CDATA[
module: ietf-data-collection-manifest
  +--ro data-collections
     +--ro data-collection* [platform-id]
     +--ro platform-id
     |       -> /p-mf:platforms/platform/id
     +--ro collector-provenance?   provenance-signature
     +--ro yang-push-subscriptions
       +--ro subscription* [id]
         +--ro id
         |      sn:subscription-id
         +
         .
         .
         .
     + . . .
     |
     .
     .
     .
]]></artwork>
        <t>Note how, in the two examples, the element bearing the provenance signature appears at different positions in the enclosing element. And note that, for processing the element for signature generation and verification, the signature element <bcp14>MUST</bcp14> be eliminated from the enclosing element before applying the corresponding canonicalization method.</t>
        <t>Note that, in application of the recursion mechanism described above, a provenance element could be included at the top of any of the collections, supporting the verification of the provenance of the collection itself (as provided by a specific collector), without interfering with the verification of the provenance of each of the collection elements. As an example, in the case of the platform manifests it would look like:</t>
        <artwork><![CDATA[
module: ietf-platform-manifest
  +--ro platforms
     +--ro platform-collection-provenance? provenance-signature
     +--ro platform* [id]
       +--ro platform-provenance?          provenance-signature
       +--ro id                            string
       +--ro name?                         string
       +--ro vendor?                       string
       + . . .
       .
       .
       .
]]></artwork>
        <t>Note here that, to generate the YANG content to be processed in the case of the collection the provenance leafs of the indivual elements <bcp14>SHALL NOT</bcp14> be eliminated, as it <bcp14>SHALL</bcp14> be the case when generating the YANG content to be processed for each individual element in the collection.</t>
      </section>
      <section anchor="including-a-provenance-signature-in-yang-push-notifications">
        <name>Including a Provenance Signature in YANG-Push Notifications</name>
        <t>The signature mechanism proposed in this document <bcp14>MAY</bcp14> be used with YANG-Push <xref target="RFC8641"/> to sign notifications generated  directly by publisher nodes. The signature is carried inside the notification envelope header defined in <xref target="I-D.ietf-netconf-notif-envelope"/> as a new extension.</t>
        <t>The YANG content to be processed <bcp14>MUST</bcp14> consist of the content defined by the "contents" element in <xref target="I-D.ietf-netconf-notif-envelope"/>.</t>
        <t>The following sections define the YANG module that augments the "ietf-yp-notification" module. It extends the notification envelope header with a new leaf for the provenance signature and an augmentation to the "ietf-notification-capabilities" to enable clients discover the support of the provenance signature.</t>
        <section anchor="yang-tree-diagram">
          <name>YANG Tree Diagram</name>
          <t>The following is the YANG tree diagram <xref target="RFC8340"/> for the "ietf-yp-provenance" module.</t>
          <artwork><![CDATA[
module: ietf-yp-provenance

  augment /sysc:system-capabilities/notc:subscription-capabilities
            /inotenv:notification-metadata/inotenv:metadata:
    +--ro notification-provenance?   boolean

  augment-structure /inotenv:envelope:
    +-- provenance?   iyangprov:provenance-signature
]]></artwork>
          <t>And the following is the full YANG tree diagram for the notification structure.</t>
          <artwork><![CDATA[
module: ietf-notification

  structure envelope:
    +-- event-time         yang:date-and-time
    +-- hostname?          inet:host
    +-- sequence-number?   yang:counter32
    +-- provenance?        iyangprov:provenance-signature
    +-- contents?          <anydata>
]]></artwork>
          <t>Unlike the first enclosing method, in this second enclosing method the provenance leaf is added by augmenting a structure (/inotenv:envelope). The provenance leaf is inserted before the contents leaf.
This ordering is important because the provenance signature <bcp14>MUST</bcp14> cover the content of the notification but <bcp14>MUST NOT</bcp14> include itself in the signature computation. This ensures the signature remains valid and verifiable. YANG augmented structures typically respect the convention that the anydata node, when present, should appear as the last element in the structure. Therefore, any newly augmented elements are automatically placed before it.</t>
        </section>
        <section anchor="yang-module">
          <name>YANG Module</name>
          <t>The "ietf-yp-provenance" module augments "ietf-yp-notification" module <xref target="I-D.ietf-netconf-notif-envelope"/> adding the provenance leaf to the notification envelope structure.
It also adds the notification-provenance capability to allow clients to discover if provenance signatures are supported.</t>
          <sourcecode markers="true" name="ietf-yp-provenance@2025-05-09.yang"><![CDATA[
module ietf-yp-provenance {
  yang-version 1.1;
  namespace
    "urn:ietf:params:xml:ns:yang:ietf-yp-provenance";
  prefix inotifprov;

  import ietf-system-capabilities {
    prefix sysc;
    reference
      "RFC 9196: YANG Modules Describing Capabilities for
       Systems and Datastore Update Notifications";
  }
  import ietf-notification-capabilities {
    prefix notc;
    reference
      "RFC 9196: YANG Modules Describing Capabilities for
       Systems and Datastore Update Notifications";
  }
  import ietf-yang-provenance {
    prefix iyangprov;
    reference
      "RFC XXXX: Applying COSE Signatures for YANG Data Provenance";
  }
  import ietf-yang-structure-ext {
    prefix sx;
    reference
      "RFC 8791: YANG Data Structure Extensions";
  }
  import ietf-yp-notification {
    prefix inotenv;
    reference
      "RFC YYYY: Extensible YANG Model for YANG-Push Notifications";
  }

  organization "IETF OPSAWG (Operations and Management Area Working Group)";
  contact
    "WG Web:   <https://datatracker.ietf.org/wg/opsawg/>
     WG List:  <mailto:opsawg@ietf.org>

     Authors:  Alex Huang Feng
               <mailto:alex.huang-feng@insa-lyon.fr>
               Diego Lopez
               <mailto:diego.r.lopez@telefonica.com>
               Antonio Pastor
               <mailto:antonio.pastorperales@telefonica.com>";

  description
    "Defines a bynary provenance-signature type to be used in other YANG
    modules.

    Copyright (c) 2025 IETF Trust and the persons identified as
    authors of the code.  All rights reserved.

    Redistribution and use in source and binary forms, with or without
    modification, is permitted pursuant to, and subject to the license
    terms contained in, the Revised BSD License set forth in Section
    4.c of the IETF Trust's Legal Provisions Relating to IETF Documents
    (https://trustee.ietf.org/license-info).

    This version of this YANG module is part of RFC XXXX; see the RFC
    itself for full legal notices.";

  revision 2025-05-09 {
    description
      "First revision";
    reference
      "RFC XXXX: Applying COSE Signatures for YANG Data Provenance";
  }

  sx:augment-structure "/inotenv:envelope" {
    leaf provenance {
      type iyangprov:provenance-signature;
      description
        "COSE signature of the content of the Notification for
        provenance verification.";
    }
  }

  augment "/sysc:system-capabilities"
        + "/notc:subscription-capabilities"
        + "/inotenv:notification-metadata/inotenv:metadata" {
    description
      "Extensions to Notification Capabilities enabling clients to
      know whether the provenance signature is supported.";
    leaf notification-provenance {
      type boolean;
      default "false";
      description
        "Support of the provenance signature on YANG-Push
        Notifications.";
    }
  }
}
]]></sourcecode>
        </section>
      </section>
      <section anchor="including-provenance-as-metadata-in-yang-instance-data">
        <name>Including Provenance as Metadata in YANG Instance Data</name>
        <t>Provenance signature strings can be included as part of the metadata in YANG instance data files, as defined in <xref target="RFC9195"/> for data at rest. The augmented YANG tree diagram including the provenance signature is as follows:</t>
        <artwork><![CDATA[
module: ietf-yang-instance-data-provenance
  augment-structure /id:instance-data-set:
    +-- provenance?   iyangprov:provenance-signature
]]></artwork>
        <ul empty="true">
          <li>
            <t><strong>Note:</strong> As in the second enclosing method, since this is a data structure, the <tt>provenance</tt> leaf appears before the <tt>content-data</tt> element.</t>
          </li>
        </ul>
        <t>The resulting YANG tree structure is:</t>
        <artwork><![CDATA[
  structure instance-data-set:
    + . . .
    +-- timestamp?           yang:date-and-time
    +-- provenance?          iyangprov:provenance-signature
    +-- content-data?        <anydata>
]]></artwork>
        <t>The provenance signature defined in this enclosing method applies to the whole content of the instance-data-set structure. This is independent of any other provenance signature strings that might be present within the content-data itself through other enclosing methods.</t>
        <t>The specific YANG content to be processed <bcp14>SHALL</bcp14> be generated by taking the contents of instance-data-set structure, excluding the provenance signature element itself and applying the corresponding canonicalization method.</t>
        <section anchor="yang-module-1">
          <name>YANG Module</name>
          <t>This module defines the provenance signature element to be included as metadata of a YANG data instance.</t>
          <sourcecode markers="true" name="ietf-yang-instance-data-provenance@2025-07-07.yang"><![CDATA[
module ietf-yang-instance-data-provenance {
  yang-version 1.1;
  namespace "urn:ietf:params:xml:ns:yang:ietf-yang-instance-data-provenance";
  prefix "yidprov";
  import ietf-yang-instance-data {
    prefix "id";
    reference
     “RFC 9195 A File Format for YANG Instance Data”
  }
  import ietf-yang-provenance {
    prefix iyangprov;
    reference
      "RFC XXXX: Applying COSE Signatures for YANG Data Provenance";
  }
  import ietf-yang-structure-ext {
    prefix sx;
    reference
      "RFC 8791: YANG Data Structure Extensions";
  }
  organization "IETF OPSAWG (Operations and Management Area Working Group)";
  contact
    "WG Web:   <https://datatracker.ietf.org/wg/opsawg/>
     WG List:  <mailto:opsawg@ietf.org>

     Authors:  Ana Mendez
               <mailto:ana.mendezperz@telefonica.com>
               Diego Lopez
               <mailto:diego.r.lopez@telefonica.com>";
  description
        "Defines a binary provenance-signature type to be used as metadata
         in a YANG data instance.

         Copyright (c) 2025 IETF Trust and the persons identified as
         authors of the code.  All rights reserved.

         Redistribution and use in source and binary forms, with or without
         modification, is permitted pursuant to, and subject to the license
         terms contained in, the Revised BSD License set forth in Section
         4.c of the IETF Trust's Legal Provisions Relating to IETF Documents
         (https://trustee.ietf.org/license-info).

         This version of this YANG module is part of RFC XXXX; see the RFC
         itself for full legal notices.";

  revision 2025-07-07 {
    description "First revision.";
    reference "RFC XXXX: Applying COSE Signatures for YANG Data Provenance";
  }
  sx:augment-structure "/id:instance-data-set" {
    leaf provenance {
      type iyangprov:provenance-signature;
      description
        "Provenance signature that applies to the full content-data block of an instance dataset.This signature can be used to verify the integrity and authenticity of the instance data.";
    }
  }
}
]]></sourcecode>
        </section>
      </section>
      <section anchor="EMannotations">
        <name>Including Provenance in YANG Annotations</name>
        <t>The use of annotations as defined in <xref target="RFC7952"/> seems a natural enclosing method, dealing with the provenance signature string as metadata extension and not requiring modification of existing YANG schemas. The provenance-string annotation is defined as follows:</t>
        <artwork><![CDATA[
 md:annotation provenance {
       type provenance-signature;
       description
         "This annotation contains a digital signature corresponding
          to the YANG element in which it appears.";
     }
]]></artwork>
        <t>The specific YANG content to be processed <bcp14>SHALL</bcp14> be generated by eliminating the provenance annotation (encoded according to what is described in Section 5 of <xref target="RFC7952"/>) from the element it applies to, before invoking the corresponding canonicalization method. In application of the general recursion principle for provenance signature strings, any other provenance strings within the element to which the provenance-string applies <bcp14>SHALL</bcp14> be left as they appear, whatever the enclosing method used for them.</t>
        <section anchor="yang-module-2">
          <name>YANG Module</name>
          <t>This module defines a metadata annotation to include a provenance signature for a YANG element.</t>
          <sourcecode markers="true" name="ietf-yang-provenance-annotation@2024-06-30.yang"><![CDATA[
module ietf-yang-provenance-annotation {
     yang-version 1.1;
     namespace
       "urn:ietf:params:xml:ns:yang:ietf-yang-annotation";
     prefix "ypmd";
     import ietf-yang-metadata {
       prefix "md";
     }
     organization "IETF OPSAWG (Operations and Management Area Working Group)";
     contact
       "WG Web:   <https://datatracker.ietf.org/wg/opsawg/>
        WG List:  <mailto:opsawg@ietf.org>

        Authors: Diego Lopez
                 <mailto:diego.r.lopez@telefonica.com>
                 Alex Huang Feng
                 <mailto:alex.huang-feng@insa-lyon.fr>
                 Antonio Pastor
                 <mailto:antonio.pastorperales@telefonica.com>
                 Henk Birkholz
                 <mailto:henk.birkholz@sit.fraunhofer.de>";
        description
        "Defines a binary provenance-signature type to be used in YANG
         metadata annotations

         Copyright (c) 2024 IETF Trust and the persons identified as
         authors of the code.  All rights reserved.

         Redistribution and use in source and binary forms, with or without
         modification, is permitted pursuant to, and subject to the license
         terms contained in, the Revised BSD License set forth in Section
         4.c of the IETF Trust's Legal Provisions Relating to IETF Documents
         (https://trustee.ietf.org/license-info).

         This version of this YANG module is part of RFC XXXX; see the RFC
         itself for full legal notices.";

     revision 2024-06-30 {
        description
        "First revision";
        reference
        "RFC XXXX: Applying COSE Signatures for YANG Data Provenance";
     }
     md:annotation provenance {
       type iyangprov:provenance-signature;
       description
         "This annotation contains the provenance signature for
          the YANG element associated with it";
     }
}
]]></sourcecode>
        </section>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>The provenance assessment mechanism described in this document relies on COSE <xref target="RFC9052"/> and the deterministic encoding or canonicalization procedures described by <xref target="RFC8949"/>, <xref target="RFC8785"/> and <xref target="XMLSig"/>. The security considerations made in these references are fully applicable here.</t>
      <t>The considered threat model assumes an  attacker with the ability to intercept, observe, copy, replay, or modify YANG data in transit or at rest.</t>
      <t>The mechanisms defined here protect against data tampering: any modification of signed YANG data will result in signature verification failure, providing integrity protection from the point of signing onward.  Additionally, the signature binds the data to the entity holding the corresponding private key, providing origin authentication for the signed data.</t>
      <t>The following threats are explicitly outside the scope of this mechanism:</t>
      <ul spacing="normal">
        <li>
          <t>If the signing entity's private key is compromised, an attacker can produce valid signatures; protection against key compromise must be addressed by the key management infrastructure (e.g., PKI, certificate revocation).</t>
        </li>
        <li>
          <t>These mechanisms do not guarantee that all intermediate steps in a data path provides a signature: a provenance trail is only as complete as the set of signatures that are present, and gaps in signing by intermediate entities are not detectable by these mechanisms alone.</t>
        </li>
        <li>
          <t>A legitimate entity with access to a valid private key may sign incorrect or malicious data; these mechanisms provide no protection against a signing entity that intentionally or unintentionally produces erroneous data.</t>
        </li>
        <li>
          <t>Finally, these mechanisms do not inherently guarantee the freshness of signed data; replay of previously signed valid data is not prevented unless additional mechanisms, such as timestamps or nonces bound to the signature context, are employed.</t>
        </li>
      </ul>
      <t>The verification step depends on the association of the kid (Key ID) with the proper public key. This is a local matter for the verifier and its specification is out of the scope of this document. Similarly, key association with reliable data sources is a deployment decision, though a couple of deployment patterns can be considered, depending on the application scenario under consideration. On the one hand, identities may be associated to controller entities (a domain controller, a person in charge of operational aspects, an organizational unit managing an administrative domain, ec.) owning the private keys to be use in generating the provenance signatures for YANG data such as configurations or telemetry. Alternatively, individual devices may hold the identities and corresponding private keys to generate provenance signatures for locally originated data (e.g., telemetry updates). The use of certificates, PKI mechanisms, or any other secure out-of-band distribution of id-public key mappings is <bcp14>RECOMMENDED</bcp14>.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <section anchor="ietf-xml-registry">
        <name>IETF XML Registry</name>
        <t>This document registers the following URIs in the "IETF XML Registry" <xref target="RFC3688"/>:</t>
        <artwork><![CDATA[
  URI: urn:ietf:params:xml:ns:yang:ietf-yang-provenance
  Registrant Contact: The IESG.
  XML: N/A; the requested URI is an XML namespace.
]]></artwork>
        <artwork><![CDATA[
  URI: urn:ietf:params:xml:ns:yang:ietf-yp-provenance
  Registrant Contact: The IESG.
  XML: N/A; the requested URI is an XML namespace.
]]></artwork>
        <artwork><![CDATA[
  URI: urn:ietf:params:xml:ns:yang:ietf-yang-instance-data-provenance
  Registrant Contact: The IESG.
  XML: N/A; the requested URI is an XML namespace.
]]></artwork>
        <artwork><![CDATA[
  URI: urn:ietf:params:xml:ns:yang:ietf-yang-annotation-pmd
  Registrant Contact: The IESG.
  XML: N/A; the requested URI is an XML namespace.
]]></artwork>
      </section>
      <section anchor="yang-module-name">
        <name>YANG Module Name</name>
        <t>This document registers the following YANG modules in the "YANG Module Names" registry <xref target="RFC6020"/>:</t>
        <artwork><![CDATA[
  name: ietf-yang-provenance
  namespace: urn:ietf:params:xml:ns:yang:ietf-yang-provenance
  prefix: iyangprov
  reference: RFC XXXX
]]></artwork>
        <artwork><![CDATA[
  name: ietf-yp-provenance
  namespace: urn:ietf:params:xml:ns:yang:ietf-yp-provenance
  prefix: inotifprov
  reference: RFC XXXX
]]></artwork>
        <artwork><![CDATA[
  name: ietf-yang-instance-data-provenance
  namespace: urn:ietf:params:xml:ns:yang:ietf-yang-instance-data-provenance
  prefix: yidprov
  reference: RFC XXXX
]]></artwork>
        <artwork><![CDATA[
  name: ietf-yang-provenance-annotation
  namespace: urn:ietf:params:xml:ns:yang:ietf-yang-annotation-pmd
  prefix: ypmd
  reference: RFC XXXX
]]></artwork>
      </section>
      <section anchor="yang-sid-file">
        <name>YANG SID-file</name>
        <t>IANA is requested to register a new ".sid" file in the "IETF YANG-SID Ranges" <xref target="RFC9595"/>:</t>
        <artwork><![CDATA[
SID range entry point: TBD
SID range size: 20
YANG module name: ietf-yang-provenance
reference: RFC-to-be
]]></artwork>
        <t>A ".sid" file is proposed in Appendix B.</t>
      </section>
    </section>
    <section anchor="implementation-status">
      <name>Implementation Status</name>
      <t>An open-source reference implementation, written in Java, is available at <eref target="https://github.com/tefiros/cose-provenance">https://github.com/tefiros/cose-provenance</eref>. This implementation has been used to generate the examples in the appendix of this document, and was first demonstrated at the IETF 122 Hackathon. Work is ongoing to explore its integration with other open-source YANG modules. A Kafka message broker integration was presented at the IETF 123 Hackathon aiming at convergence with current efforts on YANG Push. The implementation is available at <eref target="https://github.com/tefiros/kafka-provenance">https://github.com/tefiros/kafka-provenance</eref>.</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC3688">
          <front>
            <title>The IETF XML Registry</title>
            <author fullname="M. Mealling" initials="M." surname="Mealling"/>
            <date month="January" year="2004"/>
            <abstract>
              <t>This document describes an IANA maintained registry for IETF standards which use Extensible Markup Language (XML) related items such as Namespaces, Document Type Declarations (DTDs), Schemas, and Resource Description Framework (RDF) Schemas.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="81"/>
          <seriesInfo name="RFC" value="3688"/>
          <seriesInfo name="DOI" value="10.17487/RFC3688"/>
        </reference>
        <reference anchor="RFC3986">
          <front>
            <title>Uniform Resource Identifier (URI): Generic Syntax</title>
            <author fullname="T. Berners-Lee" initials="T." surname="Berners-Lee"/>
            <author fullname="R. Fielding" initials="R." surname="Fielding"/>
            <author fullname="L. Masinter" initials="L." surname="Masinter"/>
            <date month="January" year="2005"/>
            <abstract>
              <t>A Uniform Resource Identifier (URI) is a compact sequence of characters that identifies an abstract or physical resource. This specification defines the generic URI syntax and a process for resolving URI references that might be in relative form, along with guidelines and security considerations for the use of URIs on the Internet. The URI syntax defines a grammar that is a superset of all valid URIs, allowing an implementation to parse the common components of a URI reference without knowing the scheme-specific requirements of every possible identifier. This specification does not define a generative grammar for URIs; that task is performed by the individual specifications of each URI scheme. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="66"/>
          <seriesInfo name="RFC" value="3986"/>
          <seriesInfo name="DOI" value="10.17487/RFC3986"/>
        </reference>
        <reference anchor="RFC5322">
          <front>
            <title>Internet Message Format</title>
            <author fullname="P. Resnick" initials="P." role="editor" surname="Resnick"/>
            <date month="October" year="2008"/>
            <abstract>
              <t>This document specifies the Internet Message Format (IMF), a syntax for text messages that are sent between computer users, within the framework of "electronic mail" messages. This specification is a revision of Request For Comments (RFC) 2822, which itself superseded Request For Comments (RFC) 822, "Standard for the Format of ARPA Internet Text Messages", updating it to reflect current practice and incorporating incremental changes that were specified in other RFCs. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5322"/>
          <seriesInfo name="DOI" value="10.17487/RFC5322"/>
        </reference>
        <reference anchor="RFC6020">
          <front>
            <title>YANG - A Data Modeling Language for the Network Configuration Protocol (NETCONF)</title>
            <author fullname="M. Bjorklund" initials="M." role="editor" surname="Bjorklund"/>
            <date month="October" year="2010"/>
            <abstract>
              <t>YANG is a data modeling language used to model configuration and state data manipulated by the Network Configuration Protocol (NETCONF), NETCONF remote procedure calls, and NETCONF notifications. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6020"/>
          <seriesInfo name="DOI" value="10.17487/RFC6020"/>
        </reference>
        <reference anchor="RFC7950">
          <front>
            <title>The YANG 1.1 Data Modeling Language</title>
            <author fullname="M. Bjorklund" initials="M." role="editor" surname="Bjorklund"/>
            <date month="August" year="2016"/>
            <abstract>
              <t>YANG is a data modeling language used to model configuration data, state data, Remote Procedure Calls, and notifications for network management protocols. This document describes the syntax and semantics of version 1.1 of the YANG language. YANG version 1.1 is a maintenance release of the YANG language, addressing ambiguities and defects in the original specification. There are a small number of backward incompatibilities from YANG version 1. This document also specifies the YANG mappings to the Network Configuration Protocol (NETCONF).</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7950"/>
          <seriesInfo name="DOI" value="10.17487/RFC7950"/>
        </reference>
        <reference anchor="RFC7951">
          <front>
            <title>JSON Encoding of Data Modeled with YANG</title>
            <author fullname="L. Lhotka" initials="L." surname="Lhotka"/>
            <date month="August" year="2016"/>
            <abstract>
              <t>This document defines encoding rules for representing configuration data, state data, parameters of Remote Procedure Call (RPC) operations or actions, and notifications defined using YANG as JavaScript Object Notation (JSON) text.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7951"/>
          <seriesInfo name="DOI" value="10.17487/RFC7951"/>
        </reference>
        <reference anchor="RFC7952">
          <front>
            <title>Defining and Using Metadata with YANG</title>
            <author fullname="L. Lhotka" initials="L." surname="Lhotka"/>
            <date month="August" year="2016"/>
            <abstract>
              <t>This document defines a YANG extension that allows for defining metadata annotations in YANG modules. The document also specifies XML and JSON encoding of annotations and other rules for annotating instances of YANG data nodes.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7952"/>
          <seriesInfo name="DOI" value="10.17487/RFC7952"/>
        </reference>
        <reference anchor="RFC8340">
          <front>
            <title>YANG Tree Diagrams</title>
            <author fullname="M. Bjorklund" initials="M." surname="Bjorklund"/>
            <author fullname="L. Berger" initials="L." role="editor" surname="Berger"/>
            <date month="March" year="2018"/>
            <abstract>
              <t>This document captures the current syntax used in YANG module tree diagrams. The purpose of this document is to provide a single location for this definition. This syntax may be updated from time to time based on the evolution of the YANG language.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="215"/>
          <seriesInfo name="RFC" value="8340"/>
          <seriesInfo name="DOI" value="10.17487/RFC8340"/>
        </reference>
        <reference anchor="RFC8641">
          <front>
            <title>Subscription to YANG Notifications for Datastore Updates</title>
            <author fullname="A. Clemm" initials="A." surname="Clemm"/>
            <author fullname="E. Voit" initials="E." surname="Voit"/>
            <date month="September" year="2019"/>
            <abstract>
              <t>This document describes a mechanism that allows subscriber applications to request a continuous and customized stream of updates from a YANG datastore. Providing such visibility into updates enables new capabilities based on the remote mirroring and monitoring of configuration and operational state.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8641"/>
          <seriesInfo name="DOI" value="10.17487/RFC8641"/>
        </reference>
        <reference anchor="RFC8785">
          <front>
            <title>JSON Canonicalization Scheme (JCS)</title>
            <author fullname="A. Rundgren" initials="A." surname="Rundgren"/>
            <author fullname="B. Jordan" initials="B." surname="Jordan"/>
            <author fullname="S. Erdtman" initials="S." surname="Erdtman"/>
            <date month="June" year="2020"/>
            <abstract>
              <t>Cryptographic operations like hashing and signing need the data to be expressed in an invariant format so that the operations are reliably repeatable. One way to address this is to create a canonical representation of the data. Canonicalization also permits data to be exchanged in its original form on the "wire" while cryptographic operations performed on the canonicalized counterpart of the data in the producer and consumer endpoints generate consistent results.</t>
              <t>This document describes the JSON Canonicalization Scheme (JCS). This specification defines how to create a canonical representation of JSON data by building on the strict serialization methods for JSON primitives defined by ECMAScript, constraining JSON data to the Internet JSON (I-JSON) subset, and by using deterministic property sorting.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8785"/>
          <seriesInfo name="DOI" value="10.17487/RFC8785"/>
        </reference>
        <reference anchor="RFC8949">
          <front>
            <title>Concise Binary Object Representation (CBOR)</title>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <author fullname="P. Hoffman" initials="P." surname="Hoffman"/>
            <date month="December" year="2020"/>
            <abstract>
              <t>The Concise Binary Object Representation (CBOR) is a data format whose design goals include the possibility of extremely small code size, fairly small message size, and extensibility without the need for version negotiation. These design goals make it different from earlier binary serializations such as ASN.1 and MessagePack.</t>
              <t>This document obsoletes RFC 7049, providing editorial improvements, new details, and errata fixes while keeping full compatibility with the interchange format of RFC 7049. It does not create a new version of the format.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="94"/>
          <seriesInfo name="RFC" value="8949"/>
          <seriesInfo name="DOI" value="10.17487/RFC8949"/>
        </reference>
        <reference anchor="RFC9052">
          <front>
            <title>CBOR Object Signing and Encryption (COSE): Structures and Process</title>
            <author fullname="J. Schaad" initials="J." surname="Schaad"/>
            <date month="August" year="2022"/>
            <abstract>
              <t>Concise Binary Object Representation (CBOR) is a data format designed for small code size and small message size. There is a need to be able to define basic security services for this data format. This document defines the CBOR Object Signing and Encryption (COSE) protocol. This specification describes how to create and process signatures, message authentication codes, and encryption using CBOR for serialization. This specification additionally describes how to represent cryptographic keys using CBOR.</t>
              <t>This document, along with RFC 9053, obsoletes RFC 8152.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="96"/>
          <seriesInfo name="RFC" value="9052"/>
          <seriesInfo name="DOI" value="10.17487/RFC9052"/>
        </reference>
        <reference anchor="RFC9195">
          <front>
            <title>A File Format for YANG Instance Data</title>
            <author fullname="B. Lengyel" initials="B." surname="Lengyel"/>
            <author fullname="B. Claise" initials="B." surname="Claise"/>
            <date month="February" year="2022"/>
            <abstract>
              <t>There is a need to document data defined in YANG models at design time, implementation time, or when a live server is unavailable. This document specifies a standard file format for YANG instance data, which follows the syntax and semantics of existing YANG models and annotates it with metadata.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9195"/>
          <seriesInfo name="DOI" value="10.17487/RFC9195"/>
        </reference>
        <reference anchor="RFC9254">
          <front>
            <title>Encoding of Data Modeled with YANG in the Concise Binary Object Representation (CBOR)</title>
            <author fullname="M. Veillette" initials="M." role="editor" surname="Veillette"/>
            <author fullname="I. Petrov" initials="I." role="editor" surname="Petrov"/>
            <author fullname="A. Pelov" initials="A." surname="Pelov"/>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <author fullname="M. Richardson" initials="M." surname="Richardson"/>
            <date month="July" year="2022"/>
            <abstract>
              <t>YANG (RFC 7950) is a data modeling language used to model configuration data, state data, parameters and results of Remote Procedure Call (RPC) operations or actions, and notifications.</t>
              <t>This document defines encoding rules for YANG in the Concise Binary Object Representation (CBOR) (RFC 8949).</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9254"/>
          <seriesInfo name="DOI" value="10.17487/RFC9254"/>
        </reference>
        <reference anchor="RFC9595">
          <front>
            <title>YANG Schema Item iDentifier (YANG SID)</title>
            <author fullname="M. Veillette" initials="M." role="editor" surname="Veillette"/>
            <author fullname="A. Pelov" initials="A." role="editor" surname="Pelov"/>
            <author fullname="I. Petrov" initials="I." role="editor" surname="Petrov"/>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <author fullname="M. Richardson" initials="M." surname="Richardson"/>
            <date month="July" year="2024"/>
            <abstract>
              <t>YANG Schema Item iDentifiers (YANG SIDs) are globally unique 63-bit unsigned integers used to identify YANG items. SIDs provide a more compact method for identifying those YANG items that can be used efficiently, notably in constrained environments (RFC 7228). This document defines the semantics, registration processes, and assignment processes for YANG SIDs for IETF-managed YANG modules. To enable the implementation of these processes, this document also defines a file format used to persist and publish assigned YANG SIDs.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9595"/>
          <seriesInfo name="DOI" value="10.17487/RFC9595"/>
        </reference>
        <reference anchor="I-D.ietf-netconf-notif-envelope">
          <front>
            <title>Extensible YANG Model for YANG-Push Notifications</title>
            <author fullname="Alex Huang Feng" initials="A. H." surname="Feng">
              <organization>INSA-Lyon</organization>
            </author>
            <author fullname="Pierre Francois" initials="P." surname="Francois">
              <organization>INSA-Lyon</organization>
            </author>
            <author fullname="Thomas Graf" initials="T." surname="Graf">
              <organization>Swisscom</organization>
            </author>
            <author fullname="Benoît Claise" initials="B." surname="Claise">
              <organization>Everything OPS</organization>
            </author>
            <date day="18" month="May" year="2026"/>
            <abstract>
              <t>   This document defines a new extensible Notification structure,
   defined in YANG, for use in YANG-Push Notification messages, both for
   NETCONF and RESTCONF, enabling any YANG-compatible encodings such as
   XML, JSON, or CBOR.  Additionally, it defines two essential
   extensions to this structure, the support of a hostname and a
   sequence number and the support of a timestamp characterizing the
   moment when the data was observed.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-netconf-notif-envelope-05"/>
        </reference>
        <reference anchor="XMLSig" target="https://www.w3.org/TR/xmldsig-core2/">
          <front>
            <title>XML Signature Syntax and Processing Version 2.0</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </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="RFC7223">
          <front>
            <title>A YANG Data Model for Interface Management</title>
            <author fullname="M. Bjorklund" initials="M." surname="Bjorklund"/>
            <date month="May" year="2014"/>
            <abstract>
              <t>This document defines a YANG data model for the management of network interfaces. It is expected that interface-type-specific data models augment the generic interfaces data model defined in this document. The data model includes configuration data and state data (status information and counters for the collection of statistics).</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7223"/>
          <seriesInfo name="DOI" value="10.17487/RFC7223"/>
        </reference>
        <reference anchor="YANGmanifest">
          <front>
            <title>A Data Manifest for Contextualized Telemetry Data</title>
            <author fullname="Benoît Claise" initials="B." surname="Claise">
              <organization>Everything OPS</organization>
            </author>
            <author fullname="Jean Quilbeuf" initials="J." surname="Quilbeuf">
              <organization>Huawei</organization>
            </author>
            <author fullname="Diego Lopez" initials="D." surname="Lopez">
              <organization>Telefonica I+D</organization>
            </author>
            <author fullname="Ignacio Dominguez Martinez-Casanueva" initials="I. D." surname="Martinez-Casanueva">
              <organization>Telefonica I+D</organization>
            </author>
            <author fullname="Thomas Graf" initials="T." surname="Graf">
              <organization>Swisscom</organization>
            </author>
            <date day="20" month="October" year="2025"/>
            <abstract>
              <t>   Network platforms use Network Telemetry, such as YANG-Push, to
   continuously stream information, including both counters and state
   information.  This document describes the metadata that ensure that
   the collected data can be interpreted correctly.  This document
   specifies the Data Manifest, composed of two YANG data models (the
   Platform Manifest and the non-normative Data Collection Manifest).
   These YANG modules are specified at the network level (e.g., network
   controllers) to provide a model that encompasses several network
   platforms.  The Data Manifest must be streamed and stored along with
   the data, up to the collection and analytics systems to keep the
   collected data fully exploitable by the data scientists and relevant
   tools.  Additionally, this document specifies an augmentation of the
   YANG-Push model to include the actual collection period, in case it
   differs from the configured collection period.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-opsawg-collected-data-manifest-10"/>
        </reference>
        <reference anchor="YANGmsgbroker">
          <front>
            <title>An Architecture for YANG-Push to Message Broker Integration</title>
            <author fullname="Thomas Graf" initials="T." surname="Graf">
              <organization>Swisscom</organization>
            </author>
            <author fullname="Ahmed Elhassany" initials="A." surname="Elhassany">
              <organization>Swisscom</organization>
            </author>
            <date day="13" month="May" year="2026"/>
            <abstract>
              <t>   This document describes the motivation and architecture of a native
   YANG-Push notifications and YANG Schema integration into a Message
   Broker and YANG Schema Registry.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-nmop-yang-message-broker-integration-12"/>
        </reference>
      </references>
    </references>
    <?line 759?>

<section numbered="false" anchor="appendix-a-examples-of-application-of-the-different-enclosing-methods">
      <name>Appendix A. Examples of Application of the Different Enclosing Methods</name>
      <t>In the examples that follow, the signature strings have been wrapped and, in some cases, indented to improve readability. If these examples are used for any kind of validation, all intermediate carriage returns and whitespace should be deleted to build the actual signature string to be considered.</t>
      <section numbered="false" anchor="xml">
        <name>XML</name>
        <t>Let us consider the following YANG instance, corresponding to a monitoring interface statement, as defined in <xref target="RFC7223"/>:</t>
        <artwork><![CDATA[
<?xml version="1.0" encoding="UTF-8"?>
<interfaces xmlns="urn:ietf:params:xml:ns:yang:ietf-interfaces">
    <interface>
        <name>GigabitEthernet1</name>
        <type xmlns:ianaift="urn:ietf:params:xml:ns:yang:iana-if-type">
            ianaift:ethernetCsmacd</type>
        <admin-status>up</admin-status>
        <oper-status>up</oper-status>
        <last-change>2024-02-03T11:22:41.081+00:00</last-change>
        <if-index>1</if-index>
        <phys-address>0c:00:00:37:d6:00</phys-address>
        <speed>1000000000</speed>
        <statistics>
            <discontinuity-time>2024-02-03T11:20:38+00:00</discontinuity-time>
            <in-octets>8157</in-octets>
            <in-unicast-pkts>94</in-unicast-pkts>
            <in-broadcast-pkts>0</in-broadcast-pkts>
            <in-multicast-pkts>0</in-multicast-pkts>
            <in-discards>0</in-discards>
            <in-errors>0</in-errors>
            <in-unknown-protos>0</in-unknown-protos>
            <out-octets>89363</out-octets>
            <out-unicast-pkts>209</out-unicast-pkts>
            <out-broadcast-pkts>0</out-broadcast-pkts>
            <out-multicast-pkts>0</out-multicast-pkts>
            <out-discards>0</out-discards>
            <out-errors>0</out-errors>
        </statistics>
    </interface>
</interfaces>
]]></artwork>
        <t>Using the first enclosing method, we will demonstrate how to augment the previous ietf-interfaces YANG module by defining it in the new example module below:</t>
        <artwork><![CDATA[
module interfaces-provenance-augmented {
  yang-version 1.1;
  namespace "urn:example:interfaces-provenance-augmented";
  prefix ifprov;

  import ietf-interfaces {
    prefix if;
  }
  import ietf-yang-provenance {
    prefix iyangprov;
  }

  description
    "Augments ietf-interfaces with provenance information";

  revision "2025-10-08" {
    description
      "Initial revision of the augment module adding provenance information to ietf-interfaces.";
  }

  augment "/if:interfaces" {
    leaf interfaces-provenance {
      type iyangprov:provenance-signature;
      description
        "Signature proving provenance of the interface configuration";
    }
  }
}


]]></artwork>
        <t>The following tree diagram illustrates the augmentation of the ietf-interfaces module with a provenance-signature at the root container:</t>
        <artwork><![CDATA[
module: ietf-interfaces
  +--rw interfaces
     +--rw interface* [name]
     |  +--rw name          string
     |  +--rw type          identityref
     |  ...
     +--rw ifprov:interfaces-provenance?  iyangprov:provenance-signature
]]></artwork>
        <t>The following example illustrates how a provenance signature can be attached to the root interfaces container to protect the entire set of interface configuration and operational data.
This augmentation adds a provenance-signature leaf at the root interfaces container (named "interfaces-provenance" in this case) and produces the following output:</t>
        <artwork><![CDATA[
<?xml version="1.0" encoding="UTF-8"?>
<interfaces xmlns="urn:ietf:params:xml:ns:yang:ietf-interfaces">
    <interfaces-provenance xmlns="urn:example:interfaces-provenance-augmented">
      0oRRowNjeG1sBGdlYzIua2V5ASag9lhAvzyFP5HP0nONaqTRxKmSqerrDS6C
      QXJSK+5NdprzQZLf0QsHtAi2pxzbuDJDy9kZoy1JTvNaJmMxGTLdm4ktug==
    </interfaces-provenance>
    <interface>
        <name>GigabitEthernet1</name>
        <type xmlns:ianaift="urn:ietf:params:xml:ns:yang:iana-if-type">
            ianaift:ethernetCsmacd</type>
        <admin-status>up</admin-status>
        <oper-status>up</oper-status>
        <last-change>2024-02-03T11:22:41.081+00:00</last-change>
        <if-index>1</if-index>
        <phys-address>0c:00:00:37:d6:00</phys-address>
        <speed>1000000000</speed>
        <statistics>
            <discontinuity-time>2024-02-03T11:20:38+00:00</discontinuity-time>
            <in-octets>8157</in-octets>
            <in-unicast-pkts>94</in-unicast-pkts>
            <in-broadcast-pkts>0</in-broadcast-pkts>
            <in-multicast-pkts>0</in-multicast-pkts>
            <in-discards>0</in-discards>
            <in-errors>0</in-errors>
            <in-unknown-protos>0</in-unknown-protos>
            <out-octets>89363</out-octets>
            <out-unicast-pkts>209</out-unicast-pkts>
            <out-broadcast-pkts>0</out-broadcast-pkts>
            <out-multicast-pkts>0</out-multicast-pkts>
            <out-discards>0</out-discards>
            <out-errors>0</out-errors>
        </statistics>
    </interface>
</interfaces>
]]></artwork>
        <t>The second enclosing method shows a notification with the provenance signature included inside the notification envelope. The provenance element is placed immediately before the contents element:</t>
        <artwork><![CDATA[
<?xml version="1.0" encoding="UTF-8"?>
<envelope xmlns="urn:ietf:params:xml:ns:yang:ietf-yp-notification">
    <event-time>2024-02-03T11:37:25.94Z</event-time>
    <provenance xmlns="urn:ietf:params:xml:ns:yang:ietf-yp-provenance">
    0oRRowNjeG1sBGdlYzIua2V5ASag9lhAzyJBpvnpzI/TirrjckAA29q6Qmf
    u56L8ZhUXXhu0KFcKh1qSRFx2wGR/y+xgKigVHYicC7fp/0AlHSXWiKB2sg==
    </provenance>
    <contents>
        <push-update xmlns="urn:ietf:params:xml:ns:yang:ietf-yang-push">
            <id>1011</id>
            <datastore-contents>
                <interfaces-state xmlns="urn:ietf:params:xml:ns:yang:ietf-interfaces">
                    <interface>
                        <name>GigabitEthernet1</name>
                        <type xmlns:ianaift="urn:ietf:params:xml:ns:yang:iana-if-type">
                            ianaift:ethernetCsmacd</type>
                        <admin-status>up</admin-status>
                        <oper-status>up</oper-status>
                        <last-change>2024-02-03T11:22:41.081+00:00</last-change>
                        <if-index>1</if-index>
                        <phys-address>0c:00:00:37:d6:00</phys-address>
                        <speed>1000000000</speed>
                        <statistics>
                            <discontinuity-time>2024-02-03T11:20:38+00:00</discontinuity-time>
                            <in-octets>8157</in-octets>
                            <in-unicast-pkts>94</in-unicast-pkts>
                            <in-broadcast-pkts>0</in-broadcast-pkts>
                            <in-multicast-pkts>0</in-multicast-pkts>
                            <in-discards>0</in-discards>
                            <in-errors>0</in-errors>
                            <in-unknown-protos>0</in-unknown-protos>
                            <out-octets>89363</out-octets>
                            <out-unicast-pkts>209</out-unicast-pkts>
                            <out-broadcast-pkts>0</out-broadcast-pkts>
                            <out-multicast-pkts>0</out-multicast-pkts>
                            <out-discards>0</out-discards>
                            <out-errors>0</out-errors>
                        </statistics>
                    </interface>
                </interfaces-state>
            </datastore-contents>
        </push-update>
    </contents>
</envelope>
]]></artwork>
        <t>The third enclosing method, applicable if the instance is to be stored as YANG instance data at rest, by adding the corresponding metadata, would produce a results as shown below:</t>
        <artwork><![CDATA[
<?xml version="1.0" encoding="UTF-8"?>
<instance-data-set xmlns="urn:ietf:params:xml:ns:yang:ietf-yang-instance-data">
  <name>atRestYANG</name>
  <content-schema></content-schema>
  <revision>
    <date>2024-11-03</date>
    <description>For demos</description>
  </revision>
  <description>Sample for demonstrating provenance signatures</description>
  <contact>diego.r.lopez@telefonica.com</contact>
  <provenance xmlns="urn:ietf:params:xml:ns:yang:ietf-yang-instance-data-provenance">
  0oRRowNjeG1sBGdlYzIua2V5ASag9lhAWff+fMbfNChKUYZ52UTOBmAlYPFe4
  vlZOLyZeW0CU7/2OutDeMCG28+m3rm58jqLjKbcueKLFq8qFJb4mvPY+Q==
  </provenance>
  <content-data>
   <interfaces-state xmlns="urn:ietf:params:xml:ns:yang:ietf-interfaces">
    <interface>
        <name>GigabitEthernet1</name>
        <type xmlns:ianaift="urn:ietf:params:xml:ns:yang:iana-if-type">
            ianaift:ethernetCsmacd</type>
        <admin-status>up</admin-status>
        <oper-status>up</oper-status>
        <last-change>2024-02-03T11:22:41.081+00:00</last-change>
        <if-index>1</if-index>
        <phys-address>0c:00:00:37:d6:00</phys-address>
        <speed>1000000000</speed>
        <statistics>
            <discontinuity-time>2024-02-03T11:20:38+00:00</discontinuity-time>
            <in-octets>8157</in-octets>
            <in-unicast-pkts>94</in-unicast-pkts>
            <in-broadcast-pkts>0</in-broadcast-pkts>
            <in-multicast-pkts>0</in-multicast-pkts>
            <in-discards>0</in-discards>
            <in-errors>0</in-errors>
            <in-unknown-protos>0</in-unknown-protos>
            <out-octets>89363</out-octets>
            <out-unicast-pkts>209</out-unicast-pkts>
            <out-broadcast-pkts>0</out-broadcast-pkts>
            <out-multicast-pkts>0</out-multicast-pkts>
            <out-discards>0</out-discards>
            <out-errors>0</out-errors>
        </statistics>
    </interface>
   </interfaces-state>
 </content-data>
</instance-data-set>
]]></artwork>
        <t>Finally, using the fourth enclosing method, the YANG instance would incorporate the corresponding provenance metadata as an annotation, using the namespace prefix specified in the ietf-yang-provenance-annotation module, as introduced in <xref target="EMannotations"/>:</t>
        <artwork><![CDATA[
<?xml version="1.0" encoding="UTF-8"?>
<interfaces-state xmlns="urn:ietf:params:xml:ns:yang:ietf-interfaces"
                  xmlns:ypmd="urn:ietf:params:xml:ns:yang:ietf-yang-annotation-pmd"
                  ypmd:provenance=
                  "0oRRowNjeG1sBGdlYzIua2V5ASag9lhAzen3Bm9AZoyXuetpoTB70SzZqKVxeu
                  OMW099sm+NXSqCfnqBKfXeuqDNEkuEr+E0XiAso986fbAHQCHbAJMOhw==">
    <interface>
        <name>GigabitEthernet1</name>
        <type xmlns:ianaift="urn:ietf:params:xml:ns:yang:iana-if-type">
            ianaift:ethernetCsmacd</type>
        <admin-status>up</admin-status>
        <oper-status>up</oper-status>
        <last-change>2024-02-03T11:22:41.081+00:00</last-change>
        <if-index>1</if-index>
        <phys-address>0c:00:00:37:d6:00</phys-address>
        <speed>1000000000</speed>
        <statistics>
            <discontinuity-time>2024-02-03T11:20:38+00:00</discontinuity-time>
            <in-octets>8157</in-octets>
            <in-unicast-pkts>94</in-unicast-pkts>
            <in-broadcast-pkts>0</in-broadcast-pkts>
            <in-multicast-pkts>0</in-multicast-pkts>
            <in-discards>0</in-discards>
            <in-errors>0</in-errors>
            <in-unknown-protos>0</in-unknown-protos>
            <out-octets>89363</out-octets>
            <out-unicast-pkts>209</out-unicast-pkts>
            <out-broadcast-pkts>0</out-broadcast-pkts>
            <out-multicast-pkts>0</out-multicast-pkts>
            <out-discards>0</out-discards>
            <out-errors>0</out-errors>
        </statistics>
    </interface>
</interfaces>
]]></artwork>
      </section>
      <section numbered="false" anchor="json">
        <name>JSON</name>
        <t>Let us consider the following YANG instance, corresponding to the same monitoring interface statement, with JSON serialization:</t>
        <artwork><![CDATA[
{
  "ietf-interfaces:interfaces": {
    "interface": [
      {
        "name": "GigabitEthernet1",
        "type": "ianaift:ethernetCsmacd",
        "admin-status": "up",
        "oper-status": "up",
        "last-change": "2024-02-03T11:22:41.081+00:00",
        "if-index": 1,
        "phys-address": "0c:00:00:37:d6:00",
        "speed": 1000000000,
        "statistics": {
          "discontinuity-time": "2024-02-03T11:20:38+00:00",
          "in-octets": 8157,
          "in-unicast-pkts": 94,
          "in-broadcast-pkts": 0,
          "in-multicast-pkts": 0,
          "in-discards": 0,
          "in-errors": 0,
          "in-unknown-protos": 0,
          "out-octets": 89363,
          "out-unicast-pkts": 209,
          "out-broadcast-pkts": 0,
          "out-multicast-pkts": 0,
          "out-discards": 0,
          "out-errors": 0
        }
      }
    ]
  }
}
]]></artwork>
        <t>Applying the first enclosing method, a provenance-signature leaf at the top element (named "interfaces-provenance" in this case") would be included following the augmentation module previously defined for the XML example. This will produce the following output:</t>
        <artwork><![CDATA[
{
  "ietf-interfaces:interfaces": {
    "interface": [
      {
        "name": "GigabitEthernet1",
        "type": "ianaift:ethernetCsmacd",
        "admin-status": "up",
        "oper-status": "up",
        "last-change": "2024-02-03T11:22:41.081+00:00",
        "if-index": 1,
        "phys-address": "0c:00:00:37:d6:00",
        "speed": 1000000000,
        "statistics": {
          "discontinuity-time": "2024-02-03T11:20:38+00:00",
          "in-octets": 8157,
          "in-unicast-pkts": 94,
          "in-broadcast-pkts": 0,
          "in-multicast-pkts": 0,
          "in-discards": 0,
          "in-errors": 0,
          "in-unknown-protos": 0,
          "out-octets": 89363,
          "out-unicast-pkts": 209,
          "out-broadcast-pkts": 0,
          "out-multicast-pkts": 0,
          "out-discards": 0,
          "out-errors": 0
        }
      }
    ],
    "interfaces-provenance-augmented:interfaces-provenance":
      "0oRRowNjeG1sBGdlYzIua2V5ASag9lhAvzyFP5HP0nONaqTRxKmSqerrDS6C
       QXJSK+5NdprzQZLf0QsHtAi2pxzbuDJDy9kZoy1JTvNaJmMxGTLdm4ktug=="
  }
}

]]></artwork>
        <t>The second enclosing method would translate into a notification including the "provenance" element as follows:</t>
        <artwork><![CDATA[
{
  "ietf-yp-notification:envelope" : {
    "event-time" : "2013-12-21T00:01:00Z",
    "contents": {
      "ietf-yang-push:push-update": {
        "id": 1011,
        "datastore-contents": {
          "ietf-interfaces:interfaces-state": {
            "interface": [ {
                "name": "GigabitEthernet1",
                "type": "ianaift:ethernetCsmacd",
                "admin-status": "up",
                "oper-status": "up",
                "last-change": "2024-02-03T11:22:41.081+00:00",
                "if-index": 1,
                "phys-address": "0c:00:00:37:d6:00",
                "speed": 1000000000,
                "statistics": {
                  "discontinuity-time": "2024-02-03T11:20:38+00:00",
                  "in-octets": 8157,
                  "in-unicast-pkts": 94,
                  "in-broadcast-pkts": 0,
                  "in-multicast-pkts": 0,
                  "in-discards": 0,
                  "in-errors": 0,
                  "in-unknown-protos": 0,
                  "out-octets": 89363,
                  "out-unicast-pkts": 209,
                  "out-broadcast-pkts": 0,
                  "out-multicast-pkts": 0,
                  "out-discards": 0,
                  "out-errors": 0
                }
              }
            ]
          }
        }
      }
    },
    "ietf-yp-provenance:provenance":
    "0oRRowNjeG1sBGdlYzIua2V5ASag9lhAiKEKLQKJT12LsNgxt8WllEI65lyi
    E/m12drCfl+wh7T61cTYhFGdEeX8A5F0vmUWROZebq/VVFewUZeVYGZBOQ=="
  }
}
]]></artwork>
        <t>The third enclosing method, applicable if the instance is to be stored as YANG instance data at rest, by adding the corresponding metadata, would produce a results as shown below:</t>
        <artwork><![CDATA[
{
  "ietf-yang-instance-data:instance-data-set" : {
    "name" : "interfaces-labTID-status",
    "contact" : "sofia.garciarincon.practicas@telefonica.com",
    "timestamp" : "Thu Jul 18 11:42:06 CEST 2024",
    "content-data" : {
      "ietf-interfaces:interfaces": {
        "interface": [
          {
            "name": "GigabitEthernet1",
            "iana-if-type:type": "ianaift:ethernetCsmacd",
            "admin-status": "up",
            "oper-status": "up",
            "last-change": "2024-02-03T11:22:41.081+00:00",
            "if-index": 1,
            "phys-address": "0c:00:00:37:d6:00",
            "speed": 1000000000,
            "statistics": {
              "discontinuity-time": "2024-02-03T11:20:38+00:00",
              "in-octets": 8157,
              "in-unicast-pkts": 94,
              "in-broadcast-pkts": 0,
              "in-multicast-pkts": 0,
              "in-discards": 0,
              "in-errors": 0,
              "in-unknown-protos": 0,
              "out-octets": 89363,
              "out-unicast-pkts": 209,
              "out-broadcast-pkts": 0,
              "out-multicast-pkts": 0,
              "out-discards": 0,
              "out-errors": 0
            }
          }
        ]
      }
    },
    "ietf-yang-instance-data-provenance:provenance" :
    "0oRRowNjeG1sBGdlYzIua2V5ASag9lhAmop/c7wMcjRmiSPVy65F/N6O21dsG
    kjGQjIDRizhu3WMwi9Je+VUf5sqwlhSwQCdv5u7mRXa6Pd9dhCwdxdRCA=="
  }
}
]]></artwork>
        <t>Finally, using the fourth enclosing method, the YANG instance would incorporate the corresponding provenance metadata as an annotation, using the namespace prefix specified in the yang-provenance-metadata module, as introduced in <xref target="EMannotations"/>, and the recommendations in section 5.2.3 of <xref target="RFC7952"/>:</t>
        <artwork><![CDATA[
{
  "ietf-interfaces:interfaces" : {

    "interface" : [
      {
        "name" : "GigabitEthernet1",
        "iana-if-type:type" : "ianaift:ethernetCsmacd",
        "admin-status" : "up",
        "oper-status" : "up",
        "last-change" : "2024-02-03T11:22:41.081+00:00",
        "if-index" : 1,
        "phys-address" : "0c:00:00:37:d6:00",
        "speed" : 1000000000,
        "statistics" : {
          "discontinuity-time" : "2024-02-03T11:20:38+00:00",
          "in-octets" : 8157,
          "in-unicast-pkts" : 94,
          "in-broadcast-pkts" : 0,
          "in-multicast-pkts" : 0,
          "in-discards" : 0,
          "in-errors" : 0,
          "in-unknown-protos" : 0,
          "out-octets" : 89363,
          "out-unicast-pkts" : 209,
          "out-broadcast-pkts" : 0,
          "out-multicast-pkts" : 0,
          "out-discards" : 0,
          "out-errors" : 0
        }
      }
    ],
    "@": {
        "ypmd:provenance": "0oRRowNjeG1sBGdlYzIua2V5ASag9lhAM/Dx3HVc4GL91jmuU5nWgcmOPPVpARLJkWo5wwQYvGFJpKMXTkjAtArPp8v6Sl1ZD1qHimKMhAoHLMHVxBtrcA=="
    }
  }
}
]]></artwork>
      </section>
      <section numbered="false" anchor="cbor">
        <name>CBOR</name>
        <t>According to <xref target="RFC9254"/>, provenance information <bcp14>MAY</bcp14> be represented in CBOR using either YANG names (CBOR diagnostic notation) or YANG SIDs as map keys. The CBOR diagnostic notation when using name keys would be essentially similar to the JSON encoding presented in the previous section. Both representations are included in the examples below to provide a full reference.</t>
        <t>NOTE TO THE RFC EDITOR: The SID values shown below are illustrative and must be replaced by IANA-assigned values before publication.</t>
        <t>The first enclosing method will produce the following output, in CBOR diagnostic notation:</t>
        <artwork><![CDATA[
{
  "ietf-interfaces:interfaces": {
    "interface": [
      {
        "name": "GigabitEthernet1",
        "type": "ianaift:ethernetCsmacd",
        "admin-status": "up",
        "oper-status": "up",
        "last-change": "2024-02-03T11:22:41.081+00:00",
        "if-index": 1,
        "phys-address": "0c:00:00:37:d6:00",
        "speed": 1000000000,
        "statistics": {
          "discontinuity-time": "2024-02-03T11:20:38+00:00",
          "in-octets": 8157,
          "in-unicast-pkts": 94,
          "in-broadcast-pkts": 0,
          "in-multicast-pkts": 0,
          "in-discards": 0,
          "in-errors": 0,
          "in-unknown-protos": 0,
          "out-octets": 89363,
          "out-unicast-pkts": 209,
          "out-broadcast-pkts": 0,
          "out-multicast-pkts": 0,
          "out-discards": 0,
          "out-errors": 0
        }
      }
    ],
    "interfaces-provenance-augmented:interfaces-provenance": h'd28451a30363786d6c04676563322e6b65790126a0f6584033f0f1dc755ce062fdd639ae5399d681c98e3cf5690112c9916a39c30418bc6149a4a3174e48c0b40acfa7cbfa4a5d590f5a878a628c840a072cc1d5c41b6b70'
    }
}
]]></artwork>
        <t>Note that the provenance leaf in JSON would be represented in BASE64 value and in CBOR diagnostic is a byte string represented with an hexadecimal value.</t>
        <t>And the corresponding representation of the first enclosing method using YANG SIDs will be:</t>
        <artwork><![CDATA[
{
  1500: {                      / ietf-interfaces:interfaces /
    1501: [                     / interface list /
      {
        1502: "GigabitEthernet1",     / name /
        1503: 1800,                   / type identityref /
        1504: 1,                      / admin-status: up /
        1505: 1,                      / oper-status: up /
        1506: "2024-02-03T11:22:41.081+00:00", / last-change /
        1507: 1,                      / if-index /
        1508: "0c:00:00:37:d6:00",        / phys-address /
        1509: 1000000000,             / speed /
        1510: {                       / statistics /
          1511: "2024-02-03T11:20:38+00:00",
          1512: 8157,
          1513: 94,
          1514: 0,
          1515: 0,
          1516: 0,
          1517: 0,
          1518: 0,
          1519: 89363,
          1520: 209,
          1521: 0,
          1522: 0,
          1523: 0,
          1524: 0
        }
      }
    ],
    3162: h'd28451a30363786d6c04676563322e6b65790126a0f6584033f0f1dc755ce062fdd639ae5399d681c98e3cf5690112c9916a39c30418bc6149a4a3174e48c0b40acfa7cbfa4a5d590f5a878a628c840a072cc1d5c41b6b70'   / provenance-signature leaf /
  }
}

]]></artwork>
        <t>The following example illustrates the notification-based enclosing method (second method), represented in CBOR diagnostic notation.</t>
        <artwork><![CDATA[
{
    "ietf-yp-notification:envelope": {
        "event-time": "2013-12-21T00:01:00Z",
        "contents": {
            "ietf-yang-push:push-update": {
                "id": 1011,
                "datastore-contents": {
                    "ietf-interfaces:interfaces-state": {
                        "interface": [
                            {
                                "name": "GigabitEthernet1",
                                "type": "iana-if-type:ethernetCsmacd",
                                "admin-status": "up",
                                "oper-status": "up",
                                "last-change": "2024-02-03T11:22:41.081+00:00",
                                "if-index": 1,
                                "phys-address": "0c:00:00:37:d6:00",
                                "speed": 1000000000,
                                "statistics": {
                                    "discontinuity-time": "2024-02-03T11:20:38+00:00",
                                    "in-octets": 8157,
                                    "in-unicast-pkts": 94,
                                    "in-broadcast-pkts": 0,
                                    "in-multicast-pkts": 0,
                                    "in-discards": 0,
                                    "in-errors": 0,
                                    "in-unknown-protos": 0,
                                    "out-octets": 89363,
                                    "out-unicast-pkts": 209,
                                    "out-broadcast-pkts": 0,
                                    "out-multicast-pkts": 0,
                                    "out-discards": 0,
                                    "out-errors": 0
                                }
                            }
                        ]
                    }
                }
            }
        },
        "ietf-yp-provenance:provenance": h'd28451a30363786d6c04676563322e6b65790126a0f6584033f0f1dc755ce062fdd639ae5399d681c98e3cf5690112c9916a39c30418bc6149a4a3174e48c0b40acfa7cbfa4a5d590f5a878a628c840a072cc1d5c41b6b70'
    }
}
]]></artwork>
        <t>And thhis would be the second enclosing method example in YANG SID notation:</t>
        <artwork><![CDATA[
{
  2957: {                           / ietf-yp-notification:envelope /
    2959: "2024-10-10T08:00:11.22Z", / event-time /
    2958: {                           / contents /
      4000: {                         / push-update /
        4001: 1011,                   / id /
        4002: {                       / datastore-contents /
          1500: {                     / ietf-interfaces:interfaces /
            1501: [                    / interface list /
              {
                1502: "GigabitEthernet1",    / name /
                1503: 1800,                  / type identityref /
                1504: 1,                     / admin-status: up /
                1505: 1,                     / oper-status: up /
                1506: "2024-02-03T11:22:41.081+00:00", / last-change /
                1507: 1,                     / if-index /
                1508: "0c:00:00:37:d6:00",       / phys-address /
                1509: 1000000000,            / speed /
                1510: {                     / statistics /
                  1511: "2024-02-03T11:20:38+00:00", / discontinuity-time /
                  1512: 8157,
                  1513: 94,
                  1514: 0,
                  1515: 0,
                  1516: 0,
                  1517: 0,
                  1518: 0,
                  1519: 89363,
                  1520: 209,
                  1521: 0,
                  1522: 0,
                  1523: 0,
                  1524: 0
                }
              }
            ]
          }
        }
      }
    },
    3162: h'd28451a30363786d6c04676563322e6b65790126a0f6584033f0f1dc755ce062fdd639ae5399d681c98e3cf5690112c9916a39c30418bc6149a4a3174e48c0b40acfa7cbfa4a5d590f5a878a628c840a072cc1d5c41b6b70'  / provenance-signature/
  }
}
]]></artwork>
        <t>The following example illustrates the third enclosing method, represented in CBOR diagnostic notation.</t>
        <artwork><![CDATA[
{
  "ietf-yang-instance-data:instance-data-set": {
    "name": "interfaces-labTID-status",
    "contact": "sofia.garciarincon.practicas@telefonica.com",
    "timestamp": "Thu Jul 18 11:42:06 CEST 2024",
    "content-data": {
      "ietf-interfaces:interfaces": {
        "interface": [
          {
            "name": "GigabitEthernet1",
            "iana-if-type:type": "ianaift:ethernetCsmacd",
            "admin-status": "up",
            "oper-status": "up",
            "last-change": "2024-02-03T11:22:41.081+00:00",
            "if-index": 1,
            "phys-address": "0c:00:00:37:d6:00",
            "speed": 1000000000,
            "statistics": {
              "discontinuity-time": "2024-02-03T11:20:38+00:00",
              "in-octets": 8157,
              "in-unicast-pkts": 94,
              "in-broadcast-pkts": 0,
              "in-multicast-pkts": 0,
              "in-discards": 0,
              "in-errors": 0,
              "in-unknown-protos": 0,
              "out-octets": 89363,
              "out-unicast-pkts": 209,
              "out-broadcast-pkts": 0,
              "out-multicast-pkts": 0,
              "out-discards": 0,
              "out-errors": 0
            }
          }
        ]
      }
    },
    "ietf-yang-instance-data-provenance:provenance":
      h'd28451a30363786d6c04676563322e6b65790126a0f6584033f0f1dc755ce062fdd639ae5399d681c98e3cf5690112c9916a39c30418bc6149a4a3174e48c0b40acfa7cbfa4a5d590f5a878a628c840a072cc1d5c41b6b70'
  }
}
]]></artwork>
        <t>And this would be the third enclosing method using YANG SID notation:</t>
        <artwork><![CDATA[
{
  3170: {                             / ietf-yang-instance-data:instance-data-set /
    3171: "interfaces-labTID-status", / name /
    3172: "sofia.garciarincon.practicas@telefonica.com", / contact /
    3173: "Thu Jul 18 11:42:06 CEST 2024", / timestamp /
    3174: {                             / content-data /
      1500: {                           / ietf-interfaces:interfaces /
        1501: [                          / interface list /
          {
            1502: "GigabitEthernet1",
            1503: 1800,
            1504: 1,
            1505: 1,
            1506: "2024-02-03T11:22:41.081+00:00",
            1507: 1,
            1508: "0c:00:00:37:d6:00",
            1509: 1000000000,
            1510: {
              1511: "2024-02-03T11:20:38+00:00",
              1512: 8157,
              1513: 94,
              1514: 0,
              1515: 0,
              1516: 0,
              1517: 0,
              1518: 0,
              1519: 89363,
              1520: 209,
              1521: 0,
              1522: 0,
              1523: 0,
              1524: 0
            }
          }
        ]
      }
    },
    3162: h'd28451a30363786d6c04676563322e6b65790126a0f6584033f0f1dc755ce062fdd639ae5399d681c98e3cf5690112c9916a39c30418bc6149a4a3174e48c0b40acfa7cbfa4a5d590f5a878a628c840a072cc1d5c41b6b70'   / provenance-signature /
  }
}
]]></artwork>
        <t>Note that there is no IANA registered SID for ietf-yang-instance-data:instance-data-set, so a provisional one is used to complete the example.</t>
        <t>Finaly, the following example illustrates the fourth and last enclosing method using CBOR diagonstic notation:</t>
        <artwork><![CDATA[
{
  "ietf-interfaces:interfaces": {

    "interface": [
      {
        "name": "GigabitEthernet1",
        "iana-if-type:type": "ianaift:ethernetCsmacd",
        "admin-status": "up",
        "oper-status": "up",
        "last-change": "2024-02-03T11:22:41.081+00:00",
        "if-index": 1,
        "phys-address": "0c:00:00:37:d6:00",
        "speed": 1000000000,
        "statistics": {
          "discontinuity-time": "2024-02-03T11:20:38+00:00",
          "in-octets": 8157,
          "in-unicast-pkts": 94,
          "in-broadcast-pkts": 0,
          "in-multicast-pkts": 0,
          "in-discards": 0,
          "in-errors": 0,
          "in-unknown-protos": 0,
          "out-octets": 89363,
          "out-unicast-pkts": 209,
          "out-broadcast-pkts": 0,
          "out-multicast-pkts": 0,
          "out-discards": 0,
          "out-errors": 0
        }
      }
    ],

    "@": {
      "ypmd:provenance":
        h'd28451a30363786d6c04676563322e6b65790126a0f6584033f0f1dc755ce062fdd639ae5399d681c98e3cf5690112c9916a39c30418bc6149a4a3174e48c0b40acfa7cbfa4a5d590f5a878a628c840a072cc1d5c41b6b70'
    }
  }
}
]]></artwork>
        <t>While this last example uses YANG SID notation for the fourth enclosing method:</t>
        <artwork><![CDATA[
{
  1500: {                             / ietf-interfaces:interfaces /
    1501: [                              / interface list /
      {
        1502: "GigabitEthernet1",
        1503: 1800,
        1504: 1,
        1505: 1,
        1506: "2024-02-03T11:22:41.081+00:00",
        1507: 1,
        1508: "0c:00:00:37:d6:00",
        1509: 1000000000,
        1510: {
          1511: "2024-02-03T11:20:38+00:00",
          1512: 8157,
          1513: 94,
          1514: 0,
          1515: 0,
          1516: 0,
          1517: 0,
          1518: 0,
          1519: 89363,
          1520: 209,
          1521: 0,
          1522: 0,
          1523: 0,
          1524: 0
        }
      }
    ],
    3162: h'd28451a30363786d6c04676563322e6b65790126a0f6584033f0f1dc755ce062fdd639ae5399d681c98e3cf5690112c9916a39c30418bc6149a4a3174e48c0b40acfa7cbfa4a5d590f5a878a628c840a072cc1d5c41b6b70'  / provenance-signature/
  }
}
]]></artwork>
        <t>In the example above, the provenance-signature leaf is represented using the proposed assigned SID (3162). The representation of this leaf is the same whether it is added via the first enclosing method (as a direct augmentation of the interfaces container) or via the fourth enclosing method (as an annotation using the yp-provenance-metadata module). The only difference between these two methods is the semantic context and location of the leaf within the YANG data: in the first method it is part of the root container structure, while in the fourth method it is included as metadata in the @ annotation object. From the perspective of CBOR representation, SIDs are identical in both methods.</t>
        <t>NOTE TO THE RFC EDITOR: Replace the illustrative SID values with the final values allocated by IANA according to <xref target="RFC9595"/>.</t>
      </section>
    </section>
    <section numbered="false" anchor="appendix-b-provisional-yang-sid-file-sid-for-ietf-yang-provenance">
      <name>Appendix B. Provisional YANG SID File (.sid) for <tt>ietf-yang-provenance</tt></name>
      <t>The following <tt>.sid</tt> file is provided as a provisional example for implementers. It maps schema nodes defined in the <tt>ietf-yang-provenance</tt> module to numeric SIDs for use in CBOR compact encoding. These SIDs are provisional and will be replaced by IANA-assigned values upon publication of the RFC.</t>
      <sourcecode markers="true" name="ietf-yang-provenance@2025-05-09.yang"><![CDATA[

{
    "ietf-sid-file:sid-file": {
        "module-name": "ietf-yang-provenance",
        "module-revision": "2025-05-09",
        "sid-file-status": "unpublished",
        "description": "Provisional SIDs for ietf-yang-provenance module",
        "reference": "RFC-to-be: Applying COSE Signatures for YANG Data Provenance",
        "dependency-revision": [],
        "assignment-range": [
            {
                "entry-point": "3161",
                "size": "20"
            }
        ],
        "item": [
            {
                "status": "unstable",
                "namespace": "module",
                "identifier": "ietf-yang-provenance",
                "sid": "3161"
            },
            {
                "status": "unstable",
                "namespace": "data",
                "identifier": "/ietf-yang-provenance:provenance-signature",
                "sid": "3162"
            }
        ]
    }
}
]]></sourcecode>
    </section>
    <section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>Thanks to Sofia Garcia (UC3M, sgarciarincon01@gmail.com) for being instrumental in demonstrating the feasibility of the proposed approach, providing a first proof of concept of YANG provenance signatures.</t>
      <t>This document is based on work partially funded by the EU Horizon Europe projects iTrust6G (grant 101139198), CYBERNEMO (grant 101168182), cPAID (grant 101168407), MARE (grant 101191436), and 6G-DALI (grant 101192750).</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
AvnqkoYuD4Jh8kZplCLUwmFicT4mxr2MpG4TS5NuK5dC1lCrXHyJdf2Qplgm
jgQfwn7qbDQ73Wa3c4HbqAM76b3cSubSZrMz625cRc9yETn7F9Pw447v2FSj
6G3K7/lqksuGi1z5PAHOvaQCK5BgXXZlUqxrLCTJZjssIM260GeSaAOJUlKt
X9+FZOtKi0i3KVRFwnWJLyHlZn4LSLpdaCFptwsupoF2ycWk0C5ZRRHtMuWk
353CIhagSy5mBU6xxSzBKboiWJazCKfoUsBUsAz1+VRb9PvXWtkbl918Uuym
EAnXK7CVpUwlfHH04uVPL55fdLov01eXt9nu2yg6Ot7eAgmaWjhaH3e6fnIw
jL67Ge1cbHcGF+9GT576R8Evu/tbT9rX4zdvz07fB/0P6z///CS4efM++Pnd
0/ePT38yHOWv7Va3uFLBL1uWgV9zKKLYyJss6h95/YvjQ0VDLf7kDahqPY2H
ode69JJB6GEy7XjSmibwEtEz52dW1XUKLmrgYjQTz2eR6OwKoEab3V57Wxwc
nV9QytAcR2QXvsizxcW6Apcr0Rfwk+NqKzKtum0M7t2Jey3nXEu51pdwrAXc
6s6caimXWsyhvpg7LeVMK3Gl1TjSatxoGSdazIVW40ArcJ8VOc+KXGdFjrOU
2yziNDZXMd8VdynjI4tCTmy+IlZkLON4uj7YuTkZ/H42Ds9f/zzf3nqy/mr7
tNvxU86effX7059+Pz48Cz+OZhtvT27CvefBdz+/GW6lH26i0fnNTwf+9dZs
Z3z2i7f92t/zRwc3/q1/drCfYyx/RQ9q3nmqm13dddrQqYATUNPGeNuTzEeH
+TjUJRGtbmsjd1HEiqYh4gp545Cotg6JJeahIokXdzcWiYXWouJbm7KLz7IX
iQUGI7GaxUgsNxmJ5TajkuEvNxqJFaxGYgWzkVhuNyoroslX2UtJuspe5ah2
oYhFssVKxiOxkvWotJ9l03TIdOlba6JLLEg/ukJWLoaAZIglZPdk/fB249nP
g82nL/c6v49nb7Ymby8H49PXr3+e7p+9fH71Nt66ufnp3fXTJ8+nL05+ubj6
fT/bT15Pd6+3z6PO+8POh2fh+MXJaD9+9vLk2c+3j7NkICmuORWuMoAdPD49
K3e97dv32HAur+7WJlKtihP1J/vvUMpPApOwCegYdiAJaxBm6uZ1JrDiAb3F
c+iTmLKgK+q4JlTazvPjQ5Lqx96UkmjyEauqenhX8kR2R6fBKe+mNuZjhucJ
5g6g/LmU7FX5Ccn7p5OwO1NwskdIutwSj2PKCCtLqutK3NNibn4mUknk8WxK
SuzxTQE6p1irVnt1enEkLk7FxbMjStd2dHh8cXrGGQwxR9q1F80CR8fhPtVZ
csykilxF5bWm1MEDTmuN6d2aXmoSB88CfX0uZ/nkFLLywHqp22W536KhV71k
fe6dGvdOjXunxl/CqSFGf/O7u5tbHW+jDVDY2d32twftze2d7a3tjY1uN9ju
b2/t7LU73W2vPdze2t1sb2wM28OOP9jZ2hoE7e3u0Pe3N/a8YGtjb8/f3u0M
9naDjcFwaxtqdbqDvb3OtrexN9hob3Z2+4Ptzuaet+ltdHY2g83dQbu/2fYG
Q29n0B/C4y1/a6893PJ2d3a97e7uALrz2jvdwaDjbw02O/3t/k77b5LFSfaG
V5BzUrzcyV6Zv4VpvmYOOcb1eP/8aHuTySRnFS+SNUr93Z9nOvOc3QbnRpmI
ETAAzAk+9iJurYVZJf0SLcXlJir1SgUhZiZneCQR5n5gUdjOFuxc8Yco/azn
c69YeCDWCZBQv4OujIrqOpAmAgIjq9jUGap3S2mzbID487pdfAOI2C6Qr9L+
OKOOSdjiVt1EAlo1U5uw98Rs6lbdWlTVovrFmtvLST00YfEGt/rOoo4VZ3Cr
7JYzA1PN5hxu1T2HQ+R6Ix7ilO9Uow6W12zFqkTVOiszESjcLXIPeLqRZxjw
bDNHAuHRVvHRdvHRTvHRbvHRXgmt72zByPPUHR52CtVh1QuPNoqPNpfS6o3O
dvcvSXgJKarDcdZrecf04nRI+QQLzb6HuUULNPCB9G/zz7VGqfJRIoa2DJFc
6q929DnLZb3YY02lK3zLq/uuTfmiD1u/W+rLzvd7F6+2W7vCZVD8VDeiG7uD
N7xQ15bptUVqqYu80MxKLvNCrVVc6IVKX+hSL7S32MVeKP45LvdCI6u44IuV
lrnkS+p8DSd9SbOruO3Lq63kyC+vupoPu7zuak7t8rrLvNzltRYHBJTXWS1E
oKTuakEDFRVXCyOoqPzZi7J6qEFF5c9YliXhCPlPPjxh1be/lr4plnefWCEO
tlljcWDDX1HCcVVL1t8ojlepj9mCcDst40y0wlZmEuvube1US934WRcLhRUp
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
P20e7r88dl53d7baa63a/wMMVPflChUBAA==

-->

</rfc>
