idnits 2.17.00 (12 Aug 2021) /tmp/idnits45181/draft-acee-rtg-yang-key-chain-03.txt: Checking boilerplate required by RFC 5378 and the IETF Trust (see https://trustee.ietf.org/license-info): ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/1id-guidelines.txt: ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/checklist : ---------------------------------------------------------------------------- No issues found here. Miscellaneous warnings: ---------------------------------------------------------------------------- == The copyright year in the IETF Trust and authors Copyright Line does not match the current year -- The document date (March 6, 2015) is 2632 days in the past. Is this intentional? Checking references for intended status: Proposed Standard ---------------------------------------------------------------------------- (See RFCs 3967 and 4897 for information about using normative references to lower-maturity documents in RFCs) No issues found here. Summary: 0 errors (**), 0 flaws (~~), 1 warning (==), 1 comment (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 2 Network Working Group A. Lindem, Ed. 3 Internet-Draft Y. Qu 4 Intended status: Standards Track D. Yeung 5 Expires: September 7, 2015 Cisco Systems 6 I. Chen 7 Ericsson 8 J. Zhang 9 Juniper Networks 10 Y. Yang 11 Cisco Systems 12 March 6, 2015 14 Key Chain YANG Data Model 15 draft-acee-rtg-yang-key-chain-03.txt 17 Abstract 19 This document describes the key chain YANG data model. A key chain 20 is a list of elements each containing a key, send lifetime, accept 21 lifetime, and algorithm. By properly overlapping the send and accept 22 lifetimes of multiple key chain elements, keys and algorithms may be 23 gracefully updated. By representing them in a YANG data model, key 24 distribution can be automated. Key chains are commonly used for 25 routing protocol authentication and other applications. In some 26 applications, the protocols do not use the key chain element key 27 directly, but rather a key derivation function is used to derive a 28 short-lived key from the key chain element key. 30 Status of This Memo 32 This Internet-Draft is submitted in full conformance with the 33 provisions of BCP 78 and BCP 79. 35 Internet-Drafts are working documents of the Internet Engineering 36 Task Force (IETF). Note that other groups may also distribute 37 working documents as Internet-Drafts. The list of current Internet- 38 Drafts is at http://datatracker.ietf.org/drafts/current/. 40 Internet-Drafts are draft documents valid for a maximum of six months 41 and may be updated, replaced, or obsoleted by other documents at any 42 time. It is inappropriate to use Internet-Drafts as reference 43 material or to cite them other than as "work in progress." 45 This Internet-Draft will expire on September 7, 2015. 47 Copyright Notice 49 Copyright (c) 2015 IETF Trust and the persons identified as the 50 document authors. All rights reserved. 52 This document is subject to BCP 78 and the IETF Trust's Legal 53 Provisions Relating to IETF Documents 54 (http://trustee.ietf.org/license-info) in effect on the date of 55 publication of this document. Please review these documents 56 carefully, as they describe your rights and restrictions with respect 57 to this document. Code Components extracted from this document must 58 include Simplified BSD License text as described in Section 4.e of 59 the Trust Legal Provisions and are provided without warranty as 60 described in the Simplified BSD License. 62 Table of Contents 64 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 65 1.1. Requirements Notation . . . . . . . . . . . . . . . . . . 3 66 2. Problem Statement . . . . . . . . . . . . . . . . . . . . . . 3 67 2.1. Graceful Key Rollover using Key Chains . . . . . . . . . 3 68 3. Design of the Key Chain Model . . . . . . . . . . . . . . . . 4 69 4. Key Chain YANG Model . . . . . . . . . . . . . . . . . . . . 6 70 5. Security Considerations . . . . . . . . . . . . . . . . . . . 12 71 6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 12 72 7. References . . . . . . . . . . . . . . . . . . . . . . . . . 12 73 7.1. Normative References . . . . . . . . . . . . . . . . . . 12 74 7.2. Informative References . . . . . . . . . . . . . . . . . 13 75 Appendix A. Acknowledgments . . . . . . . . . . . . . . . . . . 13 76 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 13 78 1. Introduction 80 This document describes the key chain YANG data model. A key chain 81 is a list of elements each containing a key, send lifetime, accept 82 lifetime, and algorithm. By properly overlapping the send and accept 83 lifetimes of multiple key chain elements, keys and algorithms may be 84 gracefully updated. By representing them in a YANG data model, key 85 distribution can be automated. Key chains are commonly used for 86 routing protocol authentication and other applications. In some 87 applications, the protocols do not use the key chain element key 88 directly, but rather a key derivation function is used to derive a 89 short-lived key from the key chain element key. 91 1.1. Requirements Notation 93 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 94 "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this 95 document are to be interpreted as described in [RFC-KEYWORDS]. 97 2. Problem Statement 99 This document describes a YANG [YANG] data model for key chains. Key 100 chains have been implemented and deployed by a large percentage of 101 network equipment vendors. Providing a standard YANG model will 102 facilitate automated key distribution and non-disruptive key 103 rollover. This will aid in tightening the security of the core 104 routing infrastructure as recommended in [IAB-REPORT]. 106 A key chain is a list of containing one or more elements containing a 107 Key ID, key, send/accept lifetimes, and the associated authentication 108 or encryption algorithm. A conceptual representation of a crypto key 109 table is described in [CRYPTO-KEYTABLE]. The key chain model 110 presented herein represents a practical implementation of the crypto 111 key table. However, the key selection is left to the applications 112 requiring authentication or encryption. This is more inline with the 113 current operational model. 115 2.1. Graceful Key Rollover using Key Chains 117 Key chains may be used to gracefully update the key and/or algorithm 118 used by an application for authentication or encryption. This MAY be 119 accomplished by accepting all the keys that have a valid accept 120 lifetime and sending the key with the most recent send lifetime. One 121 scenario for facilitating key rollover is to: 123 1. Distribute a key chain with a new key to all the routers or other 124 network devices in the domain of that key chain. The new key's 125 accept lifetime should be such that it is accepted during the key 126 rollover period. The send lifetime should be a time in the 127 future when it can be assured that all the routers in the domain 128 of that key are upgraded. This will have no immediate impact on 129 the keys used for transmission. 131 2. Assure that all the network devices have been updated with the 132 updated key chain and that their system times are roughly 133 synchronized. The system times of devices within an 134 administrative domain are commonly synchronized (e.g., using 135 Network Time Protocol (NTP) [NTP-PROTO]). This also may be 136 automated. 138 3. When the send lifetime of the new key becomes valid, the network 139 devices within the domain of key chain will start sending the new 140 key. 142 4. At some point in the future, a new key chain with the old key 143 removed may be distributed to the network devices within the 144 domain of the key chain. However, this may be deferred until the 145 next key rollover. If this is done, the key chain will always 146 include two keys; either the current and future key (during key 147 rollovers) or the current and previous keys (between key 148 rollovers). 150 3. Design of the Key Chain Model 152 The ietf-keychain module contains a list of one or more keys indexed 153 by a Key ID. For some applications (e.g., OSPFv3 [OSPFV3-AUTH]), the 154 Key-Id is used to identify the key chain element to be used. In 155 addition to the Key-ID, each key chain element includes a key-string 156 and a cryptographic algorithm. Optionally, the key chain entries 157 include send/accept lifetimes. If the send/accept lifetime is 158 unspecified, the key is always considered valid. 160 Note that asymmetric keys, i.e., a different key value used for 161 transmission versus acceptance, may be supported with multiple key 162 chain elements where the accept-lifetime or send-lifetime is not 163 valid (e.g., has an end-time equal to the start-time). 165 Due to the differences in key chain implementations across various 166 vendors, some of the data elements are optional. Additionally, the 167 key-chain is made a grouping so that an implementation could support 168 scoping other than at the global level. Finally, the crypto- 169 algorithm-types grouping is provided for reuse when configuring 170 legacy authentication and encryption not using key-chains. 172 A key-chain is identified by a unique name within the scope of the 173 network device. The "key-chain-ref" typedef SHOULD be used by other 174 YANG modules when they need to reference a configured key-chain. 176 module: ietf-key-chain 177 +--rw key-chains* [name] 178 +--rw name string 179 +--rw accept-tolerance {accept-tolerance}? 180 | +--rw duration? uint32 181 +--rw key* [key-id] 182 +--rw key-id uint64 183 +--rw key-string 184 | +--rw (key-string-style)? 185 | +--:(keystring) 186 | | +--rw keystring? string 187 | +--:(hexadecimal) {hex-key-string}? 188 | +--rw hexadecimal-string? yang:hex-string 189 +--rw lifetime 190 | +--rw (lifetime)? 191 | +--:(send-and-accept-lifetime) 192 | | +--rw send-accept-lifetime 193 | | +--rw (lifetime)? 194 | | +--:(always) 195 | | | +--rw always? empty 196 | | +--:(start-end-time) 197 | | +--rw start-date-time? 198 | | | yang:date-and-time 199 | | +--rw (end-time)? 200 | | +--:(infinite) 201 | | | +--rw no-end-time? empty 202 | | +--:(duration) 203 | | | +--rw duration? uint32 204 | | +--:(end-date-time) 205 | | +--rw end-date-time? 206 | | yang:date-and-time 207 | +--:(independent-send-accept-lifetime) 208 | | {independent-send-accept-lifetime}? 209 | +--rw send-lifetime 210 | | +--rw (lifetime)? 211 | | +--:(always) 212 | | | +--rw always? empty 213 | | +--:(start-end-time) 214 | | +--rw start-date-time? 215 | | | yang:date-and-time 216 | | +--rw (end-time)? 217 | | +--:(infinite) 218 | | | +--rw no-end-time? empty 219 | | +--:(duration) 220 | | | +--rw duration? uint32 221 | | +--:(end-date-time) 222 | | +--rw end-date-time? 223 | | yang:date-and-time 224 | +--rw accept-lifetime 225 | +--rw (lifetime)? 226 | +--:(always) 227 | | +--rw always? empty 228 | +--:(start-end-time) 229 | +--rw start-date-time? yang:date-and-time 230 | +--rw (end-time)? 231 | +--:(infinite) 232 | | +--rw no-end-time? empty 233 | +--:(duration) 234 | | +--rw duration? uint32 235 | +--:(end-date-time) 236 | +--rw end-date-time? 237 | yang:date-and-time 238 +--rw crypto-algorithm 239 +--rw (algorithm)? 240 +--:(hmac-sha1-12) 241 | +--rw hmac-sha1-12? empty 242 +--:(hmac-sha1-20) 243 | +--rw hmac-sha1-20? empty 244 +--:(md5) 245 | +--rw md5? empty 246 +--:(sha-1) 247 | +--rw sha-1? empty 248 +--:(hmac-sha-1) 249 | +--rw hmac-sha-1? empty 250 +--:(hmac-sha-256) 251 | +--rw hmac-sha-256? empty 252 +--:(hmac-sha-384) 253 | +--rw hmac-sha-384? empty 254 +--:(hmac-sha-512) 255 +--rw hmac-sha-512? empty 257 4. Key Chain YANG Model 259 module ietf-key-chain { 260 namespace "urn:ietf:params:xml:ns:yang:ietf-key-chain"; 261 // replace with IANA namespace when assigned 262 prefix "key-chain"; 264 import ietf-yang-types { 265 prefix "yang"; 266 } 268 organization 269 "Cisco Systems 270 170 West Tasman Drive 271 San Jose, CA 95134-1706 272 USA"; 273 contact 274 "Acee Lindem - acee@cisco.com"; 276 description 277 "This YANG module defines the generic configuration 278 data for key-chain. It is intended that the module 279 will be extended by vendors to define vendor-specific 280 key-chain configuration parameters. 281 "; 283 revision 2015-02-24 { 284 description 285 "Initial revision."; 286 reference 287 "RFC XXXX: A YANG Data Model for key-chain"; 288 } 290 typedef key-chain-ref { 291 type leafref { 292 path "/key-chain:key-chains/key-chain:name"; 293 } 294 description 295 "This type is used by data models that need to reference 296 configured key-chains."; 297 } 299 feature hex-key-string { 300 description 301 "Support hexadecimal key string."; 302 } 304 feature accept-tolerance { 305 description 306 "To specify the tolerance or acceptance limit."; 307 } 309 feature independent-send-accept-lifetime { 310 description 311 "Support for independent send and accept key lifetimes."; 312 } 314 grouping lifetime { 315 description 316 "Key lifetime specification."; 317 choice lifetime { 318 default always; 319 description 320 "Options for specifying key accept or send lifetimes"; 321 case always { 322 leaf always { 323 type empty; 324 description 325 "Indicates key lifetime is always valid."; 326 } 327 } 328 case start-end-time { 329 leaf start-date-time { 330 type yang:date-and-time; 331 description "Start time."; 332 } 333 choice end-time { 334 default infinite; 335 description 336 "End-time setting."; 337 case infinite { 338 leaf no-end-time { 339 type empty; 340 description 341 "Indicates key lifetime end-time in infinite."; 342 } 343 } 344 case duration { 345 leaf duration { 346 type uint32 { 347 range "1..2147483646"; 348 } 349 units seconds; 350 description "Key lifetime duration, in seconds"; 351 } 352 } 353 case end-date-time { 354 leaf end-date-time { 355 type yang:date-and-time; 356 description "End time."; 357 } 358 } 359 } 360 } 361 } 362 } 364 grouping crypto-algorithm-types { 365 description "Cryptographic algorithm types."; 366 choice algorithm { 367 description 368 "Options for crytographic algorithm specification."; 369 case hmac-sha1-12 { 370 leaf hmac-sha1-12 { 371 type empty; 372 description "The HMAC-SHA1-12 algorithm."; 373 } 374 } 375 case hmac-sha1-20 { 376 leaf hmac-sha1-20 { 377 type empty; 378 description "The HMAC-SHA1-20 algorithm."; 380 } 381 } 382 case md5 { 383 leaf md5 { 384 type empty; 385 description "The MD5 algorithm."; 386 } 387 } 388 case sha-1 { 389 leaf sha-1 { 390 type empty; 391 description "The SHA-1 algorithm."; 392 } 393 } 394 case hmac-sha-1 { 395 leaf hmac-sha-1 { 396 type empty; 397 description "HMAC-SHA-1 authentication algorithm."; 398 } 399 } 400 case hmac-sha-256 { 401 leaf hmac-sha-256 { 402 type empty; 403 description "HMAC-SHA-256 authentication algorithm."; 404 } 405 } 406 case hmac-sha-384 { 407 leaf hmac-sha-384 { 408 type empty; 409 description "HMAC-SHA-384 authentication algorithm."; 410 } 411 } 412 case hmac-sha-512 { 413 leaf hmac-sha-512 { 414 type empty; 415 description "HMAC-SHA-512 authentication algorithm."; 416 } 417 } 418 } 419 } 421 grouping key-chain { 422 description 423 "key-chain specification grouping."; 424 leaf name { 425 type string; 426 description "Name of the key-chain."; 427 } 428 container accept-tolerance { 429 if-feature accept-tolerance; 430 description 431 "Tolerance for key lifetime acceptance (seconds)."; 432 leaf duration { 433 type uint32; 434 units seconds; 435 default "0"; 436 description 437 "Tolerance range, in seconds."; 438 } 439 } 441 list key { 442 key "key-id"; 443 description "One key."; 444 leaf key-id { 445 type uint64; 446 description "Key id."; 447 } 448 container key-string { 449 description "The key string."; 450 choice key-string-style { 451 description 452 "Key string styles"; 453 case keystring { 454 leaf keystring { 455 type string; 456 description "Key string in ASCII format."; 457 } 458 } 459 case hexadecimal { 460 if-feature hex-key-string; 461 leaf hexadecimal-string { 462 type yang:hex-string; 463 description 464 "Key in hexadecimal string format."; 465 } 466 } 467 } 468 } 469 container lifetime { 470 description "Specify a key's lifetime."; 471 choice lifetime { 472 description 473 "Options for specification of send and accept 474 lifetimes."; 475 case send-and-accept-lifetime { 476 description 477 "Send and accept key have the same lifetime."; 478 container send-accept-lifetime { 479 uses lifetime; 480 description 481 "Single lifetime specification for both send and 482 accept lifetimes."; 483 } 484 } 485 case independent-send-accept-lifetime { 486 if-feature independent-send-accept-lifetime; 487 description 488 "Independent send and accept key lifetimes."; 489 container send-lifetime { 490 uses lifetime; 491 description 492 "Separate lifetime specification for send 493 lifetime."; 494 } 495 container accept-lifetime { 496 uses lifetime; 497 description 498 "Separate lifetime specification for accept 499 lifetime."; 500 } 501 } 502 } 503 } 504 container crypto-algorithm { 505 uses crypto-algorithm-types; 506 description "Cryptographic algorithm associated with key."; 507 } 508 } 509 } 511 list key-chains { 512 key "name"; 513 description 514 "A key-chain is a sequence of keys that are collectively 515 managed for authentication."; 516 uses key-chain; 517 } 518 } 520 5. Security Considerations 522 This document enables the automated distribution of industry standard 523 key chains using the NETCONF [NETCONF] protocol. As such, the 524 security considerations for the NETCONF protocol are applicable. 525 Given that the key chains themselves are sensitive data, it is 526 RECOMMENDED that the NETCONF communication channel be encrypted. One 527 way to do accomplish this would be to invoke and run NETCONF over SSH 528 as described in [NETCONF-SSH]. 530 6. IANA Considerations 532 This document registers a URI in the IETF XML registry 533 [XML-REGISTRY]. Following the format in RFC 3688, the following 534 registration is requested to be made: 536 URI: urn:ietf:params:xml:ns:yang:ietf-key-chain 538 Registrant Contact: The IESG. 540 XML: N/A, the requested URI is an XML namespace. 542 This document registers a YANG module in the YANG Module Names 543 registry [YANG]. 545 name: ietf-acl namespace: urn:ietf:params:xml:ns:yang:ietf-key- 546 chain prefix: ietf-key-chain reference: RFC XXXX 548 7. References 550 7.1. Normative References 552 [NETCONF] Enns, R., Bjorklund, M., Schoenwaelder, J., and A. 553 Bierman, "Network Configuration Protocol (NETCONF)", RFC 554 6241, June 2011. 556 [NETCONF-SSH] 557 Wasserman, M., "Using NETCONF Protocol over Secure Shell 558 (SSH)", RFC 6242, June 2011. 560 [RFC-KEYWORDS] 561 Bradner, S., "Key words for use in RFC's to Indicate 562 Requirement Levels", BCP 14, RFC 2119, March 1997. 564 [XML-REGISTRY] 565 Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, 566 January 2004. 568 [YANG] Bjorklund, M., "YANG - A Data Modeling Language for the 569 Network Configuration Protocol (NETCONF)", RFC 6020, 570 October 2010. 572 7.2. Informative References 574 [CRYPTO-KEYTABLE] 575 Housley, R., Polk, T., Hartman, S., and D. Zhang, 576 "Table of Cryptographic Keys", RFC 7210, April 2014. 578 [IAB-REPORT] 579 Andersson, L., Davies, E., and L. Zhang, "Report from the 580 IAB workshop on Unwanted Traffic March 9-10, 2006", RFC 581 4948, August 2007. 583 [NTP-PROTO] 584 Mills, D., Martin, J., Burbank, J., and W. Kasch, "Network 585 Time Protocol Version 4: Protocol and Algorithms 586 Specification", RFC 5905, June 2010. 588 [OSPFV3-AUTH] 589 Bhatia, M., Manral, V., and A. Lindem, "Supporting 590 Authentication Trailer for OSPFv3", RFC 7166, March 2014. 592 Appendix A. Acknowledgments 594 The RFC text was produced using Marshall Rose's xml2rfc tool. 596 Authors' Addresses 598 Acee Lindem (editor) 599 Cisco Systems 600 301 Midenhall Way 601 Cary, NC 27513 602 USA 604 Email: acee@cisco.com 606 Yingzhen Qu 607 Cisco Systems 608 170 West Tasman Drive 609 San Jose, CA 95134 610 USA 612 Email: yiqu@cisco.com 613 Derek Yeung 614 Cisco Systems 615 170 West Tasman Drive 616 San Jose, CA 95134 617 USA 619 Email: myeung@cisco.com 621 Ing-Wher Chen 622 Ericsson 624 Email: ing-wher.chen@ericsson.com 626 Jeffrey Zhang 627 Juniper Networks 628 10 Technology Park Drive 629 Westford, MA 01886 630 USA 632 Email: zzhang@juniper.net 634 Yi Yang 635 Cisco Systems 636 7025 Kit Creek Road 637 Research Triangle Park, NC 27709 638 USA 640 Email: yiya@cisco.com