Internet Engineering Task Force (IETF)                    A. Lindem, Ed.
Request for Comments: 8177                                 Cisco Systems
Category: Standards Track                                          Y. Qu
ISSN: 2070-1721                                                   Huawei
                                                                D. Yeung
                                                             Arrcus, Inc
                                                                 I. Chen
                                                                   Jabil
                                                                J. Zhang
                                                        Juniper Networks
                                                               June 2017
        
Internet Engineering Task Force (IETF)                    A. Lindem, Ed.
Request for Comments: 8177                                 Cisco Systems
Category: Standards Track                                          Y. Qu
ISSN: 2070-1721                                                   Huawei
                                                                D. Yeung
                                                             Arrcus, Inc
                                                                 I. Chen
                                                                   Jabil
                                                                J. Zhang
                                                        Juniper Networks
                                                               June 2017
        

YANG Data Model for Key Chains

关键链的YANG数据模型

Abstract

摘要

This document describes the key chain YANG data model. Key chains are commonly used for routing protocol authentication and other applications requiring symmetric keys. A key chain is a list containing one or more elements containing a Key ID, key string, send/accept lifetimes, and the associated authentication or encryption algorithm. By properly overlapping the send and accept lifetimes of multiple key chain elements, key strings and algorithms may be gracefully updated. By representing them in a YANG data model, key distribution can be automated.

本文档描述了密钥链数据模型。密钥链通常用于路由协议身份验证和其他需要对称密钥的应用程序。密钥链是一个包含一个或多个元素的列表,其中包含密钥ID、密钥字符串、发送/接受生存期以及相关的身份验证或加密算法。通过适当地重叠多个密钥链元素的发送和接受生命周期,可以优雅地更新密钥字符串和算法。通过在YANG数据模型中表示它们,可以实现密钥分发的自动化。

Status of This Memo

关于下段备忘

This is an Internet Standards Track document.

这是一份互联网标准跟踪文件。

This document is a product of the Internet Engineering Task Force (IETF). It represents the consensus of the IETF community. It has received public review and has been approved for publication by the Internet Engineering Steering Group (IESG). Further information on Internet Standards is available in Section 2 of RFC 7841.

本文件是互联网工程任务组(IETF)的产品。它代表了IETF社区的共识。它已经接受了公众审查,并已被互联网工程指导小组(IESG)批准出版。有关互联网标准的更多信息,请参见RFC 7841第2节。

Information about the current status of this document, any errata, and how to provide feedback on it may be obtained at http://www.rfc-editor.org/info/rfc8177.

有关本文件当前状态、任何勘误表以及如何提供反馈的信息,请访问http://www.rfc-editor.org/info/rfc8177.

Copyright Notice

版权公告

Copyright (c) 2017 IETF Trust and the persons identified as the document authors. All rights reserved.

版权所有(c)2017 IETF信托基金和确定为文件作者的人员。版权所有。

This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (http://trustee.ietf.org/license-info) in effect on the date of publication of this document. Please review these documents carefully, as they describe your rights and restrictions with respect to this document. Code Components extracted from this document must include Simplified BSD License text as described in Section 4.e of the Trust Legal Provisions and are provided without warranty as described in the Simplified BSD License.

本文件受BCP 78和IETF信托有关IETF文件的法律规定的约束(http://trustee.ietf.org/license-info)自本文件出版之日起生效。请仔细阅读这些文件,因为它们描述了您对本文件的权利和限制。从本文件中提取的代码组件必须包括信托法律条款第4.e节中所述的简化BSD许可证文本,并提供简化BSD许可证中所述的无担保。

Table of Contents

目录

   1.  Introduction  . . . . . . . . . . . . . . . . . . . . . . . .   3
     1.1.  Requirements Notation . . . . . . . . . . . . . . . . . .   3
     1.2.  Tree Diagrams . . . . . . . . . . . . . . . . . . . . . .   3
   2.  Problem Statement . . . . . . . . . . . . . . . . . . . . . .   4
     2.1.  Applicability . . . . . . . . . . . . . . . . . . . . . .   4
     2.2.  Graceful Key Rollover Using Key Chains  . . . . . . . . .   4
   3.  Design of the Key Chain Model . . . . . . . . . . . . . . . .   5
     3.1.  Key Chain Operational State . . . . . . . . . . . . . . .   6
     3.2.  Key Chain Model Features  . . . . . . . . . . . . . . . .   6
     3.3.  Key Chain Model Tree  . . . . . . . . . . . . . . . . . .   7
   4.  Key Chain YANG Model  . . . . . . . . . . . . . . . . . . . .   8
   5.  Security Considerations . . . . . . . . . . . . . . . . . . .  16
   6.  IANA Considerations . . . . . . . . . . . . . . . . . . . . .  17
   7.  References  . . . . . . . . . . . . . . . . . . . . . . . . .  18
     7.1.  Normative References  . . . . . . . . . . . . . . . . . .  18
     7.2.  Informative References  . . . . . . . . . . . . . . . . .  19
   Appendix A.  Examples . . . . . . . . . . . . . . . . . . . . . .  21
     A.1.  Simple Key Chain with an Always Valid Single Key  . . . .  21
     A.2.  Key Chain with Keys Having Different Lifetimes  . . . . .  21
     A.3.  Key Chain with Independent Send and Accept Lifetimes  . .  23
   Contributors  . . . . . . . . . . . . . . . . . . . . . . . . . .  24
   Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . .  24
   Authors' Addresses  . . . . . . . . . . . . . . . . . . . . . . .  25
        
   1.  Introduction  . . . . . . . . . . . . . . . . . . . . . . . .   3
     1.1.  Requirements Notation . . . . . . . . . . . . . . . . . .   3
     1.2.  Tree Diagrams . . . . . . . . . . . . . . . . . . . . . .   3
   2.  Problem Statement . . . . . . . . . . . . . . . . . . . . . .   4
     2.1.  Applicability . . . . . . . . . . . . . . . . . . . . . .   4
     2.2.  Graceful Key Rollover Using Key Chains  . . . . . . . . .   4
   3.  Design of the Key Chain Model . . . . . . . . . . . . . . . .   5
     3.1.  Key Chain Operational State . . . . . . . . . . . . . . .   6
     3.2.  Key Chain Model Features  . . . . . . . . . . . . . . . .   6
     3.3.  Key Chain Model Tree  . . . . . . . . . . . . . . . . . .   7
   4.  Key Chain YANG Model  . . . . . . . . . . . . . . . . . . . .   8
   5.  Security Considerations . . . . . . . . . . . . . . . . . . .  16
   6.  IANA Considerations . . . . . . . . . . . . . . . . . . . . .  17
   7.  References  . . . . . . . . . . . . . . . . . . . . . . . . .  18
     7.1.  Normative References  . . . . . . . . . . . . . . . . . .  18
     7.2.  Informative References  . . . . . . . . . . . . . . . . .  19
   Appendix A.  Examples . . . . . . . . . . . . . . . . . . . . . .  21
     A.1.  Simple Key Chain with an Always Valid Single Key  . . . .  21
     A.2.  Key Chain with Keys Having Different Lifetimes  . . . . .  21
     A.3.  Key Chain with Independent Send and Accept Lifetimes  . .  23
   Contributors  . . . . . . . . . . . . . . . . . . . . . . . . . .  24
   Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . .  24
   Authors' Addresses  . . . . . . . . . . . . . . . . . . . . . . .  25
        
1. Introduction
1. 介绍

This document describes the key chain YANG [YANG-1.1] data model. Key chains are commonly used for routing protocol authentication and other applications requiring symmetric keys. A key chain is a list containing one or more elements containing a Key ID, key string, send/accept lifetimes, and the associated authentication or encryption algorithm. By properly overlapping the send and accept lifetimes of multiple key chain elements, key strings and algorithms may be gracefully updated. By representing them in a YANG data model, key distribution can be automated.

本文档描述了关键链YANG[YANG-1.1]数据模型。密钥链通常用于路由协议身份验证和其他需要对称密钥的应用程序。密钥链是一个包含一个或多个元素的列表,其中包含密钥ID、密钥字符串、发送/接受生存期以及相关的身份验证或加密算法。通过适当地重叠多个密钥链元素的发送和接受生命周期,可以优雅地更新密钥字符串和算法。通过在YANG数据模型中表示它们,可以实现密钥分发的自动化。

In some applications, the protocols do not use the key chain element key directly, but rather a key derivation function is used to derive a short-lived key from the key chain element key (e.g., the master keys used in [TCP-AO]).

在一些应用中,协议不直接使用密钥链元素密钥,而是使用密钥派生函数从密钥链元素密钥(例如,[TCP-AO]中使用的主密钥)派生出短期密钥。

1.1. Requirements Notation
1.1. 需求符号

The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in BCP 14 [KEYWORDS] [KEYWORDS-UPD] when, and only when, they appear in all capitals, as shown here.

本文件中的关键词“必须”、“不得”、“必需”、“应”、“不应”、“建议”、“不建议”、“可”和“可选”在所有大写字母出现时(且仅在所有大写字母出现时)应按照BCP 14[关键词][关键词-UPD]中的说明进行解释,如下所示。

1.2. Tree Diagrams
1.2. 树形图

A simplified graphical representation of the complete data tree is presented in Section 3.3. The following tree notation is used.

完整数据树的简化图形表示如第3.3节所示。使用以下树表示法。

o Brackets "[" and "]" enclose YANG list keys. These YANG list keys should not be confused with the key chain keys.

o 括号“[”和“]”包含列表键。这些列表键不应与钥匙链键混淆。

o Curly braces "{" and "}" contain names of optional features that make the corresponding node conditional.

o 大括号“{”和“}”包含使相应节点具有条件的可选功能的名称。

o Abbreviations before data node names: "rw" means configuration (read-write), "ro" means state data (read-only), "-x" means RPC operations, and "-n" means notifications.

o 数据节点名称前的缩写:“rw”表示配置(读写),“ro”表示状态数据(只读),“-x”表示RPC操作,“-n”表示通知。

o Symbols after data node names: "?" means an optional node, "!" denotes a container with presence, and "*" denotes a "list" or "leaf-list".

o 数据节点名称后的符号:“?”表示可选节点,“!”表示存在的容器,“*”表示“列表”或“叶列表”。

o Parentheses enclose choice and case nodes, and case nodes are also marked with a colon (":").

o 括号括住选项和事例节点,事例节点也用冒号(“:”)标记。

o Ellipsis ("...") stands for contents of subtrees that are not shown.

o 省略号(“…”)表示未显示的子树的内容。

2. Problem Statement
2. 问题陈述

This document describes a YANG [YANG-1.1] data model for key chains. Key chains have been implemented and deployed by a large percentage of network equipment vendors. Providing a standard YANG model will facilitate automated key distribution and non-disruptive key rollover. This will aid in tightening the security of the core routing infrastructure as recommended in [IAB-REPORT].

本文档描述了钥匙链的YANG[YANG-1.1]数据模型。大部分网络设备供应商已经实施并部署了密钥链。提供标准的YANG模型将促进自动密钥分发和无中断密钥翻转。这将有助于按照[IAB-REPORT]中的建议加强核心路由基础设施的安全性。

A key chain is a list containing one or more elements containing a Key ID, key string, send/accept lifetimes, and the associated authentication or encryption algorithm. A key chain can be used by any service or application requiring authentication or encryption using symmetric keys. In essence, the key chain is a reusable key policy that can be referenced wherever it is required. The key chain construct has been implemented by most networking vendors and deployed in many networks.

密钥链是一个包含一个或多个元素的列表,其中包含密钥ID、密钥字符串、发送/接受生存期以及相关的身份验证或加密算法。任何需要使用对称密钥进行身份验证或加密的服务或应用程序都可以使用密钥链。本质上,密钥链是一个可重用的密钥策略,可以在需要时引用。大多数网络供应商已经实施了密钥链构造,并部署在许多网络中。

A conceptual representation of a crypto key table is described in [CRYPTO-KEYTABLE]. The crypto key table includes keys as well as their corresponding lifetimes and algorithms. Additionally, the key table includes key selection criteria and is designed for a deployment model where the details of the applications or services requiring authentication or encryption permeate into the key database. The YANG key chain model described herein doesn't include key selection criteria or support this deployment model. At the same time, it does not preclude it. [YANG-CRYPTO-KEYTABLE] describes augmentations to the key chain YANG model in support of key selection criteria.

[crypto-KEYTABLE]中描述了加密密钥表的概念表示。加密密钥表包括密钥及其相应的生存期和算法。此外,密钥表包括密钥选择标准,并针对需要验证或加密的应用程序或服务的详细信息渗透到密钥数据库中的部署模型而设计。本文描述的YANG密钥链模型不包括密钥选择标准,也不支持此部署模型。同时,这并不排除它。[YANG-CRYPTO-KEYTABLE]描述了对密钥链YANG模型的扩充,以支持密钥选择标准。

2.1. Applicability
2.1. 适用性

Other YANG modules may reference ietf-key-chain YANG module key-chain names for authentication and encryption applications. A YANG type has been provided to facilitate reference to the key-chain name without having to specify the complete YANG XML Path Language (XPath) expression.

其他YANG模块可参考ietf密钥链YANG模块密钥链名称,用于认证和加密应用。提供了一个YANG类型,以便于引用密钥链名称,而无需指定完整的YANG XML路径语言(XPath)表达式。

2.2. Graceful Key Rollover Using Key Chains
2.2. 使用关键点链的优雅关键点翻转

Key chains may be used to gracefully update the key string and/or algorithm used by an application for authentication or encryption. To achieve graceful key rollover, the receiver MAY accept all the

密钥链可用于优雅地更新应用程序用于认证或加密的密钥字符串和/或算法。为了实现优雅的键翻转,接收器可以接受所有

keys that have a valid accept lifetime, and the sender MAY send the key with the most recent send lifetime. One scenario for facilitating key rollover is to:

具有有效接受生存期的密钥,并且发送方可以发送具有最近发送生存期的密钥。促进关键过渡的一种方案是:

1. Distribute a key chain with a new key to all the routers or other network devices in the domain of that key chain. The new key's accept lifetime should be such that it is accepted during the key rollover period. The send lifetime should be a time in the future when it can be assured that all the routers in the domain of that key are upgraded. This will have no immediate impact on the keys used for transmission.

1. 将带有新密钥的密钥链分发给该密钥链域中的所有路由器或其他网络设备。新密钥的接受生存期应使其在密钥翻转期间被接受。发送生命周期应该是将来可以确保该密钥所在域中的所有路由器都已升级的时间。这不会立即影响用于变速箱的钥匙。

2. Assure that all the network devices have been updated with the updated key chain and that their system times are roughly synchronized. The system times of devices within an administrative domain are commonly synchronized (e.g., using the Network Time Protocol (NTP) [NTP-PROTO]). This also may be automated.

2. 确保所有网络设备都已使用更新的密钥链进行了更新,并且它们的系统时间大致同步。管理域内设备的系统时间通常是同步的(例如,使用网络时间协议(NTP)[NTP-PROTO])。这也可能是自动化的。

3. When the send lifetime of the new key becomes valid, the network devices within the domain of that key chain will use the new key for transmissions.

3. 当新密钥的发送生存期变为有效时,该密钥链域内的网络设备将使用新密钥进行传输。

4. At some point in the future, a new key chain with the old key removed may be distributed to the network devices within the domain of the key chain. However, this may be deferred until the next key rollover. If this is done, the key chain will always include two keys: either the current and future key (during key rollovers) or the current and previous keys (between key rollovers).

4. 在将来的某个时刻,移除旧密钥的新密钥链可以分发到密钥链域内的网络设备。但是,这可能会推迟到下一个关键点滚动。如果这样做,钥匙链将始终包括两个钥匙:当前和未来钥匙(在钥匙翻转期间)或当前和以前的钥匙(在钥匙翻转之间)。

Since the most recent send lifetime is defined as the one with the latest start-time, specification of "always" will prevent using the graceful key rollover technique described above. Other key configuration and usage scenarios are possible, but these are beyond the scope of this document.

由于最近的发送生命周期被定义为具有最新开始时间的生命周期,“始终”的规范将阻止使用上述优雅的键翻转技术。其他关键配置和使用场景也是可能的,但这些都超出了本文档的范围。

3. Design of the Key Chain Model
3. 密钥链模型的设计

The ietf-key-chain module contains a list of one or more keys indexed by a Key ID. For some applications (e.g., OSPFv3 [OSPFV3-AUTH]), the Key ID is used to identify the key chain key to be used. In addition to the Key ID, each key chain key includes a key string and a cryptographic algorithm. Optionally, the key chain keys include send/accept lifetimes. If the send/accept lifetime is unspecified, the key is always considered valid.

ietf密钥链模块包含由密钥ID索引的一个或多个密钥的列表。对于某些应用程序(例如,OSPFv3[OSPFv3-AUTH]),密钥ID用于标识要使用的密钥链密钥。除了密钥ID之外,每个密钥链密钥还包括密钥字符串和加密算法。或者,密钥链键包括发送/接受生存期。如果未指定发送/接受生存期,则始终认为密钥有效。

Note that different key values for transmission versus acceptance may be supported with multiple key chain elements. The key used for transmission will have a valid send-lifetime and invalid accept-lifetime (e.g., has an end-time equal to the start-time). The key used for acceptance will have a valid accept-lifetime and invalid send-lifetime.

请注意,多个关键链元素可能支持传输和接收的不同关键值。用于传输的密钥将具有有效的发送生存期和无效的接受生存期(例如,结束时间等于开始时间)。用于接受的密钥将具有有效的接受生存期和无效的发送生存期。

Due to the differences in key chain implementations across various vendors, some of the data elements are optional. Finally, the crypto algorithm identities are provided for reuse when configuring legacy authentication and encryption not using key chains.

由于不同供应商的密钥链实现不同,一些数据元素是可选的。最后,在配置不使用密钥链的旧式身份验证和加密时,将提供加密算法标识以供重用。

A key chain is identified by a unique name within the scope of the network device. The "key-chain-ref" typedef SHOULD be used by other YANG modules when they need to reference a configured key chain.

密钥链由网络设备范围内的唯一名称标识。当其他模块需要参考配置的钥匙链时,应使用“钥匙链参考”类型定义。

3.1. Key Chain Operational State
3.1. 钥匙链操作状态

The key chain operational state is included in the same tree as key chain configuration consistent with Network Management Datastore Architecture [NMDA]. The timestamp of the last key chain modification is also maintained in the operational state. Additionally, the operational state includes an indication of whether or not a key chain key is valid for transmission or acceptance.

密钥链操作状态包含在与网络管理数据存储体系结构[NMDA]一致的密钥链配置相同的树中。最后一次钥匙链修改的时间戳也保持在操作状态。此外,操作状态包括指示钥匙链钥匙是否对传输或接受有效。

3.2. Key Chain Model Features
3.2. 关键链模型特征

Features are used to handle differences between vendor implementations. For example, not all vendors support configuration of an acceptance tolerance or configuration of key strings in hexadecimal. They are also used to support security requirements (e.g., TCP-AO algorithms [TCP-AO-ALGORITHMS]) not yet implemented by vendors or implemented by only a single vendor.

特性用于处理供应商实现之间的差异。例如,并非所有供应商都支持接受公差的配置或十六进制键字符串的配置。它们还用于支持尚未由供应商实施或仅由单个供应商实施的安全需求(例如,TCP-AO算法[TCP-AO-algorithms])。

It is common for an entity with sufficient permissions to read and store a device's configuration, which would include the contents of this model. To avoid unnecessarily seeing and storing the keys in cleartext, this model provides the aes-key-wrap feature. More details are described in the Security Considerations (Section 5).

对于具有足够权限读取和存储设备配置(包括此模型的内容)的实体来说,这是很常见的。为了避免不必要地以明文形式查看和存储密钥,该模型提供了aes密钥包装功能。安全注意事项(第5节)中描述了更多详细信息。

3.3. Key Chain Model Tree
3.3. 密钥链模型树
   +--rw key-chains
      +--rw key-chain* [name]
      |  +--rw name                       string
      |  +--rw description?               string
      |  +--rw accept-tolerance {accept-tolerance}?
      |  |  +--rw duration?   uint32
      |  +--ro last-modified-timestamp?   yang:date-and-time
      |  +--rw key* [key-id]
      |     +--rw key-id                    uint64
      |     +--rw lifetime
      |     |  +--rw (lifetime)?
      |     |     +--:(send-and-accept-lifetime)
      |     |     |  +--rw send-accept-lifetime
      |     |     |     +--rw (lifetime)?
      |     |     |        +--:(always)
      |     |     |        |  +--rw always?            empty
      |     |     |        +--:(start-end-time)
      |     |     |           +--rw start-date-time?
      |     |     |           |       yang:date-and-time
      |     |     |           +--rw (end-time)?
      |     |     |              +--:(infinite)
      |     |     |              |  +--rw no-end-time?       empty
      |     |     |              +--:(duration)
      |     |     |              |  +--rw duration?          uint32
      |     |     |              +--:(end-date-time)
      |     |     |                 +--rw end-date-time?
      |     |     |                         yang:date-and-time
      |     |     +--:(independent-send-accept-lifetime)
      |     |        |   {independent-send-accept-lifetime}?
      |     |        +--rw send-lifetime
      |     |        |  +--rw (lifetime)?
      |     |        |     +--:(always)
      |     |        |     |  +--rw always?            empty
      |     |        |     +--:(start-end-time)
      |     |        |        +--rw start-date-time?
      |     |        |        |       yang:date-and-time
      |     |        |        +--rw (end-time)?
      |     |        |           +--:(infinite)
      |     |        |           |  +--rw no-end-time?       empty
      |     |        |           +--:(duration)
      |     |        |           |  +--rw duration?          uint32
      |     |        |           +--:(end-date-time)
      |     |        |              +--rw end-date-time?
      |     |        |                      yang:date-and-time
      |     |        +--rw accept-lifetime
      |     |           +--rw (lifetime)?
        
   +--rw key-chains
      +--rw key-chain* [name]
      |  +--rw name                       string
      |  +--rw description?               string
      |  +--rw accept-tolerance {accept-tolerance}?
      |  |  +--rw duration?   uint32
      |  +--ro last-modified-timestamp?   yang:date-and-time
      |  +--rw key* [key-id]
      |     +--rw key-id                    uint64
      |     +--rw lifetime
      |     |  +--rw (lifetime)?
      |     |     +--:(send-and-accept-lifetime)
      |     |     |  +--rw send-accept-lifetime
      |     |     |     +--rw (lifetime)?
      |     |     |        +--:(always)
      |     |     |        |  +--rw always?            empty
      |     |     |        +--:(start-end-time)
      |     |     |           +--rw start-date-time?
      |     |     |           |       yang:date-and-time
      |     |     |           +--rw (end-time)?
      |     |     |              +--:(infinite)
      |     |     |              |  +--rw no-end-time?       empty
      |     |     |              +--:(duration)
      |     |     |              |  +--rw duration?          uint32
      |     |     |              +--:(end-date-time)
      |     |     |                 +--rw end-date-time?
      |     |     |                         yang:date-and-time
      |     |     +--:(independent-send-accept-lifetime)
      |     |        |   {independent-send-accept-lifetime}?
      |     |        +--rw send-lifetime
      |     |        |  +--rw (lifetime)?
      |     |        |     +--:(always)
      |     |        |     |  +--rw always?            empty
      |     |        |     +--:(start-end-time)
      |     |        |        +--rw start-date-time?
      |     |        |        |       yang:date-and-time
      |     |        |        +--rw (end-time)?
      |     |        |           +--:(infinite)
      |     |        |           |  +--rw no-end-time?       empty
      |     |        |           +--:(duration)
      |     |        |           |  +--rw duration?          uint32
      |     |        |           +--:(end-date-time)
      |     |        |              +--rw end-date-time?
      |     |        |                      yang:date-and-time
      |     |        +--rw accept-lifetime
      |     |           +--rw (lifetime)?
        
      |     |              +--:(always)
      |     |              |  +--rw always?            empty
      |     |              +--:(start-end-time)
      |     |                 +--rw start-date-time?
      |     |                 |       yang:date-and-time
      |     |                 +--rw (end-time)?
      |     |                    +--:(infinite)
      |     |                    |  +--rw no-end-time?       empty
      |     |                    +--:(duration)
      |     |                    |  +--rw duration?          uint32
      |     |                    +--:(end-date-time)
      |     |                       +--rw end-date-time?
      |     |                               yang:date-and-time
      |     +--rw crypto-algorithm identityref
      |     +--rw key-string
      |     |  +--rw (key-string-style)?
      |     |     +--:(keystring)
      |     |     |  +--rw keystring?            string
      |     |     +--:(hexadecimal) {hex-key-string}?
      |     |        +--rw hexadecimal-string?   yang:hex-string
      |     +--ro send-lifetime-active?     boolean
      |     +--ro accept-lifetime-active?   boolean
      +--rw aes-key-wrap {aes-key-wrap}?
         +--rw enable?   boolean
        
      |     |              +--:(always)
      |     |              |  +--rw always?            empty
      |     |              +--:(start-end-time)
      |     |                 +--rw start-date-time?
      |     |                 |       yang:date-and-time
      |     |                 +--rw (end-time)?
      |     |                    +--:(infinite)
      |     |                    |  +--rw no-end-time?       empty
      |     |                    +--:(duration)
      |     |                    |  +--rw duration?          uint32
      |     |                    +--:(end-date-time)
      |     |                       +--rw end-date-time?
      |     |                               yang:date-and-time
      |     +--rw crypto-algorithm identityref
      |     +--rw key-string
      |     |  +--rw (key-string-style)?
      |     |     +--:(keystring)
      |     |     |  +--rw keystring?            string
      |     |     +--:(hexadecimal) {hex-key-string}?
      |     |        +--rw hexadecimal-string?   yang:hex-string
      |     +--ro send-lifetime-active?     boolean
      |     +--ro accept-lifetime-active?   boolean
      +--rw aes-key-wrap {aes-key-wrap}?
         +--rw enable?   boolean
        
4. Key Chain YANG Model
4. 关键链杨模型
   <CODE BEGINS> file "ietf-key-chain@2017-06-15.yang"
   module ietf-key-chain {
     yang-version 1.1;
     namespace "urn:ietf:params:xml:ns:yang:ietf-key-chain";
     prefix key-chain;
        
   <CODE BEGINS> file "ietf-key-chain@2017-06-15.yang"
   module ietf-key-chain {
     yang-version 1.1;
     namespace "urn:ietf:params:xml:ns:yang:ietf-key-chain";
     prefix key-chain;
        
     import ietf-yang-types {
       prefix yang;
     }
     import ietf-netconf-acm {
       prefix nacm;
     }
        
     import ietf-yang-types {
       prefix yang;
     }
     import ietf-netconf-acm {
       prefix nacm;
     }
        
     organization
       "IETF RTGWG - Routing Area Working Group";
     contact
       "WG Web:   <https://datatracker.ietf.org/group/rtgwg>
        WG List:  <mailto:rtgwg@ietf.org>
        
     organization
       "IETF RTGWG - Routing Area Working Group";
     contact
       "WG Web:   <https://datatracker.ietf.org/group/rtgwg>
        WG List:  <mailto:rtgwg@ietf.org>
        
        Editor: Acee Lindem
                <mailto:acee@cisco.com>
        
        Editor: Acee Lindem
                <mailto:acee@cisco.com>
        
                Yingzhen Qu
                <mailto:yingzhen.qu@huawei.com>
                Derek Yeung
                <mailto:derek@arrcus.com>
                Ing-Wher Chen
                <mailto:Ing-Wher_Chen@jabail.com>
                Jeffrey Zhang
                <mailto:zzhang@juniper.net>";
        
                Yingzhen Qu
                <mailto:yingzhen.qu@huawei.com>
                Derek Yeung
                <mailto:derek@arrcus.com>
                Ing-Wher Chen
                <mailto:Ing-Wher_Chen@jabail.com>
                Jeffrey Zhang
                <mailto:zzhang@juniper.net>";
        

description "This YANG module defines the generic configuration data for key chains. It is intended that the module will be extended by vendors to define vendor-specific key chain configuration parameters.

description“此模块定义密钥链的通用配置数据。供应商将扩展此模块,以定义特定于供应商的密钥链配置参数。

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

版权所有(c)2017 IETF信托基金和被确定为代码作者的人员。版权所有。

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 Simplified BSD License set forth in Section 4.c of the IETF Trust's Legal Provisions Relating to IETF Documents (http://trustee.ietf.org/license-info).

根据IETF信托有关IETF文件的法律规定第4.c节规定的简化BSD许可证中包含的许可条款,允许以源代码和二进制格式重新分发和使用,无论是否修改(http://trustee.ietf.org/license-info).

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

reference "RFC 8177";

参考“RFC 8177”;

     revision 2017-06-15 {
       description
         "Initial RFC Revision";
       reference "RFC 8177: YANG Data Model for Key Chains";
     }
        
     revision 2017-06-15 {
       description
         "Initial RFC Revision";
       reference "RFC 8177: YANG Data Model for Key Chains";
     }
        
     feature hex-key-string {
       description
         "Support hexadecimal key string.";
     }
        
     feature hex-key-string {
       description
         "Support hexadecimal key string.";
     }
        
     feature accept-tolerance {
       description
         "Support the tolerance or acceptance limit.";
     }
        
     feature accept-tolerance {
       description
         "Support the tolerance or acceptance limit.";
     }
        

feature independent-send-accept-lifetime { description

与功能无关的发送接受生存期{说明

         "Support for independent send and accept key lifetimes.";
     }
        
         "Support for independent send and accept key lifetimes.";
     }
        
     feature crypto-hmac-sha-1-12 {
       description
         "Support for TCP HMAC-SHA-1 12-byte digest hack.";
     }
        
     feature crypto-hmac-sha-1-12 {
       description
         "Support for TCP HMAC-SHA-1 12-byte digest hack.";
     }
        
     feature cleartext {
       description
         "Support for cleartext algorithm.  Usage is
          NOT RECOMMENDED.";
     }
        
     feature cleartext {
       description
         "Support for cleartext algorithm.  Usage is
          NOT RECOMMENDED.";
     }
        
     feature aes-cmac-prf-128 {
       description
         "Support for AES Cipher-based Message Authentication
          Code Pseudorandom Function.";
     }
        
     feature aes-cmac-prf-128 {
       description
         "Support for AES Cipher-based Message Authentication
          Code Pseudorandom Function.";
     }
        
     feature aes-key-wrap {
       description
         "Support for Advanced Encryption Standard (AES) Key Wrap.";
     }
        
     feature aes-key-wrap {
       description
         "Support for Advanced Encryption Standard (AES) Key Wrap.";
     }
        
     feature replay-protection-only {
       description
         "Provide replay protection without any authentication
          as required by protocols such as Bidirectional
          Forwarding Detection (BFD).";
     }
     identity crypto-algorithm {
       description
         "Base identity of cryptographic algorithm options.";
     }
        
     feature replay-protection-only {
       description
         "Provide replay protection without any authentication
          as required by protocols such as Bidirectional
          Forwarding Detection (BFD).";
     }
     identity crypto-algorithm {
       description
         "Base identity of cryptographic algorithm options.";
     }
        
     identity hmac-sha-1-12 {
       base crypto-algorithm;
       if-feature "crypto-hmac-sha-1-12";
       description
         "The HMAC-SHA1-12 algorithm.";
     }
        
     identity hmac-sha-1-12 {
       base crypto-algorithm;
       if-feature "crypto-hmac-sha-1-12";
       description
         "The HMAC-SHA1-12 algorithm.";
     }
        
     identity aes-cmac-prf-128 {
       base crypto-algorithm;
       if-feature "aes-cmac-prf-128";
       description
         "The AES-CMAC-PRF-128 algorithm - required by
        
     identity aes-cmac-prf-128 {
       base crypto-algorithm;
       if-feature "aes-cmac-prf-128";
       description
         "The AES-CMAC-PRF-128 algorithm - required by
        
          RFC 5926 for TCP-AO key derivation functions.";
     }
        
          RFC 5926 for TCP-AO key derivation functions.";
     }
        
     identity md5 {
       base crypto-algorithm;
       description
         "The MD5 algorithm.";
     }
        
     identity md5 {
       base crypto-algorithm;
       description
         "The MD5 algorithm.";
     }
        
     identity sha-1 {
       base crypto-algorithm;
       description
         "The SHA-1 algorithm.";
     }
        
     identity sha-1 {
       base crypto-algorithm;
       description
         "The SHA-1 algorithm.";
     }
        
     identity hmac-sha-1 {
       base crypto-algorithm;
       description
         "HMAC-SHA-1 authentication algorithm.";
     }
        
     identity hmac-sha-1 {
       base crypto-algorithm;
       description
         "HMAC-SHA-1 authentication algorithm.";
     }
        
     identity hmac-sha-256 {
       base crypto-algorithm;
       description
         "HMAC-SHA-256 authentication algorithm.";
     }
        
     identity hmac-sha-256 {
       base crypto-algorithm;
       description
         "HMAC-SHA-256 authentication algorithm.";
     }
        
     identity hmac-sha-384 {
       base crypto-algorithm;
       description
         "HMAC-SHA-384 authentication algorithm.";
     }
        
     identity hmac-sha-384 {
       base crypto-algorithm;
       description
         "HMAC-SHA-384 authentication algorithm.";
     }
        
     identity hmac-sha-512 {
       base crypto-algorithm;
       description
         "HMAC-SHA-512 authentication algorithm.";
     }
        
     identity hmac-sha-512 {
       base crypto-algorithm;
       description
         "HMAC-SHA-512 authentication algorithm.";
     }
        
     identity cleartext {
       base crypto-algorithm;
       if-feature "cleartext";
       description
         "cleartext.";
     }
        
     identity cleartext {
       base crypto-algorithm;
       if-feature "cleartext";
       description
         "cleartext.";
     }
        
     identity replay-protection-only {
       base crypto-algorithm;
        
     identity replay-protection-only {
       base crypto-algorithm;
        
       if-feature "replay-protection-only";
       description
         "Provide replay protection without any authentication as
          required by protocols such as Bidirectional Forwarding
          Detection (BFD).";
     }
        
       if-feature "replay-protection-only";
       description
         "Provide replay protection without any authentication as
          required by protocols such as Bidirectional Forwarding
          Detection (BFD).";
     }
        
     typedef key-chain-ref {
       type leafref {
         path
         "/key-chain:key-chains/key-chain:key-chain/key-chain:name";
       }
       description
         "This type is used by data models that need to reference
          configured key chains.";
     }
        
     typedef key-chain-ref {
       type leafref {
         path
         "/key-chain:key-chains/key-chain:key-chain/key-chain:name";
       }
       description
         "This type is used by data models that need to reference
          configured key chains.";
     }
        
     grouping lifetime {
       description
         "Key lifetime specification.";
       choice lifetime {
         default "always";
         description
           "Options for specifying key accept or send lifetimes";
         case always {
           leaf always {
             type empty;
             description
               "Indicates key lifetime is always valid.";
           }
         }
         case start-end-time {
           leaf start-date-time {
             type yang:date-and-time;
             description
               "Start time.";
           }
           choice end-time {
             default "infinite";
             description
               "End-time setting.";
             case infinite {
               leaf no-end-time {
                 type empty;
                 description
                   "Indicates key lifetime end-time is infinite.";
               }
             }
        
     grouping lifetime {
       description
         "Key lifetime specification.";
       choice lifetime {
         default "always";
         description
           "Options for specifying key accept or send lifetimes";
         case always {
           leaf always {
             type empty;
             description
               "Indicates key lifetime is always valid.";
           }
         }
         case start-end-time {
           leaf start-date-time {
             type yang:date-and-time;
             description
               "Start time.";
           }
           choice end-time {
             default "infinite";
             description
               "End-time setting.";
             case infinite {
               leaf no-end-time {
                 type empty;
                 description
                   "Indicates key lifetime end-time is infinite.";
               }
             }
        
             case duration {
               leaf duration {
                 type uint32 {
                   range "1..2147483646";
                 }
                 units "seconds";
                 description
                   "Key lifetime duration, in seconds";
               }
             }
             case end-date-time {
               leaf end-date-time {
                 type yang:date-and-time;
                 description
                   "End time.";
               }
             }
           }
         }
       }
     }
        
             case duration {
               leaf duration {
                 type uint32 {
                   range "1..2147483646";
                 }
                 units "seconds";
                 description
                   "Key lifetime duration, in seconds";
               }
             }
             case end-date-time {
               leaf end-date-time {
                 type yang:date-and-time;
                 description
                   "End time.";
               }
             }
           }
         }
       }
     }
        
     container key-chains {
       description
         "All configured key-chains on the device.";
       list key-chain {
         key "name";
         description
           "List of key-chains.";
         leaf name {
           type string;
           description
             "Name of the key-chain.";
         }
         leaf description {
           type string;
           description
             "A description of the key-chain";
         }
         container accept-tolerance {
           if-feature "accept-tolerance";
           description
             "Tolerance for key lifetime acceptance (seconds).";
           leaf duration {
             type uint32;
             units "seconds";
             default "0";
             description
        
     container key-chains {
       description
         "All configured key-chains on the device.";
       list key-chain {
         key "name";
         description
           "List of key-chains.";
         leaf name {
           type string;
           description
             "Name of the key-chain.";
         }
         leaf description {
           type string;
           description
             "A description of the key-chain";
         }
         container accept-tolerance {
           if-feature "accept-tolerance";
           description
             "Tolerance for key lifetime acceptance (seconds).";
           leaf duration {
             type uint32;
             units "seconds";
             default "0";
             description
        
               "Tolerance range, in seconds.";
           }
         }
         leaf last-modified-timestamp {
           type yang:date-and-time;
           config false;
           description
             "Timestamp of the most recent update to the key-chain";
         }
         list key {
           key "key-id";
           description
             "Single key in key chain.";
           leaf key-id {
             type uint64;
             description
               "Numeric value uniquely identifying the key";
           }
           container lifetime {
             description
               "Specify a key's lifetime.";
             choice lifetime {
               description
                 "Options for specification of send and accept
                  lifetimes.";
               case send-and-accept-lifetime {
                 description
                   "Send and accept key have the same lifetime.";
                 container send-accept-lifetime {
                   description
                     "Single lifetime specification for both
                      send and accept lifetimes.";
                   uses lifetime;
                 }
               }
               case independent-send-accept-lifetime {
                 if-feature "independent-send-accept-lifetime";
                 description
                   "Independent send and accept key lifetimes.";
                 container send-lifetime {
                   description
                     "Separate lifetime specification for send
                      lifetime.";
                   uses lifetime;
                 }
                 container accept-lifetime {
                   description
                     "Separate lifetime specification for accept
        
               "Tolerance range, in seconds.";
           }
         }
         leaf last-modified-timestamp {
           type yang:date-and-time;
           config false;
           description
             "Timestamp of the most recent update to the key-chain";
         }
         list key {
           key "key-id";
           description
             "Single key in key chain.";
           leaf key-id {
             type uint64;
             description
               "Numeric value uniquely identifying the key";
           }
           container lifetime {
             description
               "Specify a key's lifetime.";
             choice lifetime {
               description
                 "Options for specification of send and accept
                  lifetimes.";
               case send-and-accept-lifetime {
                 description
                   "Send and accept key have the same lifetime.";
                 container send-accept-lifetime {
                   description
                     "Single lifetime specification for both
                      send and accept lifetimes.";
                   uses lifetime;
                 }
               }
               case independent-send-accept-lifetime {
                 if-feature "independent-send-accept-lifetime";
                 description
                   "Independent send and accept key lifetimes.";
                 container send-lifetime {
                   description
                     "Separate lifetime specification for send
                      lifetime.";
                   uses lifetime;
                 }
                 container accept-lifetime {
                   description
                     "Separate lifetime specification for accept
        
                      lifetime.";
                   uses lifetime;
                 }
               }
             }
           }
           leaf crypto-algorithm {
             type identityref {
               base crypto-algorithm;
             }
             mandatory true;
             description
               "Cryptographic algorithm associated with key.";
           }
           container key-string {
             description
               "The key string.";
             nacm:default-deny-all;
             choice key-string-style {
               description
                 "Key string styles";
                case keystring {
                  leaf keystring {
                   type string;
                   description
                     "Key string in ASCII format.";
                 }
               }
               case hexadecimal {
                 if-feature "hex-key-string";
                 leaf hexadecimal-string {
                   type yang:hex-string;
                   description
                     "Key in hexadecimal string format.  When compared
                      to ASCII, specification in hexadecimal affords
                      greater key entropy with the same number of
                      internal key-string octets.  Additionally, it
                      discourages usage of well-known words or
                      numbers.";
                 }
               }
             }
           }
           leaf send-lifetime-active {
             type boolean;
             config false;
             description
               "Indicates if the send lifetime of the
        
                      lifetime.";
                   uses lifetime;
                 }
               }
             }
           }
           leaf crypto-algorithm {
             type identityref {
               base crypto-algorithm;
             }
             mandatory true;
             description
               "Cryptographic algorithm associated with key.";
           }
           container key-string {
             description
               "The key string.";
             nacm:default-deny-all;
             choice key-string-style {
               description
                 "Key string styles";
                case keystring {
                  leaf keystring {
                   type string;
                   description
                     "Key string in ASCII format.";
                 }
               }
               case hexadecimal {
                 if-feature "hex-key-string";
                 leaf hexadecimal-string {
                   type yang:hex-string;
                   description
                     "Key in hexadecimal string format.  When compared
                      to ASCII, specification in hexadecimal affords
                      greater key entropy with the same number of
                      internal key-string octets.  Additionally, it
                      discourages usage of well-known words or
                      numbers.";
                 }
               }
             }
           }
           leaf send-lifetime-active {
             type boolean;
             config false;
             description
               "Indicates if the send lifetime of the
        
                key-chain key is currently active.";
              }
           leaf accept-lifetime-active {
             type boolean;
             config false;
             description
               "Indicates if the accept lifetime of the
                key-chain key is currently active.";
           }
         }
       }
       container aes-key-wrap {
         if-feature "aes-key-wrap";
         description
           "AES Key Wrap encryption for key-chain key-strings.  The
            encrypted key-strings are encoded as hexadecimal key
            strings using the hex-key-string leaf.";
         leaf enable {
           type boolean;
           default "false";
           description
             "Enable AES Key Wrap encryption.";
         }
       }
     }
   }
   <CODE ENDS>
        
                key-chain key is currently active.";
              }
           leaf accept-lifetime-active {
             type boolean;
             config false;
             description
               "Indicates if the accept lifetime of the
                key-chain key is currently active.";
           }
         }
       }
       container aes-key-wrap {
         if-feature "aes-key-wrap";
         description
           "AES Key Wrap encryption for key-chain key-strings.  The
            encrypted key-strings are encoded as hexadecimal key
            strings using the hex-key-string leaf.";
         leaf enable {
           type boolean;
           default "false";
           description
             "Enable AES Key Wrap encryption.";
         }
       }
     }
   }
   <CODE ENDS>
        
5. Security Considerations
5. 安全考虑

The YANG module defined in this document is designed to be accessed via network management protocols such as NETCONF [NETCONF] or RESTCONF [RESTCONF]. The lowest NETCONF layer is the secure transport layer, and the mandatory-to-implement secure transport is Secure Shell (SSH) [NETCONF-SSH]. The lowest RESTCONF layer is HTTPS, and the mandatory-to-implement secure transport is TLS [TLS].

本文档中定义的模块旨在通过网络管理协议(如NETCONF[NETCONF]或RESTCONF[RESTCONF])进行访问。最低的NETCONF层是安全传输层,实现安全传输的强制要求是secureshell(SSH)[NETCONF-SSH]。最低的RESTCONF层是HTTPS,实现安全传输的强制层是TLS[TLS]。

The NETCONF access control model [NETCONF-ACM] provides the means to restrict access for particular NETCONF or RESTCONF users to a pre-configured subset of all available NETCONF or RESTCONF protocol operations and content. The key strings are not accessible by default, and NETCONF access control model [NETCONF-ACM] rules are required to configure or retrieve them.

NETCONF访问控制模型[NETCONF-ACM]提供了将特定NETCONF或RESTCONF用户的访问限制为所有可用NETCONF或RESTCONF协议操作和内容的预配置子集的方法。默认情况下,密钥字符串不可访问,需要NETCONF访问控制模型[NETCONF-ACM]规则来配置或检索它们。

When configured, the key strings can be encrypted using the AES Key Wrap algorithm [AES-KEY-WRAP]. The AES key-encryption key (KEK) is not included in the YANG model and must be set or derived independent of key chain configuration. When AES key encryption is used, the

配置后,可以使用AES密钥包裹算法[AES-key-Wrap]对密钥字符串进行加密。AES密钥加密密钥(KEK)不包括在YANG模型中,必须独立于密钥链配置进行设置或派生。使用AES密钥加密时

hex-key-string feature is also required since the encrypted keys will contain characters that are not representable in the YANG string built-in type [YANG-1.1]. It is RECOMMENDED that key strings be encrypted using AES key encryption to prevent key chains from being retrieved and stored with the key strings in cleartext. This recommendation is independent of the access protection that is availed from the NETCONF access control model (NACM) [NETCONF-ACM].

由于加密密钥将包含YANG字符串内置类型[YANG-1.1]中无法表示的字符,因此还需要十六进制密钥字符串功能。建议使用AES密钥加密对密钥字符串进行加密,以防止检索密钥链,并将密钥字符串存储在明文中。本建议独立于NETCONF访问控制模型(NACM)[NETCONF-ACM]提供的访问保护。

The cleartext algorithm is included as a YANG feature. Usage is NOT RECOMMENDED except in cases where the application and device have no other alternative (e.g., a legacy network device that must authenticate packets at intervals of 10 milliseconds or less for many peers using Bidirectional Forwarding Detection [BFD]). Keys used with the cleartext algorithm are considered insecure and SHOULD NOT be reused with more secure algorithms.

明文算法作为一个特性包括在内。不建议使用,除非应用程序和设备没有其他替代方案(例如,传统网络设备必须使用双向转发检测[BFD]以10毫秒或更短的间隔对多个对等方的数据包进行身份验证)。与明文算法一起使用的密钥被认为是不安全的,不应与更安全的算法一起重用。

Similarly, the MD5 and SHA-1 algorithms have been proven to be insecure ([Dobb96a], [Dobb96b], and [SHA-SEC-CON]), and usage is NOT RECOMMENDED. Usage should be confined to deployments where it is required for backward compatibility.

类似地,MD5和SHA-1算法已被证明是不安全的([Dobb96a]、[Dobb96b]和[SHA-SEC-CON]),不建议使用。使用应限于需要向后兼容的部署。

Implementations with keys provided via this model should store them using best current security practices.

通过此模型提供密钥的实现应使用当前最佳安全实践来存储密钥。

6. IANA Considerations
6. IANA考虑

This document registers a URI in the "IETF XML Registry" [XML-REGISTRY]. It follows the format in [XML-REGISTRY].

本文档在“IETF XML注册表”[XML-Registry]中注册URI。它遵循[XML-REGISTRY]中的格式。

URI: urn:ietf:params:xml:ns:yang:ietf-key-chain Registrant Contact: The IESG. XML: N/A, the requested URI is an XML namespace.

URI:urn:ietf:params:xml:ns:yang:ietf密钥链注册人联系人:IESG。XML:N/A,请求的URI是一个XML名称空间。

This document registers a YANG module in the "YANG Module Names" registry [YANG-1.0].

本文件在“YANG模块名称”注册表[YANG-1.0]中注册YANG模块。

      name: ietf-key-chain
      namespace: urn:ietf:params:xml:ns:yang:ietf-key-chain
      prefix: key-chain
      reference: RFC 8177
        
      name: ietf-key-chain
      namespace: urn:ietf:params:xml:ns:yang:ietf-key-chain
      prefix: key-chain
      reference: RFC 8177
        
7. References
7. 工具书类
7.1. Normative References
7.1. 规范性引用文件

[KEYWORDS] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, DOI 10.17487/RFC2119, March 1997, <http://www.rfc-editor.org/info/rfc2119>.

[关键词]Bradner,S.,“RFC中用于表示需求水平的关键词”,BCP 14,RFC 2119,DOI 10.17487/RFC2119,1997年3月<http://www.rfc-editor.org/info/rfc2119>.

[KEYWORDS-UPD] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, May 2017, <http://www.rfc-editor.org/info/rfc8174>.

[KEYWORDS-UPD]Leiba,B.,“RFC 2119关键词中大写与小写的歧义”,BCP 14,RFC 8174,DOI 10.17487/RFC8174,2017年5月<http://www.rfc-editor.org/info/rfc8174>.

[NETCONF] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., and A. Bierman, Ed., "Network Configuration Protocol (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, <http://www.rfc-editor.org/info/rfc6241>.

[NETCONF]Enns,R.,Ed.,Bjorklund,M.,Ed.,Schoenwaeld,J.,Ed.,和A.Bierman,Ed.,“网络配置协议(NETCONF)”,RFC 6241,DOI 10.17487/RFC624112011年6月<http://www.rfc-editor.org/info/rfc6241>.

[NETCONF-ACM] Bierman, A. and M. Bjorklund, "Network Configuration Protocol (NETCONF) Access Control Model", RFC 6536, DOI 10.17487/RFC6536, March 2012, <http://www.rfc-editor.org/info/rfc6536>.

[NETCONF-ACM]Bierman,A.和M.Bjorklund,“网络配置协议(NETCONF)访问控制模型”,RFC 6536,DOI 10.17487/RFC6536,2012年3月<http://www.rfc-editor.org/info/rfc6536>.

[NETCONF-SSH] Wasserman, M., "Using the NETCONF Protocol over Secure Shell (SSH)", RFC 6242, DOI 10.17487/RFC6242, June 2011, <http://www.rfc-editor.org/info/rfc6242>.

[NETCONF-SSH]Wasserman,M.,“在安全外壳上使用NETCONF协议(SSH)”,RFC 6242,DOI 10.17487/RFC6242,2011年6月<http://www.rfc-editor.org/info/rfc6242>.

[RESTCONF] Bierman, A., Bjorklund, M., and K. Watsen, "RESTCONF Protocol", RFC 8040, DOI 10.17487/RFC8040, January 2017, <http://www.rfc-editor.org/info/rfc8040>.

[RESTCONF]Bierman,A.,Bjorklund,M.,和K.Watsen,“RESTCONF协议”,RFC 8040,DOI 10.17487/RFC8040,2017年1月<http://www.rfc-editor.org/info/rfc8040>.

[TLS] Dierks, T. and E. Rescorla, "The Transport Layer Security (TLS) Protocol Version 1.2", RFC 5246, DOI 10.17487/RFC5246, August 2008, <http://www.rfc-editor.org/info/rfc5246>.

[TLS]Dierks,T.和E.Rescorla,“传输层安全(TLS)协议版本1.2”,RFC 5246,DOI 10.17487/RFC5246,2008年8月<http://www.rfc-editor.org/info/rfc5246>.

[XML-REGISTRY] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, DOI 10.17487/RFC3688, January 2004, <http://www.rfc-editor.org/info/rfc3688>.

[XML-REGISTRY]Mealling,M.,“IETF XML注册表”,BCP 81,RFC 3688,DOI 10.17487/RFC3688,2004年1月<http://www.rfc-editor.org/info/rfc3688>.

[YANG-1.0] Bjorklund, M., Ed., "YANG - A Data Modeling Language for the Network Configuration Protocol (NETCONF)", RFC 6020, DOI 10.17487/RFC6020, October 2010, <http://www.rfc-editor.org/info/rfc6020>.

[YANG-1.0]Bjorklund,M.,Ed.“YANG-网络配置协议的数据建模语言(NETCONF)”,RFC 6020,DOI 10.17487/RFC6020,2010年10月<http://www.rfc-editor.org/info/rfc6020>.

[YANG-1.1] Bjorklund, M., Ed., "The YANG 1.1 Data Modeling Language", RFC 7950, DOI 10.17487/RFC7950, August 2016, <http://www.rfc-editor.org/info/rfc7950>.

[YANG-1.1]Bjorklund,M.,编辑,“YANG 1.1数据建模语言”,RFC 7950,DOI 10.17487/RFC7950,2016年8月<http://www.rfc-editor.org/info/rfc7950>.

7.2. Informative References
7.2. 资料性引用

[AES-KEY-WRAP] Housley, R. and M. Dworkin, "Advanced Encryption Standard (AES) Key Wrap with Padding Algorithm", RFC 5649, DOI 10.17487/RFC5649, September 2009, <http://www.rfc-editor.org/info/rfc5649>.

[AES-KEY-WRAP]Housley,R.和M.Dworkin,“带填充算法的高级加密标准(AES)密钥封装”,RFC 5649,DOI 10.17487/RFC5649,2009年9月<http://www.rfc-editor.org/info/rfc5649>.

[BFD] Katz, D. and D. Ward, "Bidirectional Forwarding Detection (BFD)", RFC 5880, DOI 10.17487/RFC5880, June 2010, <http://www.rfc-editor.org/info/rfc5880>.

[BFD]Katz,D.和D.Ward,“双向转发检测(BFD)”,RFC 5880,DOI 10.17487/RFC5880,2010年6月<http://www.rfc-editor.org/info/rfc5880>.

[CRYPTO-KEYTABLE] Housley, R., Polk, T., Hartman, S., and D. Zhang, "Database of Long-Lived Symmetric Cryptographic Keys", RFC 7210, DOI 10.17487/RFC7210, April 2014, <http://www.rfc-editor.org/info/rfc7210>.

[加密密钥表]Housley,R.,Polk,T.,Hartman,S.,和D.Zhang,“长寿命对称加密密钥数据库”,RFC 7210,DOI 10.17487/RFC7210,2014年4月<http://www.rfc-editor.org/info/rfc7210>.

[Dobb96a] Dobbertin, H., "Cryptanalysis of MD5 Compress", Technical Report Presented at the Rump Session of EuroCrypt '96, May 1996.

[Dobb96a]Dobbertin,H.,“MD5压缩的密码分析”,1996年5月在EuroCrypt'96的Rump会议上提交的技术报告。

[Dobb96b] Dobbertin, H., "The Status of MD5 After a Recent Attack", CryptoBytes, Vol. 2, No. 2, Summer 1996.

[Dobb96b]Dobbertin,H.,“最近一次攻击后MD5的状态”,CryptoBytes,第2卷,第2期,1996年夏季。

[IAB-REPORT] Andersson, L., Davies, E., and L. Zhang, "Report from the IAB workshop on Unwanted Traffic March 9-10, 2006", RFC 4948, DOI 10.17487/RFC4948, August 2007, <http://www.rfc-editor.org/info/rfc4948>.

[IAB-REPORT]Andersson,L.,Davies,E.,和L.Zhang,“IAB不必要交通研讨会报告,2006年3月9日至10日”,RFC 4948,DOI 10.17487/RFC4948,2007年8月<http://www.rfc-editor.org/info/rfc4948>.

[NMDA] Bjorklund, M., Schoenwaelder, J., Shafer, P., Watsen, K., and R. Wilton, "Network Management Datastore Architecture", Work in Progress, draft-ietf-netmod-revised-datastores-02, May 2017.

[NMDA]Bjorklund,M.,Schoenwaeld,J.,Shafer,P.,Watsen,K.,和R.Wilton,“网络管理数据存储体系结构”,正在进行的工作,草案-ietf-netmod-REVIDED-datastores-02,2017年5月。

[NTP-PROTO] Mills, D., Martin, J., Ed., Burbank, J., and W. Kasch, "Network Time Protocol Version 4: Protocol and Algorithms Specification", RFC 5905, DOI 10.17487/RFC5905, June 2010, <http://www.rfc-editor.org/info/rfc5905>.

[NTP-PROTO]Mills,D.,Martin,J.,Ed.,Burbank,J.,和W.Kasch,“网络时间协议版本4:协议和算法规范”,RFC 5905,DOI 10.17487/RFC59052010年6月<http://www.rfc-editor.org/info/rfc5905>.

[OSPFV3-AUTH] Bhatia, M., Manral, V., and A. Lindem, "Supporting Authentication Trailer for OSPFv3", RFC 7166, DOI 10.17487/RFC7166, March 2014, <http://www.rfc-editor.org/info/rfc7166>.

[OSPFV3-AUTH]Bhatia,M.,Manral,V.,和A.Lindem,“OSPFV3支持认证拖车”,RFC 7166,DOI 10.17487/RFC7166,2014年3月<http://www.rfc-editor.org/info/rfc7166>.

[SHA-SEC-CON] Polk, T., Chen, L., Turner, S., and P. Hoffman, "Security Considerations for the SHA-0 and SHA-1 Message-Digest Algorithms", RFC 6194, DOI 10.17487/RFC6194, March 2011, <http://www.rfc-editor.org/info/rfc6194>.

[SHA-SEC-CON]Polk,T.,Chen,L.,Turner,S.,和P.Hoffman,“SHA-0和SHA-1消息摘要算法的安全注意事项”,RFC 6194,DOI 10.17487/RFC6194,2011年3月<http://www.rfc-editor.org/info/rfc6194>.

[TCP-AO] Touch, J., Mankin, A., and R. Bonica, "The TCP Authentication Option", RFC 5925, DOI 10.17487/RFC5925, June 2010, <http://www.rfc-editor.org/info/rfc5925>.

[TCP-AO]Touch,J.,Mankin,A.,和R.Bonica,“TCP认证选项”,RFC 5925,DOI 10.17487/RFC5925,2010年6月<http://www.rfc-editor.org/info/rfc5925>.

[TCP-AO-ALGORITHMS] Lebovitz, G. and E. Rescorla, "Cryptographic Algorithms for the TCP Authentication Option (TCP-AO)", RFC 5926, DOI 10.17487/RFC5926, June 2010, <http://www.rfc-editor.org/info/rfc5926>.

[TCP-AO-ALGORITHMS]Lebovitz,G.和E.Rescorla,“TCP认证选项(TCP-AO)的加密算法”,RFC 5926,DOI 10.17487/RFC5926,2010年6月<http://www.rfc-editor.org/info/rfc5926>.

[YANG-CRYPTO-KEYTABLE] Chen, I., "YANG Data Model for RFC 7210 Key Table", Work in Progress, draft-chen-rtg-key-table-yang-00, March 2015.

[YANG-CRYPTO-KEYTABLE]陈毅,“RFC 7210密钥表的YANG数据模型”,正在进行的工作,草稿-Chen-rtg-Key-Table-YANG-00,2015年3月。

Appendix A. Examples
附录A.示例
A.1. Simple Key Chain with an Always Valid Single Key
A.1. 具有始终有效的单个密钥的简单密钥链
   <?xml version="1.0" encoding="utf-8"?>
   <data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
     <key-chains xmlns="urn:ietf:params:xml:ns:yang:ietf-key-chain">
       <key-chain>
         <name>keychain-no-end-time</name>
         <description>
           A key chain with a single key that is always valid for
           transmission and reception.
         </description>
         <key>
           <key-id>100</key-id>
           <lifetime>
             <send-accept-lifetime>
               <always/>
             </send-accept-lifetime>
           </lifetime>
           <crypto-algorithm>hmac-sha-256</crypto-algorithm>
           <key-string>
             <keystring>keystring_in_ascii_100</keystring>
           </key-string>
         </key>
       </key-chain>
     </key-chains>
   </data>
        
   <?xml version="1.0" encoding="utf-8"?>
   <data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
     <key-chains xmlns="urn:ietf:params:xml:ns:yang:ietf-key-chain">
       <key-chain>
         <name>keychain-no-end-time</name>
         <description>
           A key chain with a single key that is always valid for
           transmission and reception.
         </description>
         <key>
           <key-id>100</key-id>
           <lifetime>
             <send-accept-lifetime>
               <always/>
             </send-accept-lifetime>
           </lifetime>
           <crypto-algorithm>hmac-sha-256</crypto-algorithm>
           <key-string>
             <keystring>keystring_in_ascii_100</keystring>
           </key-string>
         </key>
       </key-chain>
     </key-chains>
   </data>
        
A.2. Key Chain with Keys Having Different Lifetimes
A.2. 具有不同生命周期的钥匙的钥匙链
   <?xml version="1.0" encoding="utf-8"?>
   <data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
     <key-chains xmlns="urn:ietf:params:xml:ns:yang:ietf-key-chain">
       <key-chain>
         <name>keychain2</name>
         <description>
           A key chain where each key contains a different send time
           and accept time and a different algorithm illustrating
           algorithm agility.
         </description>
         <key>
           <key-id>35</key-id>
           <lifetime>
             <send-lifetime>
               <start-date-time>2017-01-01T00:00:00Z</start-date-time>
               <end-date-time>2017-02-01T00:00:00Z</end-date-time>
             </send-lifetime>
        
   <?xml version="1.0" encoding="utf-8"?>
   <data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
     <key-chains xmlns="urn:ietf:params:xml:ns:yang:ietf-key-chain">
       <key-chain>
         <name>keychain2</name>
         <description>
           A key chain where each key contains a different send time
           and accept time and a different algorithm illustrating
           algorithm agility.
         </description>
         <key>
           <key-id>35</key-id>
           <lifetime>
             <send-lifetime>
               <start-date-time>2017-01-01T00:00:00Z</start-date-time>
               <end-date-time>2017-02-01T00:00:00Z</end-date-time>
             </send-lifetime>
        
             <accept-lifetime>
               <start-date-time>2016-12-31T23:59:55Z</start-date-time>
               <end-date-time>2017-02-01T00:00:05Z</end-date-time>
             </accept-lifetime>
           </lifetime>
           <crypto-algorithm>hmac-sha-256</crypto-algorithm>
           <key-string>
             <keystring>keystring_in_ascii_35</keystring>
           </key-string>
         </key>
         <key>
           <key-id>36</key-id>
           <lifetime>
             <send-lifetime>
               <start-date-time>2017-02-01T00:00:00Z</start-date-time>
               <end-date-time>2017-03-01T00:00:00Z</end-date-time>
             </send-lifetime>
             <accept-lifetime>
               <start-date-time>2017-01-31T23:59:55Z</start-date-time>
               <end-date-time>2017-03-01T00:00:05Z</end-date-time>
             </accept-lifetime>
           </lifetime>
           <crypto-algorithm>hmac-sha-512</crypto-algorithm>
           <key-string>
             <hexadecimal-string>fe:ed:be:af:36</hexadecimal-string>
           </key-string>
         </key>
       </key-chain>
     </key-chains>
   </data>
        
             <accept-lifetime>
               <start-date-time>2016-12-31T23:59:55Z</start-date-time>
               <end-date-time>2017-02-01T00:00:05Z</end-date-time>
             </accept-lifetime>
           </lifetime>
           <crypto-algorithm>hmac-sha-256</crypto-algorithm>
           <key-string>
             <keystring>keystring_in_ascii_35</keystring>
           </key-string>
         </key>
         <key>
           <key-id>36</key-id>
           <lifetime>
             <send-lifetime>
               <start-date-time>2017-02-01T00:00:00Z</start-date-time>
               <end-date-time>2017-03-01T00:00:00Z</end-date-time>
             </send-lifetime>
             <accept-lifetime>
               <start-date-time>2017-01-31T23:59:55Z</start-date-time>
               <end-date-time>2017-03-01T00:00:05Z</end-date-time>
             </accept-lifetime>
           </lifetime>
           <crypto-algorithm>hmac-sha-512</crypto-algorithm>
           <key-string>
             <hexadecimal-string>fe:ed:be:af:36</hexadecimal-string>
           </key-string>
         </key>
       </key-chain>
     </key-chains>
   </data>
        
A.3. Key Chain with Independent Send and Accept Lifetimes
A.3. 具有独立发送和接受生命周期的密钥链
   <?xml version="1.0" encoding="utf-8"?>
   <data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
     <key-chains xmlns="urn:ietf:params:xml:ns:yang:ietf-key-chain">
       <key-chain>
         <name>keychain2</name>
         <description>
           A key chain where each key contains different send times
           and accept times.
         </description>
         <key>
           <key-id>35</key-id>
           <lifetime>
             <send-lifetime>
               <start-date-time>2017-01-01T00:00:00Z</start-date-time>
               <end-date-time>2017-02-01T00:00:00Z</end-date-time>
             </send-lifetime>
             <accept-lifetime>
               <start-date-time>2016-12-31T23:59:55Z</start-date-time>
               <end-date-time>2017-02-01T00:00:05Z</end-date-time>
             </accept-lifetime>
           </lifetime>
           <crypto-algorithm>hmac-sha-256</crypto-algorithm>
           <key-string>
             <keystring>keystring_in_ascii_35</keystring>
           </key-string>
         </key>
         <key>
           <key-id>36</key-id>
           <lifetime>
             <send-lifetime>
               <start-date-time>2017-02-01T00:00:00Z</start-date-time>
               <end-date-time>2017-03-01T00:00:00Z</end-date-time>
             </send-lifetime>
             <accept-lifetime>
               <start-date-time>2017-01-31T23:59:55Z</start-date-time>
               <end-date-time>2017-03-01T00:00:05Z</end-date-time>
             </accept-lifetime>
           </lifetime>
           <crypto-algorithm>hmac-sha-256</crypto-algorithm>
           <key-string>
             <hexadecimal-string>fe:ed:be:af:36</hexadecimal-string>
           </key-string>
         </key>
       </key-chain>
     </key-chains>
   </data>
        
   <?xml version="1.0" encoding="utf-8"?>
   <data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
     <key-chains xmlns="urn:ietf:params:xml:ns:yang:ietf-key-chain">
       <key-chain>
         <name>keychain2</name>
         <description>
           A key chain where each key contains different send times
           and accept times.
         </description>
         <key>
           <key-id>35</key-id>
           <lifetime>
             <send-lifetime>
               <start-date-time>2017-01-01T00:00:00Z</start-date-time>
               <end-date-time>2017-02-01T00:00:00Z</end-date-time>
             </send-lifetime>
             <accept-lifetime>
               <start-date-time>2016-12-31T23:59:55Z</start-date-time>
               <end-date-time>2017-02-01T00:00:05Z</end-date-time>
             </accept-lifetime>
           </lifetime>
           <crypto-algorithm>hmac-sha-256</crypto-algorithm>
           <key-string>
             <keystring>keystring_in_ascii_35</keystring>
           </key-string>
         </key>
         <key>
           <key-id>36</key-id>
           <lifetime>
             <send-lifetime>
               <start-date-time>2017-02-01T00:00:00Z</start-date-time>
               <end-date-time>2017-03-01T00:00:00Z</end-date-time>
             </send-lifetime>
             <accept-lifetime>
               <start-date-time>2017-01-31T23:59:55Z</start-date-time>
               <end-date-time>2017-03-01T00:00:05Z</end-date-time>
             </accept-lifetime>
           </lifetime>
           <crypto-algorithm>hmac-sha-256</crypto-algorithm>
           <key-string>
             <hexadecimal-string>fe:ed:be:af:36</hexadecimal-string>
           </key-string>
         </key>
       </key-chain>
     </key-chains>
   </data>
        

Contributors

贡献者

Yi Yang SockRate

益阳袜子

   Email: yi.yang@sockrate.com
        
   Email: yi.yang@sockrate.com
        

Acknowledgments

致谢

Thanks to Brian Weis for fruitful discussions on security requirements.

感谢Brian Weis就安全需求进行了富有成效的讨论。

Thanks to Ines Robles for Routing Directorate QA review comments.

感谢Ines Robles提交董事会QA审查意见。

Thanks to Ladislav Lhotka for YANG Doctor comments.

感谢拉迪斯拉夫·洛特卡对杨博士的评论。

Thanks to Martin Bjorklund for additional YANG Doctor comments.

感谢Martin Bjorklund的补充意见。

Thanks to Tom Petch for comments during IETF last call.

感谢Tom Petch在IETF上次通话中的评论。

Thanks to Matthew Miller for comments made during the Gen-ART review.

感谢Matthew Miller在Gen ART review期间发表的评论。

Thanks to Vincent Roca for comments made during the Security Directorate review.

感谢Vincent Roca在安全理事会审查期间提出的意见。

Thanks to Warren Kumari, Ben Campbell, Adam Roach, and Benoit Claise for comments received during the IESG review.

感谢Warren Kumari、Ben Campbell、Adam Roach和Benoit Claise在IESG审查期间提出的意见。

Authors' Addresses

作者地址

Acee Lindem (editor) Cisco Systems 301 Midenhall Way Cary, NC 27513 United States of America

Acee Lindem(编辑)思科系统301美国北卡罗来纳州米登霍尔大道卡里27513号

   Email: acee@cisco.com
        
   Email: acee@cisco.com
        

Yingzhen Qu Huawei

应征区华为

   Email: yingzhen.qu@huawei.com
        
   Email: yingzhen.qu@huawei.com
        

Derek Yeung Arrcus, Inc

杨家强股份有限公司

   Email: derek@arrcus.com
        
   Email: derek@arrcus.com
        

Ing-Wher Chen Jabil

陈捷普在哪里

   Email: Ing-Wher_Chen@jabil.com
        
   Email: Ing-Wher_Chen@jabil.com
        

Jeffrey Zhang Juniper Networks 10 Technology Park Drive Westford, MA 01886 United States of America

Jeffrey Zhang Juniper Networks美国马萨诸塞州韦斯特福德科技园大道10号01886

   Email: zzhang@juniper.net
        
   Email: zzhang@juniper.net