Subject: [netconf] Create IANA-defined modules?

From: Kent Watsen <[email-masked]>
Date: Wed, 26 May 2021 19:05:47 +0000

[CC-ing Gary, who contributed the “ietf-[tls/ssh]-common" modules originally]

NETCONF WG,

The “tls-client-server” draft just received the following GitHub “issue”:

=====start=====
This is rather a question than an issue, maybe.

Given that IANA maintains the TLS parameters at   https://www.iana.org/assignments/tls-parameters/tls-parameters.xhtml, would it not be better for that content to come from something like iana-tls[-parameters].yang rather than an IETF maintained YANG module?
=====stop=====

This is a good point.  Perhaps we should move all the identities for the algorithms defined in the “ietf-tls-common” module to an IANA-maintained “iana-tls-parameters” module.  Thoughts?

By extension, the same statement applies to the “ssh-client-server” draft and the IANA maintained SSH parameters page: https://www.iana.org/assignments/ssh-parameters/ssh-parameters.xhtml.

One potential issue with doing this is that the existing identities have “if-feature” statements that constrain them to specific TLS-versions and algorithm-families, and are sometimes marked as “deprecated".  By example:

    identity ecdhe-ecdsa-with-aes-128-cbc-sha256 {
       if-feature "tls-1_2";
       if-feature "tls-ecc and tls-sha2";
       base cipher-suite-base;
       status "deprecated";
       description
           "Cipher suite TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256.";
       reference
          "RFC 5289: TLS Elliptic Curve Cipher Suites with
                             SHA-256/384 and AES Galois Counter Mode (GCM)";
    }

But that information is NOT captured in the IANA-maintained page.   What to do?

One option would be to drop all the feature statements.  All they do is limit the totality of algorithms presented to an administrator, when configuring which algorithms the client/server should support.  Worst case, all algorithms (of a given type) are presented, regardless if supported by the, e.g., TLS protocol version.  When configuring clients/servers using, e.g., text-based configuration files, such filters are never available.  Does anyone know what Cisco/Juniper/etc. devices do in their command-line and/or web interfaces?

Another option, which I like because it’s less work for me (unless someone can volunteer a GitHub pull request), is to remove the ietf-[tls/ssh]-common modules altogether.  They’re currently optional-to-configure and, when not configured, it’s an implementation-specific decision what, e.g., algorithms to list as being supported during the protocol handshake.  Personally, I’ve never used them (or implemented support for them), happily deferring to internal code and underlying libraries.  In lieu of us not defining these modules now, applications could augment-in their own configuration nodes and, of course, a future WG effort could add them.  Thoughts on this approach?

K.

---

From: "Gary Wu (garywu)" <[email-masked]>
Date: Thu, 27 May 2021 01:40:45 +0000

Hi Kent,

I'm out of the loop with the happenings in the WG, so apologies in advance if
my views are ill-informed.

The IANA maintained module for parameters makes good sense to me.

The if-features are less important than being able to configure or unconfigure
which ciphers are able to be used, so if one has to go, it should be the former.
Presumably, administrators are making security considerations based on sources
other than just what the YANG module has defined.

Thanks,
Gary

On 5/26/21, 12:05 PM, "Kent Watsen" <[email-masked]> wrote:

    NETCONF WG,

    =====start=====

    K.

---

From: Andy Bierman <[email-masked]>
Date: Wed, 26 May 2021 19:29:16 -0700

Hi,

There are a couple comments I left out of the YD review...

1) if-feature usage in identities

IMO YANG conformance is still very spotty at best and conformance for
identityref data nodes
is especially broken.  I realize that if-feature is the standards-track
solution to
make a value optional-to-implement, but it is fragile, not future-proof,
and adds unwarranted complexity.

Since identityref conformance does not actually require any of the
published identities
to be used at all (only the base has to match), the entire concept of
conformance for identities needs
to be re-evaluated.

Is it important to restrict the server to specific identities,
or is it sufficient for the client to simply discover what identities are
supported?

It seems in many cases (e.g. iana-if-type) that the authors clearly do not
intend
whatsoever that every identity in the module be mandatory-to-implement.
It seems like a discovery mechanism for identityref data nodes would be more
useful than attempting to prune identities with if-feature-stmts.

My preference is that all features and if-features related to identities be
removed.

2) perfect is the enemy of good

The 5 year milestone is coming up on this work.
Pencils down. Time to finish.

Andy

On Wed, May 26, 2021 at 12:06 PM Kent Watsen <[email-masked]> wrote:

> Given that IANA maintains the TLS parameters at
> https://www.iana.org/assignments/tls-parameters/tls-parameters.xhtml,
> would it not be better for that content to come from something like
> iana-tls[-parameters].yang rather than an IETF maintained YANG module?
> =====stop=====
>
> This is a good point.  Perhaps we should move all the identities for the
> algorithms defined in the “ietf-tls-common” module to an IANA-maintained
> “iana-tls-parameters” module.  Thoughts?
>
> By extension, the same statement applies to the “ssh-client-server” draft
> and the IANA maintained SSH parameters page:
> https://www.iana.org/assignments/ssh-parameters/ssh-parameters.xhtml.
>
> One potential issue with doing this is that the existing identities have
> “if-feature” statements that constrain them to specific TLS-versions and
> algorithm-families, and are sometimes marked as “deprecated".  By example:
>
> One option would be to drop all the feature statements.  All they do is
> limit the totality of algorithms presented to an administrator, when
> configuring which algorithms the client/server should support.  Worst case,
> all algorithms (of a given type) are presented, regardless if supported by
> the, e.g., TLS protocol version.  When configuring clients/servers using,
> e.g., text-based configuration files, such filters are never available.
> Does anyone know what Cisco/Juniper/etc. devices do in their command-line
> and/or web interfaces?
>
> Another option, which I like because it’s less work for me (unless someone
> can volunteer a GitHub pull request), is to remove the
> ietf-[tls/ssh]-common modules altogether.  They’re currently
> optional-to-configure and, when not configured, it’s an
> implementation-specific decision what, e.g., algorithms to list as being
> supported during the protocol handshake.  Personally, I’ve never used them
> (or implemented support for them), happily deferring to internal code and
> underlying libraries.  In lieu of us not defining these modules now,
> applications could augment-in their own configuration nodes and, of course,
> a future WG effort could add them.  Thoughts on this approach?
>
> K.
>
>
>
> _______________________________________________
> netconf mailing list
> [email-masked]
> https://www.ietf.org/mailman/listinfo/netconf
>

---

From: Kent Watsen <[email-masked]>
Date: Thu, 27 May 2021 19:15:46 +0000

Hi Andy,

> There are a couple comments I left out of the YD review…

No problem.

> IMO YANG conformance is still very spotty at best and conformance for identityref data nodes
> is especially broken.  I realize that if-feature is the standards-track solution to
> make a value optional-to-implement, but it is fragile, not future-proof, and adds unwarranted complexity.
> 
> Since identityref conformance does not actually require any of the published identities
> to be used at all (only the base has to match), the entire concept of conformance for identities needs
> to be re-evaluated.
> 
> or is it sufficient for the client to simply discover what identities are supported?
> 
> It seems in many cases (e.g. iana-if-type) that the authors clearly do not intend
> My preference is that all features and if-features related to identities be removed.

If we go the route of moving the identities to IANA-maintained modules, then this will likely happen automatically.   If we go the route of dropping the “common” modules altogether, then this becomes a non-issue.  In either case, the if-featured identities disappear.

K.