<?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.29 (Ruby 3.4.4) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-opsawg-yang-provenance-03" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.31.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-03"/>
    <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="2025" month="November" day="03"/>
    <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 75?>

<t>This document defines a mechanism based on 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 stream 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 integritu of datasets and/or data streams. 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 79?>

<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 streaming 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 a documented trail accounting for the origin of a piece of data and where it has moved from to where it is presently. The signature mechanism provided here can be recursively applied to allow this accounting for YANG data.</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>
      </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 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>
    <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="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>Huawei</organization>
            </author>
            <date day="20" month="October" year="2025"/>
            <abstract>
              <t>   This document defines a new extensible notification structure,
   defined in YANG, for use in YANG-Push Notification messages 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 changed data was
   observed.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-netconf-notif-envelope-03"/>
        </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>
      </references>
    </references>
    <?line 724?>

<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">
            <subscription-id>2147483648</subscription-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",
    "ietf-yp-provenance:provenance":
    "0oRRowNjeG1sBGdlYzIua2V5ASag9lhAiKEKLQKJT12LsNgxt8WllEI65lyi
     E/m12drCfl+wh7T61cTYhFGdEeX8A5F0vmUWROZebq/VVFewUZeVYGZBOQ==",
    "contents": {
      "ietf-yang-push:push-update": {
        "subscription-id": 2147483648,
        "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
                }
              }
            ]
          }
        }
      }
    }
  }
}
]]></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",
    "ietf-yang-instance-data-provenance:provenance" :
    "0oRRowNjeG1sBGdlYzIua2V5ASag9lhAmop/c7wMcjRmiSPVy65F/N6O21dsG
     kjGQjIDRizhu3WMwi9Je+VUf5sqwlhSwQCdv5u7mRXa6Pd9dhCwdxdRCA==",
    "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
            }
          }
        ]
      }
    }
  }
}
]]></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" : {
    "@": {
      "ypmd:provenance": "0oRRowNjeG1sBGdlYzIua2V5ASag9lhAM/Dx3HVc4GL91jmuU5nWgcmOPPVpARLJkWo5wwQYvGFJpKMXTkjAtArPp8v6Sl1ZD1qHimKMhAoHLMHVxBtrcA=="
    },
    "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
        }
      }
    ]
  }
}
]]></artwork>
      </section>
      <section numbered="false" anchor="cbor">
        <name>CBOR</name>
        <t>TBD, as the reference implementation evolves.</t>
      </section>
    </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 PRIVATEER (grant 101096110), HORSE (grant 101096342), MARE (grant 101191436), ACROSS (grant 101097122), iTrust6G (grant 101139198) and CYBERNEMO (grant 101168182).</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
dnh6br/f3mnsNNdqpf8DLw+p1N3PAAA=

-->

</rfc>
