idnits 2.17.1 draft-ietf-netconf-ssh-client-server-06.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 == Line 180 has weird spacing: '...ate-key uni...' == Line 557 has weird spacing: '...ate-key uni...' -- The document date (June 4, 2018) is 2146 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) == Outdated reference: A later version (-35) exists of draft-ietf-netconf-keystore-04 == Outdated reference: A later version (-28) exists of draft-ietf-netconf-trust-anchors-00 ** Obsolete normative reference: RFC 6536 (Obsoleted by RFC 8341) Summary: 1 error (**), 0 flaws (~~), 5 warnings (==), 1 comment (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 2 NETCONF Working Group K. Watsen 3 Internet-Draft Juniper Networks 4 Intended status: Standards Track G. Wu 5 Expires: December 6, 2018 Cisco Systems 6 June 4, 2018 8 YANG Groupings for SSH Clients and SSH Servers 9 draft-ietf-netconf-ssh-client-server-06 11 Abstract 13 This document defines three YANG modules: the first defines groupings 14 for a generic SSH client, the second defines groupings for a generic 15 SSH server, and the third defines common identities and groupings 16 used by both the client and the server. It is intended that these 17 groupings will be used by applications using the SSH protocol. 19 Editorial Note (To be removed by RFC Editor) 21 This draft contains many placeholder values that need to be replaced 22 with finalized values at the time of publication. This note 23 summarizes all of the substitutions that are needed. No other RFC 24 Editor instructions are specified elsewhere in this document. 26 This document contains references to other drafts in progress, both 27 in the Normative References section, as well as in body text 28 throughout. Please update the following references to reflect their 29 final RFC assignments: 31 o I-D.ietf-netconf-trust-anchors 33 o I-D.ietf-netconf-keystore 35 Artwork in this document contains shorthand references to drafts in 36 progress. Please apply the following replacements: 38 o "XXXX" --> the assigned RFC value for this draft 40 o "YYYY" --> the assigned RFC value for I-D.ietf-netconf-trust- 41 anchors 43 o "ZZZZ" --> the assigned RFC value for I-D.ietf-netconf-keystore 45 Artwork in this document contains placeholder values for the date of 46 publication of this draft. Please apply the following replacement: 48 o "2018-06-04" --> the publication date of this draft 49 The following Appendix section is to be removed prior to publication: 51 o Appendix A. Change Log 53 Status of This Memo 55 This Internet-Draft is submitted in full conformance with the 56 provisions of BCP 78 and BCP 79. 58 Internet-Drafts are working documents of the Internet Engineering 59 Task Force (IETF). Note that other groups may also distribute 60 working documents as Internet-Drafts. The list of current Internet- 61 Drafts is at https://datatracker.ietf.org/drafts/current/. 63 Internet-Drafts are draft documents valid for a maximum of six months 64 and may be updated, replaced, or obsoleted by other documents at any 65 time. It is inappropriate to use Internet-Drafts as reference 66 material or to cite them other than as "work in progress." 68 This Internet-Draft will expire on December 6, 2018. 70 Copyright Notice 72 Copyright (c) 2018 IETF Trust and the persons identified as the 73 document authors. All rights reserved. 75 This document is subject to BCP 78 and the IETF Trust's Legal 76 Provisions Relating to IETF Documents 77 (https://trustee.ietf.org/license-info) in effect on the date of 78 publication of this document. Please review these documents 79 carefully, as they describe your rights and restrictions with respect 80 to this document. Code Components extracted from this document must 81 include Simplified BSD License text as described in Section 4.e of 82 the Trust Legal Provisions and are provided without warranty as 83 described in the Simplified BSD License. 85 Table of Contents 87 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 88 2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 4 89 3. The SSH Client Model . . . . . . . . . . . . . . . . . . . . 4 90 3.1. Tree Diagram . . . . . . . . . . . . . . . . . . . . . . 4 91 3.2. Example Usage . . . . . . . . . . . . . . . . . . . . . . 6 92 3.3. YANG Module . . . . . . . . . . . . . . . . . . . . . . . 9 93 4. The SSH Server Model . . . . . . . . . . . . . . . . . . . . 12 94 4.1. Tree Diagram . . . . . . . . . . . . . . . . . . . . . . 12 95 4.2. Example Usage . . . . . . . . . . . . . . . . . . . . . . 14 96 4.3. YANG Module . . . . . . . . . . . . . . . . . . . . . . . 17 98 5. The SSH Common Model . . . . . . . . . . . . . . . . . . . . 20 99 5.1. Tree Diagram . . . . . . . . . . . . . . . . . . . . . . 21 100 5.2. Example Usage . . . . . . . . . . . . . . . . . . . . . . 21 101 5.3. YANG Module . . . . . . . . . . . . . . . . . . . . . . . 22 102 6. Security Considerations . . . . . . . . . . . . . . . . . . . 32 103 7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 33 104 7.1. The IETF XML Registry . . . . . . . . . . . . . . . . . . 33 105 7.2. The YANG Module Names Registry . . . . . . . . . . . . . 33 106 8. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 34 107 9. References . . . . . . . . . . . . . . . . . . . . . . . . . 34 108 9.1. Normative References . . . . . . . . . . . . . . . . . . 34 109 9.2. Informative References . . . . . . . . . . . . . . . . . 35 110 Appendix A. Change Log . . . . . . . . . . . . . . . . . . . . . 37 111 A.1. 00 to 01 . . . . . . . . . . . . . . . . . . . . . . . . 37 112 A.2. 01 to 02 . . . . . . . . . . . . . . . . . . . . . . . . 37 113 A.3. 02 to 03 . . . . . . . . . . . . . . . . . . . . . . . . 37 114 A.4. 03 to 04 . . . . . . . . . . . . . . . . . . . . . . . . 37 115 A.5. 04 to 05 . . . . . . . . . . . . . . . . . . . . . . . . 38 116 A.6. 05 to 06 . . . . . . . . . . . . . . . . . . . . . . . . 38 117 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 38 119 1. Introduction 121 This document defines three YANG 1.1 [RFC7950] modules: the first 122 defines a grouping for a generic SSH client, the second defines a 123 grouping for a generic SSH server, and the third defines identities 124 and groupings common to both the client and the server. It is 125 intended that these groupings will be used by applications using the 126 SSH protocol [RFC4252], [RFC4253], and [RFC4254]. For instance, 127 these groupings could be used to help define the data model for an 128 OpenSSH [OPENSSH] server or a NETCONF over SSH [RFC6242] based 129 server. 131 The client and server YANG modules in this document each define one 132 grouping, which is focused on just SSH-specific configuration, and 133 specifically avoids any transport-level configuration, such as what 134 ports to listen on or connect to. This affords applications the 135 opportunity to define their own strategy for how the underlying TCP 136 connection is established. For instance, applications supporting 137 NETCONF Call Home [RFC8071] could use the "ssh-server-grouping" 138 grouping for the SSH parts it provides, while adding data nodes for 139 the TCP-level call-home configuration. 141 The modules defined in this document uses groupings defined in 142 [I-D.ietf-netconf-keystore] enabling keys to be either locally 143 defined or a reference to globally configured values. 145 The modules defined in this document optionally support [RFC6187] 146 enabling X.509v3 certificate based host keys and public keys. 148 2. Terminology 150 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 151 "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and 152 "OPTIONAL" in this document are to be interpreted as described in BCP 153 14 [RFC2119] [RFC8174] when, and only when, they appear in all 154 capitals, as shown here. 156 3. The SSH Client Model 158 3.1. Tree Diagram 160 This section provides two tree diagrams [RFC8340] for the "ietf-ssh- 161 client" module, the first with used groupings expanded and the second 162 with used groupings not expanded. 164 The following tree diagram has used groupings expanded: 166 module: ietf-ssh-client 168 grouping ssh-client-grouping 169 +-- client-identity 170 | +-- username? string 171 | +-- (auth-type) 172 | +--:(password) 173 | | +-- password? string 174 | +--:(public-key) 175 | | +-- public-key 176 | | +-- (local-or-keystore) 177 | | +--:(local) 178 | | | +-- algorithm ct:key-algorithm-ref 179 | | | +-- public-key binary 180 | | | +-- private-key union 181 | | +--:(keystore) {keystore-implemented}? 182 | | +-- reference ks:asymmetric-key-ref 183 | +--:(certificate) 184 | +-- certificate {sshcmn:ssh-x509-certs}? 185 | +-- (local-or-keystore) 186 | +--:(local) 187 | | +-- algorithm 188 | | | ct:key-algorithm-ref 189 | | +-- public-key binary 190 | | +-- private-key union 191 | | +-- cert 192 | | | ct:end-entity-cert-cms 193 | | +---n certificate-expiration 194 | | +-- expiration-date? yang:date-and-time 195 | +--:(keystore) {keystore-implemented}? 196 | +-- reference 197 | ks:asymmetric-key-certificate-ref 198 +-- server-auth 199 | +-- pinned-ssh-host-keys? ta:pinned-host-keys-ref 200 | +-- pinned-ca-certs? ta:pinned-certificates-ref 201 | | {sshcmn:ssh-x509-certs}? 202 | +-- pinned-server-certs? ta:pinned-certificates-ref 203 | {sshcmn:ssh-x509-certs}? 204 +-- transport-params {ssh-client-transport-params-config}? 205 +-- host-key 206 | +-- host-key-alg* identityref 207 +-- key-exchange 208 | +-- key-exchange-alg* identityref 209 +-- encryption 210 | +-- encryption-alg* identityref 211 +-- mac 212 +-- mac-alg* identityref 214 The following tree diagram does not have the groupings expanded: 216 [Note: '\' line wrapping for formatting only] 218 module: ietf-ssh-client 220 grouping ssh-client-grouping 221 +-- client-identity 222 | +-- username? string 223 | +-- (auth-type) 224 | +--:(password) 225 | | +-- password? string 226 | +--:(public-key) 227 | | +-- public-key 228 | | +---u ks:local-or-keystore-asymmetric-key-grouping 229 | +--:(certificate) 230 | +-- certificate {sshcmn:ssh-x509-certs}? 231 | +---u ks:local-or-keystore-end-entity-certificate-gr\ 232 ouping 233 +-- server-auth 234 | +-- pinned-ssh-host-keys? ta:pinned-host-keys-ref 235 | +-- pinned-ca-certs? ta:pinned-certificates-ref 236 | | {sshcmn:ssh-x509-certs}? 237 | +-- pinned-server-certs? ta:pinned-certificates-ref 238 | {sshcmn:ssh-x509-certs}? 239 +-- transport-params {ssh-client-transport-params-config}? 240 +---u sshcmn:transport-params-grouping 242 3.2. Example Usage 244 This section presents two examples showing the ssh-client-grouping 245 populated with some data. These examples are effectively the same 246 except the first configures the client identity using a local key 247 while the second uses a key configured in a keystore. Both examples 248 are consistent with the examples presented in Section 3 of 249 [I-D.ietf-netconf-trust-anchors] and Section 3.2 of 250 [I-D.ietf-netconf-keystore]. 252 The following example configures the client identity using a local 253 key: 255 [Note: '\' line wrapping for formatting only] 257 261 262 263 foobar 264 265 ct:rsa1024 267 base64encodedvalue== 268 base64encodedvalue== 269 270 272 273 274 explicitly-trusted-ssh-host-keys 276 278 279 280 algs:ssh-rsa 281 282 283 284 algs:diffie-hellman-group-exchange-sha256 285 286 287 288 algs:aes256-ctr 289 algs:aes192-ctr 290 algs:aes128-ctr 291 algs:aes256-cbc 292 algs:aes192-cbc 293 algs:aes128-cbc 294 295 296 algs:hmac-sha2-256 297 algs:hmac-sha2-512 298 299 301 302 The following example configures the client identity using a key from 303 the keystore: 305 [Note: '\' line wrapping for formatting only] 307 311 312 313 foobar 314 315 ex-rsa-key 316 317 319 320 321 explicitly-trusted-ssh-host-keys 323 325 326 327 algs:ssh-rsa 328 329 330 331 algs:diffie-hellman-group-exchange-sha256 332 333 334 335 algs:aes256-ctr 336 algs:aes192-ctr 337 algs:aes128-ctr 338 algs:aes256-cbc 339 algs:aes192-cbc 340 algs:aes128-cbc 341 342 343 algs:hmac-sha2-256 344 algs:hmac-sha2-512 345 346 348 350 3.3. YANG Module 352 This YANG module has normative references to [RFC6536], 353 [I-D.ietf-netconf-trust-anchors], and [I-D.ietf-netconf-keystore]. 355 file "ietf-ssh-client@2018-06-04.yang" 356 module ietf-ssh-client { 357 yang-version 1.1; 359 namespace "urn:ietf:params:xml:ns:yang:ietf-ssh-client"; 360 prefix "sshc"; 362 import ietf-ssh-common { 363 prefix sshcmn; 364 revision-date 2018-06-04; // stable grouping definitions 365 reference 366 "RFC XXXX: YANG Groupings for SSH Clients and SSH Servers"; 367 } 369 import ietf-trust-anchors { 370 prefix ta; 371 reference 372 "RFC YYYY: YANG Data Model for Global Trust Anchors"; 373 } 375 import ietf-keystore { 376 prefix ks; 377 reference 378 "RFC ZZZZ: 379 YANG Data Model for a Centralized Keystore Mechanism"; 380 } 382 organization 383 "IETF NETCONF (Network Configuration) Working Group"; 385 contact 386 "WG Web: 387 WG List: 389 Author: Kent Watsen 390 392 Author: Gary Wu 393 "; 395 description 396 "This module defines a reusable grouping for a SSH client that 397 can be used as a basis for specific SSH client instances. 399 Copyright (c) 2018 IETF Trust and the persons identified as 400 authors of the code. All rights reserved. 402 Redistribution and use in source and binary forms, with or 403 without modification, is permitted pursuant to, and subject 404 to the license terms contained in, the Simplified BSD 405 License set forth in Section 4.c of the IETF Trust's 406 Legal Provisions Relating to IETF Documents 407 (http://trustee.ietf.org/license-info). 409 This version of this YANG module is part of RFC XXXX; see 410 the RFC itself for full legal notices."; 412 revision "2018-06-04" { 413 description 414 "Initial version"; 415 reference 416 "RFC XXXX: YANG Groupings for SSH Clients and SSH Servers"; 417 } 419 // features 421 feature ssh-client-transport-params-config { 422 description 423 "SSH transport layer parameters are configurable on an SSH 424 client."; 425 } 427 // groupings 429 grouping ssh-client-grouping { 430 description 431 "A reusable grouping for configuring a SSH client without 432 any consideration for how an underlying TCP session is 433 established."; 435 container client-identity { 436 description 437 "The credentials used by the client to authenticate to 438 the SSH server."; 440 leaf username { 441 type string; 442 description 443 "The username of this user. This will be the username 444 used, for instance, to log into an SSH server."; 446 } 448 choice auth-type { 449 mandatory true; 450 description 451 "The authentication type."; 452 leaf password { 453 type string; 454 description 455 "A password to be used for client authentication."; 456 } 457 container public-key { 458 uses ks:local-or-keystore-asymmetric-key-grouping; 459 description 460 "A locally-defined or referenced asymmetric key pair 461 to be used for client authentication."; 462 reference 463 "RFC ZZZZ: 464 YANG Data Model for a Centralized Keystore Mechanism"; 465 } 466 container certificate { 467 if-feature sshcmn:ssh-x509-certs; 468 uses ks:local-or-keystore-end-entity-certificate-grouping; 469 description 470 "A locally-defined or referenced certificate 471 to be used for client authentication."; 472 reference 473 "RFC ZZZZ 474 YANG Data Model for a Centralized Keystore Mechanism"; 475 } 476 } // end auth-type 477 } // end client-identity 479 container server-auth { 480 must 'pinned-ssh-host-keys or pinned-ca-certs or ' 481 + 'pinned-server-certs'; 482 description 483 "Trusted server identities."; 484 leaf pinned-ssh-host-keys { 485 type ta:pinned-host-keys-ref; 486 description 487 "A reference to a list of SSH host keys used by the 488 SSH client to authenticate SSH server host keys. 489 A server host key is authenticated if it is an exact 490 match to a configured SSH host key."; 491 reference 492 "RFC YYYY: YANG Data Model for Global Trust Anchors"; 493 } 494 leaf pinned-ca-certs { 495 if-feature sshcmn:ssh-x509-certs; 496 type ta:pinned-certificates-ref; 497 description 498 "A reference to a list of certificate authority (CA) 499 certificates used by the SSH client to authenticate 500 SSH server certificates. A server certificate is 501 authenticated if it has a valid chain of trust to 502 a configured CA certificate."; 503 reference 504 "RFC YYYY: YANG Data Model for Global Trust Anchors"; 505 } 507 leaf pinned-server-certs { 508 if-feature sshcmn:ssh-x509-certs; 509 type ta:pinned-certificates-ref; 510 description 511 "A reference to a list of server certificates used by 512 the SSH client to authenticate SSH server certificates. 513 A server certificate is authenticated if it is an 514 exact match to a configured server certificate."; 515 reference 516 "RFC YYYY: YANG Data Model for Global Trust Anchors"; 517 } 518 } // end server-auth 520 container transport-params { 521 if-feature ssh-client-transport-params-config; 522 description 523 "Configurable parameters of the SSH transport layer."; 524 uses sshcmn:transport-params-grouping; 525 } 527 } // end ssh-client-grouping 529 } 530 532 4. The SSH Server Model 534 4.1. Tree Diagram 536 This section provides two tree diagrams [RFC8340] for the "ietf-ssh- 537 server" module, the first with used groupings expanded and the second 538 with used groupings not expanded. 540 The following tree diagram has used groupings expanded: 542 [Note: '\' line wrapping for formatting only] 544 module: ietf-ssh-server 546 grouping ssh-server-grouping 547 +-- server-identity 548 | +-- host-key* [name] 549 | +-- name? string 550 | +-- (host-key-type) 551 | +--:(public-key) 552 | | +-- public-key 553 | | +-- (local-or-keystore) 554 | | +--:(local) 555 | | | +-- algorithm ct:key-algorithm-ref 556 | | | +-- public-key binary 557 | | | +-- private-key union 558 | | +--:(keystore) {keystore-implemented}? 559 | | +-- reference ks:asymmetric-key-ref 560 | +--:(certificate) 561 | +-- certificate {sshcmn:ssh-x509-certs}? 562 | +-- (local-or-keystore) 563 | +--:(local) 564 | | +-- algorithm 565 | | | ct:key-algorithm-ref 566 | | +-- public-key binary 567 | | +-- private-key union 568 | | +-- cert 569 | | | ct:end-entity-cert-cms 570 | | +---n certificate-expiration 571 | | +-- expiration-date? yang:date-and-tim\ 572 e 573 | +--:(keystore) {keystore-implemented}? 574 | +-- reference 575 | ks:asymmetric-key-certificate-ref 576 +-- client-cert-auth {sshcmn:ssh-x509-certs}? 577 | +-- pinned-ca-certs? ta:pinned-certificates-ref 578 | +-- pinned-client-certs? ta:pinned-certificates-ref 579 +-- transport-params {ssh-server-transport-params-config}? 580 +-- host-key 581 | +-- host-key-alg* identityref 582 +-- key-exchange 583 | +-- key-exchange-alg* identityref 584 +-- encryption 585 | +-- encryption-alg* identityref 586 +-- mac 587 +-- mac-alg* identityref 589 The following tree diagram does not have the used groupings expanded: 591 [Note: '\' line wrapping for formatting only] 593 module: ietf-ssh-server 595 grouping ssh-server-grouping 596 +-- server-identity 597 | +-- host-key* [name] 598 | +-- name? string 599 | +-- (host-key-type) 600 | +--:(public-key) 601 | | +-- public-key 602 | | +---u ks:local-or-keystore-asymmetric-key-groupin\ 603 g 604 | +--:(certificate) 605 | +-- certificate {sshcmn:ssh-x509-certs}? 606 | +---u ks:local-or-keystore-end-entity-certificate\ 607 -grouping 608 +-- client-cert-auth {sshcmn:ssh-x509-certs}? 609 | +-- pinned-ca-certs? ta:pinned-certificates-ref 610 | +-- pinned-client-certs? ta:pinned-certificates-ref 611 +-- transport-params {ssh-server-transport-params-config}? 612 +---u sshcmn:transport-params-grouping 614 4.2. Example Usage 616 This section presents two examples showing the ssh-server-grouping 617 populated with some data. These examples are effectively the same 618 except the first configures the server identity using a local key 619 while the second uses a key configured in a keystore. Both examples 620 are consistent with the examples presented in Section 3 of 621 [I-D.ietf-netconf-trust-anchors] and Section 3.2 of 622 [I-D.ietf-netconf-keystore]. 624 The following example configures the server identity using a local 625 key: 627 [Note: '\' line wrapping for formatting only] 629 633 634 635 636 deployment-specific-certificate 637 638 ct:rsa1024 640 base64encodedvalue== 641 base64encodedvalue== 642 643 644 646 647 648 explicitly-trusted-client-ca-certs 650 explicitly-trusted-client-certs 652 654 655 656 algs:ssh-rsa 657 658 659 660 algs:diffie-hellman-group-exchange-sha256 661 662 663 664 algs:aes256-ctr 665 algs:aes192-ctr 666 algs:aes128-ctr 667 algs:aes256-cbc 668 algs:aes192-cbc 669 algs:aes128-cbc 670 671 672 algs:hmac-sha2-256 673 algs:hmac-sha2-512 674 675 677 679 The following example configures the server identity using a key from 680 the keystore: 682 [Note: '\' line wrapping for formatting only] 684 688 689 690 691 deployment-specific-certificate 692 693 ex-rsa-key 694 695 696 698 699 700 explicitly-trusted-client-ca-certs 702 explicitly-trusted-client-certs 704 706 707 708 algs:ssh-rsa 709 710 711 712 algs:diffie-hellman-group-exchange-sha256 713 714 715 716 algs:aes256-ctr 717 algs:aes192-ctr 718 algs:aes128-ctr 719 algs:aes256-cbc 720 algs:aes192-cbc 721 algs:aes128-cbc 722 723 724 algs:hmac-sha2-256 725 algs:hmac-sha2-512 726 727 729 731 4.3. YANG Module 733 This YANG module has normative references to 734 [I-D.ietf-netconf-trust-anchors] and [I-D.ietf-netconf-keystore] and 735 informative references to [RFC4253] and [RFC7317]. 737 file "ietf-ssh-server@2018-06-04.yang" 738 module ietf-ssh-server { 739 yang-version 1.1; 741 namespace "urn:ietf:params:xml:ns:yang:ietf-ssh-server"; 742 prefix "sshs"; 744 import ietf-ssh-common { 745 prefix sshcmn; 746 revision-date 2018-06-04; // stable grouping definitions 747 reference 748 "RFC XXXX: YANG Groupings for SSH Clients and SSH Servers"; 749 } 751 import ietf-trust-anchors { 752 prefix ta; 753 reference 754 "RFC YYYY: YANG Data Model for Global Trust Anchors"; 755 } 757 import ietf-keystore { 758 prefix ks; 759 reference 760 "RFC ZZZZ: 761 YANG Data Model for a Centralized Keystore Mechanism"; 762 } 764 organization 765 "IETF NETCONF (Network Configuration) Working Group"; 767 contact 768 "WG Web: 769 WG List: 771 Author: Kent Watsen 772 774 Author: Gary Wu 775 "; 777 description 778 "This module defines a reusable grouping for a SSH server that 779 can be used as a basis for specific SSH server instances. 781 Copyright (c) 2018 IETF Trust and the persons identified as 782 authors of the code. All rights reserved. 784 Redistribution and use in source and binary forms, with or 785 without modification, is permitted pursuant to, and subject 786 to the license terms contained in, the Simplified BSD 787 License set forth in Section 4.c of the IETF Trust's 788 Legal Provisions Relating to IETF Documents 789 (http://trustee.ietf.org/license-info). 791 This version of this YANG module is part of RFC XXXX; see 792 the RFC itself for full legal notices."; 794 revision "2018-06-04" { 795 description 796 "Initial version"; 797 reference 798 "RFC XXXX: YANG Groupings for SSH Clients and SSH Servers"; 799 } 801 // features 803 feature ssh-server-transport-params-config { 804 description 805 "SSH transport layer parameters are configurable on an SSH 806 server."; 807 } 809 // groupings 811 grouping ssh-server-grouping { 812 description 813 "A reusable grouping for configuring a SSH server without 814 any consideration for how underlying TCP sessions are 815 established."; 817 container server-identity { 818 description 819 "The list of host-keys the SSH server will present when 820 establishing a SSH connection."; 821 list host-key { 822 key name; 823 min-elements 1; 824 ordered-by user; 825 description 826 "An ordered list of host keys the SSH server will use to 827 construct its ordered list of algorithms, when sending 828 its SSH_MSG_KEXINIT message, as defined in Section 7.1 829 of RFC 4253."; 830 reference 831 "RFC 4253: The Secure Shell (SSH) Transport Layer 832 Protocol"; 833 leaf name { 834 type string; 835 description 836 "An arbitrary name for this host-key"; 837 } 838 choice host-key-type { 839 mandatory true; 840 description 841 "The type of host key being specified"; 842 container public-key { 843 uses ks:local-or-keystore-asymmetric-key-grouping; 844 description 845 "A locally-defined or referenced asymmetric key pair 846 to be used for the SSH server's host key."; 847 reference 848 "RFC ZZZZ: YANG Data Model for a Centralized 849 Keystore Mechanism"; 850 } 851 container certificate { 852 if-feature sshcmn:ssh-x509-certs; 853 uses 854 ks:local-or-keystore-end-entity-certificate-grouping; 855 description 856 "A locally-defined or referenced end-entity 857 certificate to be used for the SSH server's 858 host key."; 859 reference 860 "RFC ZZZZ: YANG Data Model for a Centralized 861 Keystore Mechanism"; 862 } 863 } 864 } 865 } 867 container client-cert-auth { 868 if-feature sshcmn:ssh-x509-certs; 869 description 870 "A reference to a list of pinned certificate authority (CA) 871 certificates and a reference to a list of pinned client 872 certificates. 874 Note: password and public-key based client authentication 875 is not configured in this YANG module as they are 876 expected to be configured by the ietf-system module 877 defined in RFC 7317 "; 878 reference 879 "RFC 7317: A YANG Data Model for System Management"; 880 leaf pinned-ca-certs { 881 type ta:pinned-certificates-ref; 882 description 883 "A reference to a list of certificate authority (CA) 884 certificates used by the SSH server to authenticate 885 SSH client certificates. A client certificate is 886 authenticated if it has a valid chain of trust to 887 a configured pinned CA certificate."; 888 reference 889 "RFC YYYY: YANG Data Model for Global Trust Anchors"; 890 } 891 leaf pinned-client-certs { 892 type ta:pinned-certificates-ref; 893 description 894 "A reference to a list of client certificates used by 895 the SSH server to authenticate SSH client certificates. 896 A clients certificate is authenticated if it is an 897 exact match to a configured pinned client certificate."; 898 reference 899 "RFC YYYY: YANG Data Model for Global Trust Anchors"; 900 } 901 } 903 container transport-params { 904 if-feature ssh-server-transport-params-config; 905 description 906 "Configurable parameters of the SSH transport layer."; 907 uses sshcmn:transport-params-grouping; 908 } 910 } // end ssh-server-grouping 912 } 913 915 5. The SSH Common Model 917 The SSH common model presented in this section contains identities 918 and groupings common to both SSH clients and SSH servers. The 919 transport-params-grouping can be used to configure the list of SSH 920 transport algorithms permitted by the SSH client or SSH server. The 921 lists of algorithms are ordered such that, if multiple algorithms are 922 permitted by the client, the algorithm that appears first in its list 923 that is also permitted by the server is used for the SSH transport 924 layer connection. The ability to restrict the the algorithms allowed 925 is provided in this grouping for SSH clients and SSH servers that are 926 capable of doing so and may serve to make SSH clients and SSH servers 927 compliant with security policies. 929 Features are defined for algorithms that are OPTIONAL or are not 930 widely supported by popular implementations. Note that the list of 931 algorithms is not exhaustive. As well, some algorithms that are 932 REQUIRED by [RFC4253] are missing, notably "ssh-dss" and "diffie- 933 hellman-group1-sha1" due to their weak security and there being 934 alternatives that are widely supported. 936 5.1. Tree Diagram 938 The following tree diagram [RFC8340] provides an overview of the data 939 model for the "ietf-ssh-common" module. 941 module: ietf-ssh-common 943 grouping transport-params-grouping 944 +-- host-key 945 | +-- host-key-alg* identityref 946 +-- key-exchange 947 | +-- key-exchange-alg* identityref 948 +-- encryption 949 | +-- encryption-alg* identityref 950 +-- mac 951 +-- mac-alg* identityref 953 5.2. Example Usage 955 This following example illustrates how the transport-params-grouping 956 appears when populated with some data. 958 961 962 algs:x509v3-rsa2048-sha256 963 algs:ssh-rsa 964 965 966 967 algs:diffie-hellman-group-exchange-sha256 968 969 970 971 algs:aes256-ctr 972 algs:aes192-ctr 973 algs:aes128-ctr 974 algs:aes256-cbc 975 algs:aes192-cbc 976 algs:aes128-cbc 977 978 979 algs:hmac-sha2-256 980 algs:hmac-sha2-512 981 982 984 5.3. YANG Module 986 This YANG module has normative references to [RFC4253], [RFC4344], 987 [RFC4419], [RFC5656], [RFC6187], and [RFC6668]. 989 file "ietf-ssh-common@2018-06-04.yang" 990 module ietf-ssh-common { 991 yang-version 1.1; 993 namespace "urn:ietf:params:xml:ns:yang:ietf-ssh-common"; 994 prefix "sshcmn"; 996 organization 997 "IETF NETCONF (Network Configuration) Working Group"; 999 contact 1000 "WG Web: 1001 WG List: 1003 Author: Kent Watsen 1004 1006 Author: Gary Wu 1007 "; 1009 description 1010 "This module defines a common features, identities, and 1011 groupings for Secure Shell (SSH). 1013 Copyright (c) 2018 IETF Trust and the persons identified as 1014 authors of the code. All rights reserved. 1016 Redistribution and use in source and binary forms, with or 1017 without modification, is permitted pursuant to, and subject 1018 to the license terms contained in, the Simplified BSD 1019 License set forth in Section 4.c of the IETF Trust's 1020 Legal Provisions Relating to IETF Documents 1021 (http://trustee.ietf.org/license-info). 1023 This version of this YANG module is part of RFC XXXX; see 1024 the RFC itself for full legal notices."; 1026 revision "2018-06-04" { 1027 description 1028 "Initial version"; 1029 reference 1030 "RFC XXXX: YANG Groupings for SSH Clients and SSH Servers"; 1031 } 1033 // features 1035 feature ssh-ecc { 1036 description 1037 "Elliptic Curve Cryptography is supported for SSH."; 1038 reference 1039 "RFC 5656: Elliptic Curve Algorithm Integration in the 1040 Secure Shell Transport Layer"; 1041 } 1043 feature ssh-x509-certs { 1044 description 1045 "X.509v3 certificates are supported for SSH per RFC 6187."; 1046 reference 1047 "RFC 6187: X.509v3 Certificates for Secure Shell 1048 Authentication"; 1049 } 1051 feature ssh-dh-group-exchange { 1052 description 1053 "Diffie-Hellman Group Exchange is supported for SSH."; 1055 reference 1056 "RFC 4419: Diffie-Hellman Group Exchange for the 1057 Secure Shell (SSH) Transport Layer Protocol"; 1058 } 1060 feature ssh-ctr { 1061 description 1062 "SDCTR encryption mode is supported for SSH."; 1063 reference 1064 "RFC 4344: The Secure Shell (SSH) Transport Layer 1065 Encryption Modes"; 1066 } 1068 feature ssh-sha2 { 1069 description 1070 "The SHA2 family of cryptographic hash functions is 1071 supported for SSH."; 1072 reference 1073 "FIPS PUB 180-4: Secure Hash Standard (SHS)"; 1074 } 1076 // identities 1078 identity public-key-alg-base { 1079 description 1080 "Base identity used to identify public key algorithms."; 1081 } 1083 identity ssh-dss { 1084 base public-key-alg-base; 1085 description 1086 "Digital Signature Algorithm using SHA-1 as the 1087 hashing algorithm."; 1088 reference 1089 "RFC 4253: 1090 The Secure Shell (SSH) Transport Layer Protocol"; 1091 } 1093 identity ssh-rsa { 1094 base public-key-alg-base; 1095 description 1096 "RSASSA-PKCS1-v1_5 signature scheme using SHA-1 as the 1097 hashing algorithm."; 1098 reference 1099 "RFC 4253: 1100 The Secure Shell (SSH) Transport Layer Protocol"; 1101 } 1102 identity ecdsa-sha2-nistp256 { 1103 base public-key-alg-base; 1104 if-feature "ssh-ecc and ssh-sha2"; 1105 description 1106 "Elliptic Curve Digital Signature Algorithm (ECDSA) using the 1107 nistp256 curve and the SHA2 family of hashing algorithms."; 1108 reference 1109 "RFC 5656: Elliptic Curve Algorithm Integration in the 1110 Secure Shell Transport Layer"; 1111 } 1113 identity ecdsa-sha2-nistp384 { 1114 base public-key-alg-base; 1115 if-feature "ssh-ecc and ssh-sha2"; 1116 description 1117 "Elliptic Curve Digital Signature Algorithm (ECDSA) using the 1118 nistp384 curve and the SHA2 family of hashing algorithms."; 1119 reference 1120 "RFC 5656: Elliptic Curve Algorithm Integration in the 1121 Secure Shell Transport Layer"; 1122 } 1124 identity ecdsa-sha2-nistp521 { 1125 base public-key-alg-base; 1126 if-feature "ssh-ecc and ssh-sha2"; 1127 description 1128 "Elliptic Curve Digital Signature Algorithm (ECDSA) using the 1129 nistp521 curve and the SHA2 family of hashing algorithms."; 1130 reference 1131 "RFC 5656: Elliptic Curve Algorithm Integration in the 1132 Secure Shell Transport Layer"; 1133 } 1135 identity x509v3-ssh-rsa { 1136 base public-key-alg-base; 1137 if-feature ssh-x509-certs; 1138 description 1139 "RSASSA-PKCS1-v1_5 signature scheme using a public key stored 1140 in an X.509v3 certificate and using SHA-1 as the hashing 1141 algorithm."; 1142 reference 1143 "RFC 6187: X.509v3 Certificates for Secure Shell 1144 Authentication"; 1145 } 1147 identity x509v3-rsa2048-sha256 { 1148 base public-key-alg-base; 1149 if-feature "ssh-x509-certs and ssh-sha2"; 1150 description 1151 "RSASSA-PKCS1-v1_5 signature scheme using a public key stored 1152 in an X.509v3 certificate and using SHA-256 as the hashing 1153 algorithm. RSA keys conveyed using this format MUST have a 1154 modulus of at least 2048 bits."; 1155 reference 1156 "RFC 6187: X.509v3 Certificates for Secure Shell 1157 Authentication"; 1158 } 1160 identity x509v3-ecdsa-sha2-nistp256 { 1161 base public-key-alg-base; 1162 if-feature "ssh-ecc and ssh-x509-certs and ssh-sha2"; 1163 description 1164 "Elliptic Curve Digital Signature Algorithm (ECDSA) 1165 using the nistp256 curve with a public key stored in 1166 an X.509v3 certificate and using the SHA2 family of 1167 hashing algorithms."; 1168 reference 1169 "RFC 6187: X.509v3 Certificates for Secure Shell 1170 Authentication"; 1171 } 1173 identity x509v3-ecdsa-sha2-nistp384 { 1174 base public-key-alg-base; 1175 if-feature "ssh-ecc and ssh-x509-certs and ssh-sha2"; 1176 description 1177 "Elliptic Curve Digital Signature Algorithm (ECDSA) 1178 using the nistp384 curve with a public key stored in 1179 an X.509v3 certificate and using the SHA2 family of 1180 hashing algorithms."; 1181 reference 1182 "RFC 6187: X.509v3 Certificates for Secure Shell 1183 Authentication"; 1184 } 1186 identity x509v3-ecdsa-sha2-nistp521 { 1187 base public-key-alg-base; 1188 if-feature "ssh-ecc and ssh-x509-certs and ssh-sha2"; 1189 description 1190 "Elliptic Curve Digital Signature Algorithm (ECDSA) 1191 using the nistp521 curve with a public key stored in 1192 an X.509v3 certificate and using the SHA2 family of 1193 hashing algorithms."; 1194 reference 1195 "RFC 6187: X.509v3 Certificates for Secure Shell 1196 Authentication"; 1197 } 1198 identity key-exchange-alg-base { 1199 description 1200 "Base identity used to identify key exchange algorithms."; 1201 } 1203 identity diffie-hellman-group14-sha1 { 1204 base key-exchange-alg-base; 1205 description 1206 "Diffie-Hellman key exchange with SHA-1 as HASH and 1207 Oakley Group 14 (2048-bit MODP Group)."; 1208 reference 1209 "RFC 4253: The Secure Shell (SSH) Transport Layer Protocol"; 1210 } 1212 identity diffie-hellman-group-exchange-sha1 { 1213 base key-exchange-alg-base; 1214 if-feature ssh-dh-group-exchange; 1215 description 1216 "Diffie-Hellman Group and Key Exchange with SHA-1 as HASH."; 1217 reference 1218 "RFC 4419: Diffie-Hellman Group Exchange for the 1219 Secure Shell (SSH) Transport Layer Protocol"; 1220 } 1222 identity diffie-hellman-group-exchange-sha256 { 1223 base key-exchange-alg-base; 1224 if-feature "ssh-dh-group-exchange and ssh-sha2"; 1225 description 1226 "Diffie-Hellman Group and Key Exchange with SHA-256 as HASH."; 1227 reference 1228 "RFC 4419: Diffie-Hellman Group Exchange for the 1229 Secure Shell (SSH) Transport Layer Protocol"; 1230 } 1232 identity ecdh-sha2-nistp256 { 1233 base key-exchange-alg-base; 1234 if-feature "ssh-ecc and ssh-sha2"; 1235 description 1236 "Elliptic Curve Diffie-Hellman (ECDH) key exchange using the 1237 nistp256 curve and the SHA2 family of hashing algorithms."; 1238 reference 1239 "RFC 5656: Elliptic Curve Algorithm Integration in the 1240 Secure Shell Transport Layer"; 1241 } 1243 identity ecdh-sha2-nistp384 { 1244 base key-exchange-alg-base; 1245 if-feature "ssh-ecc and ssh-sha2"; 1246 description 1247 "Elliptic Curve Diffie-Hellman (ECDH) key exchange using the 1248 nistp384 curve and the SHA2 family of hashing algorithms."; 1249 reference 1250 "RFC 5656: Elliptic Curve Algorithm Integration in the 1251 Secure Shell Transport Layer"; 1252 } 1254 identity ecdh-sha2-nistp521 { 1255 base key-exchange-alg-base; 1256 if-feature "ssh-ecc and ssh-sha2"; 1257 description 1258 "Elliptic Curve Diffie-Hellman (ECDH) key exchange using the 1259 nistp521 curve and the SHA2 family of hashing algorithms."; 1260 reference 1261 "RFC 5656: Elliptic Curve Algorithm Integration in the 1262 Secure Shell Transport Layer"; 1263 } 1265 identity encryption-alg-base { 1266 description 1267 "Base identity used to identify encryption algorithms."; 1268 } 1270 identity triple-des-cbc { 1271 base encryption-alg-base; 1272 description 1273 "Three-key 3DES in CBC mode."; 1274 reference 1275 "RFC 4253: The Secure Shell (SSH) Transport Layer Protocol"; 1276 } 1278 identity aes128-cbc { 1279 base encryption-alg-base; 1280 description 1281 "AES in CBC mode, with a 128-bit key."; 1282 reference 1283 "RFC 4253: The Secure Shell (SSH) Transport Layer Protocol"; 1284 } 1286 identity aes192-cbc { 1287 base encryption-alg-base; 1288 description 1289 "AES in CBC mode, with a 192-bit key."; 1290 reference 1291 "RFC 4253: The Secure Shell (SSH) Transport Layer Protocol"; 1292 } 1293 identity aes256-cbc { 1294 base encryption-alg-base; 1295 description 1296 "AES in CBC mode, with a 256-bit key."; 1297 reference 1298 "RFC 4253: The Secure Shell (SSH) Transport Layer Protocol"; 1299 } 1301 identity aes128-ctr { 1302 base encryption-alg-base; 1303 if-feature ssh-ctr; 1304 description 1305 "AES in SDCTR mode, with 128-bit key."; 1306 reference 1307 "RFC 4344: The Secure Shell (SSH) Transport Layer Encryption 1308 Modes"; 1309 } 1311 identity aes192-ctr { 1312 base encryption-alg-base; 1313 if-feature ssh-ctr; 1314 description 1315 "AES in SDCTR mode, with 192-bit key."; 1316 reference 1317 "RFC 4344: The Secure Shell (SSH) Transport Layer Encryption 1318 Modes"; 1319 } 1321 identity aes256-ctr { 1322 base encryption-alg-base; 1323 if-feature ssh-ctr; 1324 description 1325 "AES in SDCTR mode, with 256-bit key."; 1326 reference 1327 "RFC 4344: The Secure Shell (SSH) Transport Layer Encryption 1328 Modes"; 1329 } 1331 identity mac-alg-base { 1332 description 1333 "Base identity used to identify message authentication 1334 code (MAC) algorithms."; 1335 } 1337 identity hmac-sha1 { 1338 base mac-alg-base; 1339 description 1340 "HMAC-SHA1"; 1342 reference 1343 "RFC 4253: The Secure Shell (SSH) Transport Layer Protocol"; 1344 } 1346 identity hmac-sha2-256 { 1347 base mac-alg-base; 1348 if-feature "ssh-sha2"; 1349 description 1350 "HMAC-SHA2-256"; 1351 reference 1352 "RFC 6668: SHA-2 Data Integrity Verification for the 1353 Secure Shell (SSH) Transport Layer Protocol"; 1354 } 1356 identity hmac-sha2-512 { 1357 base mac-alg-base; 1358 if-feature "ssh-sha2"; 1359 description 1360 "HMAC-SHA2-512"; 1361 reference 1362 "RFC 6668: SHA-2 Data Integrity Verification for the 1363 Secure Shell (SSH) Transport Layer Protocol"; 1364 } 1366 // groupings 1368 grouping transport-params-grouping { 1369 description 1370 "A reusable grouping for SSH transport parameters."; 1371 reference 1372 "RFC 4253: The Secure Shell (SSH) Transport Layer Protocol"; 1373 container host-key { 1374 description 1375 "Parameters regarding host key."; 1376 leaf-list host-key-alg { 1377 type identityref { 1378 base public-key-alg-base; 1379 } 1380 ordered-by user; 1381 description 1382 "Acceptable host key algorithms in order of descending 1383 preference. 1385 If this leaf-list is not configured (has zero elements) 1386 the acceptable host key algorithms are implementation- 1387 defined."; 1388 } 1389 } 1390 container key-exchange { 1391 description 1392 "Parameters regarding key exchange."; 1393 leaf-list key-exchange-alg { 1394 type identityref { 1395 base key-exchange-alg-base; 1396 } 1397 ordered-by user; 1398 description 1399 "Acceptable key exchange algorithms in order of descending 1400 preference. 1402 If this leaf-list is not configured (has zero elements) 1403 the acceptable key exchange algorithms are implementation 1404 defined."; 1405 } 1406 } 1407 container encryption { 1408 description 1409 "Parameters regarding encryption."; 1410 leaf-list encryption-alg { 1411 type identityref { 1412 base encryption-alg-base; 1413 } 1414 ordered-by user; 1415 description 1416 "Acceptable encryption algorithms in order of descending 1417 preference. 1419 If this leaf-list is not configured (has zero elements) 1420 the acceptable encryption algorithms are implementation 1421 defined."; 1422 } 1423 } 1424 container mac { 1425 description 1426 "Parameters regarding message authentication code (MAC)."; 1427 leaf-list mac-alg { 1428 type identityref { 1429 base mac-alg-base; 1430 } 1431 ordered-by user; 1432 description 1433 "Acceptable MAC algorithms in order of descending 1434 preference. 1436 If this leaf-list is not configured (has zero elements) 1437 the acceptable MAC algorithms are implementation- 1438 defined."; 1439 } 1440 } 1442 } // transport-params-grouping 1444 } 1445 1447 6. Security Considerations 1449 The YANG modules defined in this document are designed to be accessed 1450 via YANG based management protocols, such as NETCONF [RFC6241] and 1451 RESTCONF [RFC8040]. Both of these protocols have mandatory-to- 1452 implement secure transport layers (e.g., SSH, TLS) with mutual 1453 authentication. 1455 The NETCONF access control model (NACM) [RFC6536] provides the means 1456 to restrict access for particular users to a pre-configured subset of 1457 all available protocol operations and content. 1459 Since the modules defined in this document define only groupings, 1460 these considerations are primarily for the designers of other modules 1461 that use these groupings. 1463 There are a number of data nodes defined in the YANG modules that are 1464 writable/creatable/deletable (i.e., config true, which is the 1465 default). These data nodes may be considered sensitive or vulnerable 1466 in some network environments. Write operations (e.g., edit-config) 1467 to these data nodes without proper protection can have a negative 1468 effect on network operations. These are the subtrees and data nodes 1469 and their sensitivity/vulnerability: 1471 /: The entire data tree defined by all the modules defined in this 1472 draft are sensitive to write operations. For instance, the 1473 addition or removal of references to keys, certificates, 1474 trusted anchors, etc., can dramatically alter the implemented 1475 security policy. However, no NACM annotations are applied as 1476 the data SHOULD be editable by users other than a designated 1477 'recovery session'. 1479 Some of the readable data nodes in the YANG modules may be considered 1480 sensitive or vulnerable in some network environments. It is thus 1481 important to control read access (e.g., via get, get-config, or 1482 notification) to these data nodes. These are the subtrees and data 1483 nodes and their sensitivity/vulnerability: 1485 /client-auth/password: This node in the 'ietf-ssh-client' module 1486 is additionally sensitive to read operations such that, in 1487 normal use cases, it should never be returned to a client. The 1488 only time this node should be returned is to support backup/ 1489 restore type workflows. However, no NACM annotations are 1490 applied as the data SHOULD be writable by users other than a 1491 designated 'recovery session'. 1493 Some of the RPC operations in this YANG module may be considered 1494 sensitive or vulnerable in some network environments. It is thus 1495 important to control access to these operations. These are the 1496 operations and their sensitivity/vulnerability: 1498 NONE 1500 7. IANA Considerations 1502 7.1. The IETF XML Registry 1504 This document registers three URIs in the IETF XML registry 1505 [RFC3688]. Following the format in [RFC3688], the following 1506 registrations are requested: 1508 URI: urn:ietf:params:xml:ns:yang:ietf-ssh-client 1509 Registrant Contact: The NETCONF WG of the IETF. 1510 XML: N/A, the requested URI is an XML namespace. 1512 URI: urn:ietf:params:xml:ns:yang:ietf-ssh-server 1513 Registrant Contact: The NETCONF WG of the IETF. 1514 XML: N/A, the requested URI is an XML namespace. 1516 URI: urn:ietf:params:xml:ns:yang:ietf-ssh-common 1517 Registrant Contact: The NETCONF WG of the IETF. 1518 XML: N/A, the requested URI is an XML namespace. 1520 7.2. The YANG Module Names Registry 1522 This document registers three YANG modules in the YANG Module Names 1523 registry [RFC7950]. Following the format in [RFC7950], the the 1524 following registrations are requested: 1526 name: ietf-ssh-client 1527 namespace: urn:ietf:params:xml:ns:yang:ietf-ssh-client 1528 prefix: sshc 1529 reference: RFC XXXX 1531 name: ietf-ssh-server 1532 namespace: urn:ietf:params:xml:ns:yang:ietf-ssh-server 1533 prefix: sshs 1534 reference: RFC XXXX 1536 name: ietf-ssh-common 1537 namespace: urn:ietf:params:xml:ns:yang:ietf-ssh-common 1538 prefix: sshcmn 1539 reference: RFC XXXX 1541 8. Acknowledgements 1543 The authors would like to thank for following for lively discussions 1544 on list and in the halls (ordered by last name): Andy Bierman, Martin 1545 Bjorklund, Benoit Claise, Mehmet Ersue, Balazs Kovacs, David 1546 Lamparter, Alan Luchuk, Ladislav Lhotka, Radek Krejci, Tom Petch, 1547 Juergen Schoenwaelder, Phil Shafer, Sean Turner, Michal Vasko, and 1548 Bert Wijnen. 1550 9. References 1552 9.1. Normative References 1554 [I-D.ietf-netconf-keystore] 1555 Watsen, K., "YANG Data Model for a "Keystore" Mechanism", 1556 draft-ietf-netconf-keystore-04 (work in progress), October 1557 2017. 1559 [I-D.ietf-netconf-trust-anchors] 1560 Watsen, K., "YANG Data Model for Global Trust Anchors", 1561 draft-ietf-netconf-trust-anchors-00 (work in progress), 1562 June 2018. 1564 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 1565 Requirement Levels", BCP 14, RFC 2119, 1566 DOI 10.17487/RFC2119, March 1997, 1567 . 1569 [RFC4344] Bellare, M., Kohno, T., and C. Namprempre, "The Secure 1570 Shell (SSH) Transport Layer Encryption Modes", RFC 4344, 1571 DOI 10.17487/RFC4344, January 2006, 1572 . 1574 [RFC4419] Friedl, M., Provos, N., and W. Simpson, "Diffie-Hellman 1575 Group Exchange for the Secure Shell (SSH) Transport Layer 1576 Protocol", RFC 4419, DOI 10.17487/RFC4419, March 2006, 1577 . 1579 [RFC5656] Stebila, D. and J. Green, "Elliptic Curve Algorithm 1580 Integration in the Secure Shell Transport Layer", 1581 RFC 5656, DOI 10.17487/RFC5656, December 2009, 1582 . 1584 [RFC6187] Igoe, K. and D. Stebila, "X.509v3 Certificates for Secure 1585 Shell Authentication", RFC 6187, DOI 10.17487/RFC6187, 1586 March 2011, . 1588 [RFC6536] Bierman, A. and M. Bjorklund, "Network Configuration 1589 Protocol (NETCONF) Access Control Model", RFC 6536, 1590 DOI 10.17487/RFC6536, March 2012, 1591 . 1593 [RFC6668] Bider, D. and M. Baushke, "SHA-2 Data Integrity 1594 Verification for the Secure Shell (SSH) Transport Layer 1595 Protocol", RFC 6668, DOI 10.17487/RFC6668, July 2012, 1596 . 1598 [RFC7950] Bjorklund, M., Ed., "The YANG 1.1 Data Modeling Language", 1599 RFC 7950, DOI 10.17487/RFC7950, August 2016, 1600 . 1602 [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC 1603 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, 1604 May 2017, . 1606 9.2. Informative References 1608 [OPENSSH] "OpenSSH", 2016, . 1610 [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, 1611 DOI 10.17487/RFC3688, January 2004, 1612 . 1614 [RFC4252] Ylonen, T. and C. Lonvick, Ed., "The Secure Shell (SSH) 1615 Authentication Protocol", RFC 4252, DOI 10.17487/RFC4252, 1616 January 2006, . 1618 [RFC4253] Ylonen, T. and C. Lonvick, Ed., "The Secure Shell (SSH) 1619 Transport Layer Protocol", RFC 4253, DOI 10.17487/RFC4253, 1620 January 2006, . 1622 [RFC4254] Ylonen, T. and C. Lonvick, Ed., "The Secure Shell (SSH) 1623 Connection Protocol", RFC 4254, DOI 10.17487/RFC4254, 1624 January 2006, . 1626 [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., 1627 and A. Bierman, Ed., "Network Configuration Protocol 1628 (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, 1629 . 1631 [RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure 1632 Shell (SSH)", RFC 6242, DOI 10.17487/RFC6242, June 2011, 1633 . 1635 [RFC7317] Bierman, A. and M. Bjorklund, "A YANG Data Model for 1636 System Management", RFC 7317, DOI 10.17487/RFC7317, August 1637 2014, . 1639 [RFC8040] Bierman, A., Bjorklund, M., and K. Watsen, "RESTCONF 1640 Protocol", RFC 8040, DOI 10.17487/RFC8040, January 2017, 1641 . 1643 [RFC8071] Watsen, K., "NETCONF Call Home and RESTCONF Call Home", 1644 RFC 8071, DOI 10.17487/RFC8071, February 2017, 1645 . 1647 [RFC8340] Bjorklund, M. and L. Berger, Ed., "YANG Tree Diagrams", 1648 BCP 215, RFC 8340, DOI 10.17487/RFC8340, March 2018, 1649 . 1651 Appendix A. Change Log 1653 A.1. 00 to 01 1655 o Noted that '0.0.0.0' and '::' might have special meanings. 1657 o Renamed "keychain" to "keystore". 1659 A.2. 01 to 02 1661 o Removed the groupings 'listening-ssh-client-grouping' and 1662 'listening-ssh-server-grouping'. Now modules only contain the 1663 transport-independent groupings. 1665 o Simplified the "client-auth" part in the ietf-ssh-client module. 1666 It now inlines what it used to point to keystore for. 1668 o Added cipher suites for various algorithms into new 'ietf-ssh- 1669 common' module. 1671 A.3. 02 to 03 1673 o Removed 'RESTRICTED' enum from 'password' leaf type. 1675 o Added a 'must' statement to container 'server-auth' asserting that 1676 at least one of the various auth mechanisms must be specified. 1678 o Fixed description statement for leaf 'trusted-ca-certs'. 1680 A.4. 03 to 04 1682 o Change title to "YANG Groupings for SSH Clients and SSH Servers" 1684 o Added reference to RFC 6668 1686 o Added RFC 8174 to Requirements Language Section. 1688 o Enhanced description statement for ietf-ssh-server's "trusted-ca- 1689 certs" leaf. 1691 o Added mandatory true to ietf-ssh-client's "client-auth" 'choice' 1692 statement. 1694 o Changed the YANG prefix for module ietf-ssh-common from 'sshcom' 1695 to 'sshcmn'. 1697 o Removed the compression algorithms as they are not commonly 1698 configurable in vendors' implementations. 1700 o Updating descriptions in transport-params-grouping and the 1701 servers's usage of it. 1703 o Now tree diagrams reference ietf-netmod-yang-tree-diagrams 1705 o Updated YANG to use typedefs around leafrefs to common keystore 1706 paths 1708 o Now inlines key and certificates (no longer a leafref to keystore) 1710 A.5. 04 to 05 1712 o Merged changes from co-author. 1714 A.6. 05 to 06 1716 o Updated to use trust anchors from trust-anchors draft (was 1717 keystore draft) 1719 o Now uses new keystore grouping enabling asymmetric key to be 1720 either locally defined or a reference to the keystore. 1722 Authors' Addresses 1724 Kent Watsen 1725 Juniper Networks 1727 EMail: kwatsen@juniper.net 1729 Gary Wu 1730 Cisco Systems 1732 EMail: garywu@cisco.com