< draft-acee-rtg-yang-key-chain-02.txt   draft-acee-rtg-yang-key-chain-03.txt >
Network Working Group A. Lindem, Ed. Network Working Group A. Lindem, Ed.
Internet-Draft Y. Qu Internet-Draft Y. Qu
Intended status: Standards Track D. Yeung Intended status: Standards Track D. Yeung
Expires: September 4, 2015 Cisco Systems Expires: September 7, 2015 Cisco Systems
I. Chen I. Chen
Ericsson Ericsson
J. Zhang J. Zhang
Juniper Networks Juniper Networks
Y. Yang Y. Yang
Cisco Systems Cisco Systems
March 3, 2015 March 6, 2015
Key Chain YANG Data Model Key Chain YANG Data Model
draft-acee-rtg-yang-key-chain-02.txt draft-acee-rtg-yang-key-chain-03.txt
Abstract Abstract
This document describes the key chain YANG data model. A key chain This document describes the key chain YANG data model. A key chain
is a list of elements each containing a key, send lifetime, accept is a list of elements each containing a key, send lifetime, accept
lifetime, and algorithm. By properly overlapping the send and accept lifetime, and algorithm. By properly overlapping the send and accept
lifetimes of multiple key chain elements, keys and algorithms may be lifetimes of multiple key chain elements, keys and algorithms may be
gracefully updated. By representing them in a YANG data model, key gracefully updated. By representing them in a YANG data model, key
distribution can be automated. Key chains are commonly used for distribution can be automated. Key chains are commonly used for
routing protocol authentication and other applications. In some routing protocol authentication and other applications. In some
skipping to change at page 1, line 46 skipping to change at page 1, line 46
Internet-Drafts are working documents of the Internet Engineering Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF). Note that other groups may also distribute Task Force (IETF). Note that other groups may also distribute
working documents as Internet-Drafts. The list of current Internet- working documents as Internet-Drafts. The list of current Internet-
Drafts is at http://datatracker.ietf.org/drafts/current/. Drafts is at http://datatracker.ietf.org/drafts/current/.
Internet-Drafts are draft documents valid for a maximum of six months Internet-Drafts are draft documents valid for a maximum of six months
and may be updated, replaced, or obsoleted by other documents at any and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress." material or to cite them other than as "work in progress."
This Internet-Draft will expire on September 4, 2015. This Internet-Draft will expire on September 7, 2015.
Copyright Notice Copyright Notice
Copyright (c) 2015 IETF Trust and the persons identified as the Copyright (c) 2015 IETF Trust and the persons identified as the
document authors. All rights reserved. document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents Provisions Relating to IETF Documents
(http://trustee.ietf.org/license-info) in effect on the date of (http://trustee.ietf.org/license-info) in effect on the date of
publication of this document. Please review these documents publication of this document. Please review these documents
skipping to change at page 2, line 27 skipping to change at page 2, line 27
the Trust Legal Provisions and are provided without warranty as the Trust Legal Provisions and are provided without warranty as
described in the Simplified BSD License. described in the Simplified BSD License.
Table of Contents Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2
1.1. Requirements Notation . . . . . . . . . . . . . . . . . . 3 1.1. Requirements Notation . . . . . . . . . . . . . . . . . . 3
2. Problem Statement . . . . . . . . . . . . . . . . . . . . . . 3 2. Problem Statement . . . . . . . . . . . . . . . . . . . . . . 3
2.1. Graceful Key Rollover using Key Chains . . . . . . . . . 3 2.1. Graceful Key Rollover using Key Chains . . . . . . . . . 3
3. Design of the Key Chain Model . . . . . . . . . . . . . . . . 4 3. Design of the Key Chain Model . . . . . . . . . . . . . . . . 4
4. Key Chain YANG Model . . . . . . . . . . . . . . . . . . . . 10 4. Key Chain YANG Model . . . . . . . . . . . . . . . . . . . . 6
5. Security Considerations . . . . . . . . . . . . . . . . . . . 15 5. Security Considerations . . . . . . . . . . . . . . . . . . . 12
6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 15 6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 12
7. References . . . . . . . . . . . . . . . . . . . . . . . . . 15 7. References . . . . . . . . . . . . . . . . . . . . . . . . . 12
7.1. Normative References . . . . . . . . . . . . . . . . . . 15 7.1. Normative References . . . . . . . . . . . . . . . . . . 12
7.2. Informative References . . . . . . . . . . . . . . . . . 16 7.2. Informative References . . . . . . . . . . . . . . . . . 13
Appendix A. Acknowledgments . . . . . . . . . . . . . . . . . . 16 Appendix A. Acknowledgments . . . . . . . . . . . . . . . . . . 13
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 16 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 13
1. Introduction 1. Introduction
This document describes the key chain YANG data model. A key chain This document describes the key chain YANG data model. A key chain
is a list of elements each containing a key, send lifetime, accept is a list of elements each containing a key, send lifetime, accept
lifetime, and algorithm. By properly overlapping the send and accept lifetime, and algorithm. By properly overlapping the send and accept
lifetimes of multiple key chain elements, keys and algorithms may be lifetimes of multiple key chain elements, keys and algorithms may be
gracefully updated. By representing them in a YANG data model, key gracefully updated. By representing them in a YANG data model, key
distribution can be automated. Key chains are commonly used for distribution can be automated. Key chains are commonly used for
routing protocol authentication and other applications. In some routing protocol authentication and other applications. In some
skipping to change at page 4, line 35 skipping to change at page 4, line 35
unspecified, the key is always considered valid. unspecified, the key is always considered valid.
Note that asymmetric keys, i.e., a different key value used for Note that asymmetric keys, i.e., a different key value used for
transmission versus acceptance, may be supported with multiple key transmission versus acceptance, may be supported with multiple key
chain elements where the accept-lifetime or send-lifetime is not chain elements where the accept-lifetime or send-lifetime is not
valid (e.g., has an end-time equal to the start-time). valid (e.g., has an end-time equal to the start-time).
Due to the differences in key chain implementations across various Due to the differences in key chain implementations across various
vendors, some of the data elements are optional. Additionally, the vendors, some of the data elements are optional. Additionally, the
key-chain is made a grouping so that an implementation could support key-chain is made a grouping so that an implementation could support
scoping other than at the global level. scoping other than at the global level. Finally, the crypto-
algorithm-types grouping is 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 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 network device. The "key-chain-ref" typedef SHOULD be used by other
YANG modules when they need to reference a configured key-chain. YANG modules when they need to reference a configured key-chain.
module: ietf-key-chain
+--rw key-chains* [name]
+--rw name string
+--rw accept-tolerance {accept-tolerance}?
| +--rw duration? uint32
+--rw key* [key-id]
+--rw key-id uint64
+--rw key-string
| +--rw (key-string-style)?
| +--:(keystring)
| | +--rw keystring? string
| +--:(hexadecimal) {hex-key-string}?
| +--rw hexadecimal-string? yang:hex-string
+--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
+--rw (algorithm)?
+--:(hmac-sha1-12)
| +--rw hmac-sha1-12? empty
+--:(hmac-sha1-20)
| +--rw hmac-sha1-20? empty
+--:(md5)
| +--rw md5? empty
+--:(sha-1)
| +--rw sha-1? empty
+--:(hmac-sha-1)
| +--rw hmac-sha-1? empty
+--:(hmac-sha-256)
| +--rw hmac-sha-256? empty
+--:(hmac-sha-384)
| +--rw hmac-sha-384? empty
+--:(hmac-sha-512)
+--rw hmac-sha-512? empty
4. Key Chain YANG Model
module ietf-key-chain { module ietf-key-chain {
namespace "urn:ietf:params:xml:ns:yang:ietf-key-chain"; namespace "urn:ietf:params:xml:ns:yang:ietf-key-chain";
// replace with IANA namespace when assigned // replace with IANA namespace when assigned
prefix "key-chain"; prefix "key-chain";
import ietf-yang-types { import ietf-yang-types {
prefix "yang"; prefix "yang";
} }
organization organization
skipping to change at page 6, line 49 skipping to change at page 8, line 37
leaf end-date-time { leaf end-date-time {
type yang:date-and-time; type yang:date-and-time;
description "End time."; description "End time.";
} }
} }
} }
} }
} }
} }
grouping crypto-algorithm-types {
description "Cryptographic algorithm types.";
choice algorithm {
description
"Options for crytographic algorithm specification.";
case hmac-sha1-12 {
leaf hmac-sha1-12 {
type empty;
description "The HMAC-SHA1-12 algorithm.";
}
}
case hmac-sha1-20 {
leaf hmac-sha1-20 {
type empty;
description "The HMAC-SHA1-20 algorithm.";
}
}
case md5 {
leaf md5 {
type empty;
description "The MD5 algorithm.";
}
}
case sha-1 {
leaf sha-1 {
type empty;
description "The SHA-1 algorithm.";
}
}
case hmac-sha-1 {
leaf hmac-sha-1 {
type empty;
description "HMAC-SHA-1 authentication algorithm.";
}
}
case hmac-sha-256 {
leaf hmac-sha-256 {
type empty;
description "HMAC-SHA-256 authentication algorithm.";
}
}
case hmac-sha-384 {
leaf hmac-sha-384 {
type empty;
description "HMAC-SHA-384 authentication algorithm.";
}
}
case hmac-sha-512 {
leaf hmac-sha-512 {
type empty;
description "HMAC-SHA-512 authentication algorithm.";
}
}
}
}
grouping key-chain { grouping key-chain {
description description
"Grouping for one key-chain."; "key-chain specification grouping.";
leaf name { leaf name {
type string; type string;
description "Name of the key-chain."; description "Name of the key-chain.";
} }
container accept-tolerance { container accept-tolerance {
if-feature accept-tolerance; if-feature accept-tolerance;
description description
"Tolerance for key lifetime acceptance (seconds)."; "Tolerance for key lifetime acceptance (seconds).";
leaf duration { leaf duration {
type uint32; type uint32;
units seconds; units seconds;
default "0"; default "0";
description description
"Tolerance range, in seconds."; "Tolerance range, in seconds.";
skipping to change at page 8, line 37 skipping to change at page 11, line 32
} }
container accept-lifetime { container accept-lifetime {
uses lifetime; uses lifetime;
description description
"Separate lifetime specification for accept "Separate lifetime specification for accept
lifetime."; lifetime.";
} }
} }
} }
} }
container crypto-algorithm {
choice algorithm {
description
"Options for crytographic algorithm specification.";
case hmac-sha1-12 {
leaf hmac-sha1-12 {
type empty;
description "The HMAC-SHA1-12 algorithm.";
}
}
case hmac-sha1-20 {
leaf hmac-sha1-20 {
type empty;
description "The HMAC-SHA1-20 algorithm.";
}
}
case md5 {
leaf md5 {
type empty;
description "The MD5 algorithm.";
}
}
case sha-1 {
leaf sha-1 {
type empty;
description "The SHA-1 algorithm.";
}
}
case hmac-sha-1 {
leaf hmac-sha-1 {
type empty;
description "HMAC-SHA-1 authentication algorithm.";
}
}
case hmac-sha-256 {
leaf hmac-sha-256 {
type empty;
description "HMAC-SHA-256 authentication algorithm.";
}
}
case hmac-sha-384 {
leaf hmac-sha-384 {
type empty;
description "HMAC-SHA-384 authentication algorithm.";
}
}
case hmac-sha-512 {
leaf hmac-sha-512 {
type empty;
description "HMAC-SHA-512 authentication algorithm.";
}
}
}
description "The crypto algorithm used.";
}
}
}
list key-chains {
key "name";
description
"A key-chain is a sequence of keys that are collectively
managed for authentication.";
uses key-chain;
}
}
4. Key Chain YANG Model
module ietf-key-chain {
namespace "urn:ietf:params:xml:ns:yang:ietf-key-chain";
// replace with IANA namespace when assigned
prefix key-chain;
import ietf-yang-types {
prefix "yang";
}
organization
"Cisco Systems
170 West Tasman Drive
San Jose, CA 95134-1706
USA";
contact
"Acee Lindem - acee@cisco.com";
description
"This YANG module defines the generic configuration
data for key-chain. It is intended that the module
will be extended by vendors to define vendor-specific
key-chain configuration parameters.
";
revision 2015-02-24 {
description
"Initial revision.";
reference
"RFC XXXX: A YANG Data Model for key-chain";
}
feature hex-key-string {
description
"Support hexadecimal key string.";
}
feature accept-tolerance {
description
"To specify the tolerance or acceptance limit.";
}
feature independent-send-accept-lifetime {
description
"Support for independent send and accept key lifetimes.";
}
grouping lifetime {
description
"Key lifetime specification.";
choice lifetime {
default always;
case always {
leaf always {
type empty;
}
description
"Key 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
"Never expires.";
}
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.";
}
}
}
}
}
}
grouping key-chain {
description
"Grouping for one key-chain.";
leaf name {
type string;
description "Name of the key-chain.";
}
container accept-tolerance {
if-feature accept-tolerance;
leaf duration {
type uint32;
units seconds;
default "0";
description
"Tolerance range, in seconds.";
}
}
list key {
key "key-id";
description "One key.";
leaf key-id {
type uint64;
description "Key id.";
}
container key-string {
description "The key string.";
choice key-string-style {
description
"Key string styles";
case keystring {
leaf keystring {
type string;
}
}
case hexadecimal {
if-feature hex-key-string;
leaf hexadecimal-string {
type yang:hex-string;
description
"Hexadecimal string.";
}
}
}
}
container lifetime {
description "Specify a key's lifetime.";
choice lifetime {
case send-and-accept-lifetime {
description
"Send and accept key have the same lifetime.";
container send-accept-lifetime {
uses lifetime;
}
}
case independent-send-accept-lifetime {
if-feature independent-send-accept-lifetime;
description
"Independent send and accept key lifetimes.";
container send-lifetime {
uses lifetime;
}
container accept-lifetime {
uses lifetime;
}
}
}
}
container crypto-algorithm { container crypto-algorithm {
choice algorithm { uses crypto-algorithm-types;
case hmac-sha1-12 { description "Cryptographic algorithm associated with key.";
leaf hmac-sha1-12 {
type empty;
description "The HMAC-SHA1-12 algorithm.";
}
}
case hmac-sha1-20 {
leaf hmac-sha1-20 {
type empty;
description "The HMAC-SHA1-20 algorithm.";
}
}
case md5 {
leaf md5 {
type empty;
description "The MD5 algorithm.";
}
}
case sha-1 {
leaf sha-1 {
type empty;
description "The SHA-1 algorithm.";
}
}
case hmac-sha-1 {
leaf hmac-sha-1 {
type empty;
description "HMAC-SHA-1 authentication algorithm.";
}
}
case hmac-sha-256 {
leaf hmac-sha-256 {
type empty;
description "HMAC-SHA-256 authentication algorithm.";
}
}
case hmac-sha-384 {
leaf hmac-sha-384 {
type empty;
description "HMAC-SHA-384 authentication algorithm.";
}
}
case hmac-sha-512 {
leaf hmac-sha-512 {
type empty;
description "HMAC-SHA-512 authentication algorithm.";
}
}
}
description "The crypto algorithm used.";
} }
} }
} }
list key-chains { list key-chains {
key "name"; key "name";
description description
"A key-chain is a sequence of keys that are collectively "A key-chain is a sequence of keys that are collectively
managed for authentication."; managed for authentication.";
uses key-chain; uses key-chain;
 End of changes. 12 change blocks. 
304 lines changed or deleted 158 lines changed or added

This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/