Re: [netconf] ietf crypto types - permanently hidden

Kent Watsen <> Sat, 23 March 2019 19:23 UTC

Return-Path: <>
Received: from localhost (localhost []) by (Postfix) with ESMTP id ADAD7130ED8 for <>; Sat, 23 Mar 2019 12:23:30 -0700 (PDT)
X-Virus-Scanned: amavisd-new at
X-Spam-Flag: NO
X-Spam-Score: -1.9
X-Spam-Status: No, score=-1.9 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, RCVD_IN_DNSWL_NONE=-0.0001] autolearn=ham autolearn_force=no
Authentication-Results: (amavisd-new); dkim=pass (1024-bit key)
Received: from ([]) by localhost ( []) (amavisd-new, port 10024) with ESMTP id odBdVgTKDjAN for <>; Sat, 23 Mar 2019 12:23:28 -0700 (PDT)
Received: from ( []) (using TLSv1.2 with cipher ECDHE-RSA-AES128-SHA256 (128/128 bits)) (No client certificate requested) by (Postfix) with ESMTPS id 4D29F1277D9 for <>; Sat, 23 Mar 2019 12:23:27 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/simple; s=6gbrjpgwjskckoa6a5zn6fwqkn67xbtw;; t=1553369005; h=Content-Type:Mime-Version:Subject:From:In-Reply-To:Date:Cc:Content-Transfer-Encoding:Message-Id:References:To:Feedback-ID; bh=V2O1K8vMv1YCsgecysS7nIyL23EFN3CKM6Gu+gqh7rg=; b=ALvL8tF1KwvklmqbYDJyBjbidI524NxgxMbFx60HHm0Ot1I2f4i0FXAVxQwXIFDQ ZhIvM2ufvuUtDqghzDk4e1OWP9Qpj+A+/P4nd7ZNy7n0F16SuasIszEFhxkZ1k3Xq0Q 99YsLP0BSCY9TsrBJswbgst3RsWypMZlFt/Zi7NY=
Content-Type: text/plain; charset="utf-8"
Mime-Version: 1.0 (1.0)
From: Kent Watsen <>
X-Mailer: iPad Mail (16D57)
In-Reply-To: <00b701d4e0cb$e79e9660$>
Date: Sat, 23 Mar 2019 19:23:25 +0000
Cc: Balázs Kovács <>, Juergen Schoenwaelder <>, "" <>
Content-Transfer-Encoding: quoted-printable
Message-ID: <>
References: <> <> <> <00b701d4e0cb$e79e9660$>
To: tom petch <>
X-SES-Outgoing: 2019.03.23-
Archived-At: <>
Subject: Re: [netconf] ietf crypto types - permanently hidden
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: NETCONF WG list <>
List-Unsubscribe: <>, <>
List-Archive: <>
List-Post: <>
List-Help: <>
List-Subscribe: <>, <>
X-List-Received-Date: Sat, 23 Mar 2019 19:23:33 -0000

[top-posting for convenience]

At first we had an RPC to create a key-pair (protected or not) so as to support the best practice of the private key never leaving a device.  But backup/restore became an issue, and Martin made a persuasive argument that the private key SHOULD be configuration (not operational state).  Thusly, we relegated the RPC (now called “generate-hidden-key”) to the special case where the system generates a key that is operational-state and inaccessible (at least, not in its raw form; it may be accessible in a shrouded form) and, for all other cases, the client MUST configure the key pair (transmitted over the wire, not best practice, oh well).

Currently there are only these two options, based on the accessibility of the private key. Is the request to introduce a third option, but isn’t the intent better supported by access-control?  [the “private-key” leaf is nacm:default-deny-all]. 

Renaming “hidden” to “inaccessible” seems okay albeit, in both cases, it’s the unspecified subject (client vs system) that matters (i.e., hidden/inaccessible to whom?).  

Kent // contributor

Sent from my iPad
> On Mar 22, 2019, at 5:28 PM, tom petch <> wrote:
> ----- Original Message -----
> From: "Balázs Kovács" <>
> Sent: Friday, March 22, 2019 12:44 PM
> Hi,
> I would really prefer the definition for 'hidden' as 'not accessible via
> YANG protocols'. The explanation is that regardless of what method I use
> to create/store the private keys, I still might not want the operator to
> generate keys outside of the device or configure binary secret strings.
> <tp>
> I think that the meaning of the term 'hidden' varies depending on which
> part of the I-D you are reading.  The term is absent from the referenced
> RFC, 8017 and 5915, which is probably not a coincidence.  Rather, the
> terminology of the literature is of a key pair, made up of a public and
> private key so the action
> generate-hidden-key {
> probably means generate-key-pair; but, in other places, the word
> 'hidden' clearly has different semantics and would probably best be
> replaced by something else, such as inaccessible.
> Tom Petch
> I considered TPM protection for hidden keys is an option or example so
> far, which adds limitations or additional complexity for moving keys,
> but should not be the only option for hidden keys. The descriptions
> mention TPM as example, then the rest of the text should align also to
> keep that as example.
> Br,
> Balazs
> -----Original Message-----
> From: Juergen Schoenwaelder <>
> Sent: Thursday, March 21, 2019 4:29 PM
> To: Balázs Kovács <>
> Cc:; Kent Watsen <>
> Subject: Re: [netconf] ietf crypto types - permanently hidden
> I agree, I do not understand the second sentence either. My problem is
> that I do not know what a 'real' private key is, are hidden keys
> somewhat unreal? Or is "not hidden" = "real"?
> The last sentence can probably be fixed; I think the intention was to
> say that you can't backup and restore hidden keys by retrieving
> configuration and restoring the configuration.
> In general, I think we need a definition what a hidden key is. Is
> something not exposed via a YANG interface a hidden key (but it may be a
> regular key when using other device access methods)? Or do we require
> that a hidden key is generally protected? I assume some people want to
> have flexibility here but from the viewpoint of a security administrator
> it matters a lot whether 'hidden' means 'generally not accessible' or
> only 'not accessible via YANG protocols'.
> The description of install-hidden-key seems to indicate a key is already
> 'hidden' if it only exists in <operational>. Is this really a 'hidden'
> key or more an 'ephemeral' key?
> /js
>> On Thu, Mar 21, 2019 at 02:23:27PM +0000, Balázs Kovács wrote:
>> Hi,
>> The 'generate-hidden-key' action is meant for cases when the key must
> be generated in the device and not the operator is configuring it. The
> 'generate-hidden-key' is said to produce a 'permanently-hidden'
> asymmetric key. The description of 'permanently-hidden' is as follows:
>>                "The private key is inaccessible due to being
>>                  protected by the system (e.g., a cryptographic
>>                  hardware module).  It is not possible to
>>                  configure a permanently hidden key, as a real
>>                  private key value must be set.  Permanently
>>                  hidden keys cannot be archived or backed up.";
>> Th second sentence doesn't sound right. I can create a permanently
> hidden key any time by calling the 'generate-hidden-key' action, or if
> the device or the model allows I could even switch to non-hidden key, I
> believe, by providing the binary. So I find the second sentence
> irrelevant in this description.
>> More importantly, I find the "Permanently hidden keys cannot be
> archived or backed up" statement false. Isn't that implementation
> specific how archiving is done? If a device puts the hidden keys on some
> storage, it may still be possible to back them up. I would prefer to
> remove this sentence and leave backup considerations to implementations.
>> Could these changes be done?
>> Br,
>> Balazs
>> _______________________________________________
>> netconf mailing list
> --
> Juergen Schoenwaelder           Jacobs University Bremen gGmbH
> Phone: +49 421 200 3587         Campus Ring 1 | 28759 Bremen | Germany
> Fax:   +49 421 200 3103         <>
> _______________________________________________
> netconf mailing list