Re: [netconf] ietf crypto types - permanently hidden

Balázs Kovács <> Mon, 29 April 2019 12:24 UTC

Return-Path: <>
Received: from localhost (localhost []) by (Postfix) with ESMTP id 73A1912012B for <>; Mon, 29 Apr 2019 05:24:52 -0700 (PDT)
X-Virus-Scanned: amavisd-new at
X-Spam-Flag: NO
X-Spam-Score: -2.001
X-Spam-Status: No, score=-2.001 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] 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 OfHz3th_YoYt for <>; Mon, 29 Apr 2019 05:24:49 -0700 (PDT)
Received: from ( [IPv6:2a01:111:f400:fe05::62f]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by (Postfix) with ESMTPS id 2C52A12012A for <>; Mon, 29 Apr 2019 05:24:48 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=SSJSbXR0zj9lEaRTX8WNlkPRP3MOLjvpaEL/oJuFbRQ=; b=gzYzOJpKUjGXtVvHfUt2iHZ48y0x6MDOCzbssUkrcE48ByX8v5ifc8WnQ9rKCZa0+Mc6xKd3fWihxw3inVSMtT9ad/vSrGzkac4h55OnIRsRbjnoRicEvAWOwwcuKy/TL8JiHcjzaEojSMPtsnNIEhgH+neY5d+dIuVcDiKEX9A=
Received: from ( by ( with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1856.5; Mon, 29 Apr 2019 12:24:46 +0000
Received: from ([fe80::dc72:dfff:beb3:3b47]) by ([fe80::dc72:dfff:beb3:3b47%7]) with mapi id 15.20.1856.008; Mon, 29 Apr 2019 12:24:46 +0000
From: Balázs Kovács <>
To: Kent Watsen <>, Juergen Schoenwaelder <>
CC: "" <>
Thread-Topic: [netconf] ietf crypto types - permanently hidden
Date: Mon, 29 Apr 2019 12:24:45 +0000
Message-ID: <>
References: <> <> <01dd01d4eb9c$b9a04160$> <> <> <> <> <> <>
In-Reply-To: <>
Accept-Language: en-US
Content-Language: en-US
authentication-results: spf=none (sender IP is );
x-originating-ip: []
x-ms-publictraffictype: Email
x-ms-office365-filtering-correlation-id: 659cd67f-827c-4f26-6097-08d6cc9daa75
x-microsoft-antispam: BCL:0; PCL:0; RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600141)(711020)(4605104)(2017052603328)(7193020); SRVR:VI1PR07MB5312;
x-ms-traffictypediagnostic: VI1PR07MB5312:
x-microsoft-antispam-prvs: <>
x-ms-oob-tlc-oobclassifiers: OLM:10000;
x-forefront-prvs: 0022134A87
x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(376002)(346002)(39860400002)(366004)(136003)(396003)(13464003)(189003)(199004)(97736004)(71190400001)(71200400001)(52536014)(64756008)(66556008)(66476007)(76176011)(316002)(4326008)(66446008)(7696005)(76116006)(6436002)(66946007)(5660300002)(73956011)(68736007)(7736002)(53936002)(99286004)(66574012)(45776006)(305945005)(74316002)(25786009)(9686003)(14454004)(229853002)(93886005)(486006)(86362001)(186003)(66066001)(26005)(256004)(14444005)(53546011)(476003)(102836004)(81156014)(8676002)(11346002)(446003)(81166006)(8936002)(6506007)(6246003)(478600001)(55016002)(110136005)(2906002)(33656002)(6116002)(3846002); DIR:OUT; SFP:1101; SCL:1; SRVR:VI1PR07MB5312;; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1;
received-spf: None ( does not designate permitted sender hosts)
x-ms-exchange-senderadcheck: 1
x-microsoft-antispam-message-info: Rnp54ev/pJzJ5wzn4QVZR/iOAJM6EdjHnn4T0X/LxPQ5o6n9PzhgHuhb/17QSS9/3q8G4+jxlaA409GA2z1DpcxErn7Sinhafn0h05N3GUqMy7hwNf6dicIPvPVzUupvTvPGqcCXZxeWWP7I4FhqgD+VbEg3E0A0hwgeIUVAxqr63VLlEZ+r3Y4P0TJ3ik3opkaC+yqFi+7CltxGdpUAkPH0Ls/sFTP9bwVnyFI/koNiyvOoXfKFPlqqwpO3PIVF5waGK9E9r+bWOCFYWzNx8CQX1ecALmiL2MAYjUDTuYUPNNA+g/egM6HaIYyyA7Id/pJxjDLmlAh8xQfaAXoJHAgAjnZXT2hNdL7BMOmXqRJcu2oWL5hsD26RfNMH/IafCRLvWB09jla7zfoVcAm/cgedWKuJqNIHlr+rAztk0sY=
Content-Type: text/plain; charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-MS-Exchange-CrossTenant-Network-Message-Id: 659cd67f-827c-4f26-6097-08d6cc9daa75
X-MS-Exchange-CrossTenant-originalarrivaltime: 29 Apr 2019 12:24:45.9985 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 92e84ceb-fbfd-47ab-be52-080c6b87953f
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR07MB5312
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: Mon, 29 Apr 2019 12:24:53 -0000


Kent, I'm fine with your proposals.

Regarding subsequent calls to the actions, I agree the safe choice would be to deny them; otherwise, one could run into invalid key pairs (where a certificate was already configured) and authentication failures with network peers (especially in SSH-key-based-authentication case). 


> -----Original Message-----
> From: Kent Watsen <>
> Sent: Wednesday, April 24, 2019 10:30 PM
> To: Juergen Schoenwaelder <>
> Cc: Balázs Kovács <>;
> Subject: Re: [netconf] ietf crypto types - permanently hidden
> Hi Juergen,
> > Perhaps this should say 'implementation specific' instead 'application
> > specific'.
> Changed in my local copy.
> >> My recommendation is to modify the "generate/install-hidden-key"
> (renamed to just "generate/install-key") actions to have a flag indicating if
> the key should be "permanently hidden" (perhaps by using a TPM) or not, in
> which case configuration is created, same as if the client had used <edit-
> config>, but without needing to touch the key.
> >
> > I agree that having a flag to control the behavior is useful and I
> > think there should be explicit text how the action fails in case the
> > requested action cannot be performed.
> >
> > I am not sure I understand install-hidden-key. The description says:
> >
> >           "Requests the device to load the specified values into
> >            a hidden key.  The resulting asymmetric key values are
> >            considered operational state and hence present only in
> >            <operational>.";
> >
> > So what is the persistence model of this? Does a key installed with
> > install-hidden-key survive reboots? If so, can I delete somehow such a
> > hidden key? (Is the answer that this key is tied to the lifetime of
> > the list element indirectly using this grouping?) Does invoking
> > install-hidden-key twice cause the first installed key to be
> > overwritten? Can the install-hidden-key action fail in any way?
> >
> > This leads to related questions for generate-hidden-key: Does invoking
> > this action twice cause an existing key to be overwritten? Can I
> > explicitely delete a generated hidden key? Does deleting the list item
> > that directly or indirectly uses this grouping delete a hidden key?
> [Disclaimer: the below reflect my understanding of how the current model
> works, and does not necessarily reflect if we were to flip things around by
> letting the actions generate configuration.]
> The expectation is that the "permanently hidden" keys would persist,
> presumably with origin=system.
> In the YANG, the "permanently-hidden" enum only appears in the
> "asymmetric-key-pair-grouping" grouping.   Consuming data models are
> expected to "use" this grouping under a "config true" node.  This grouping's
> description statement is noteworthy:
>  grouping asymmetric-key-pair-grouping {
>     description
>       "A private/public key pair.
>        The 'algorithm', 'public-key', and 'private-key'  nodes are
>        not mandatory because they MAY be defined in <operational>.
>        Implementations SHOULD assert that these values are either
>        configured or that they exist in <operational>.";
>     ...
>  }
> Thusly it is expected that the client will create the parent node (e.g., via
> <edit-config>) and then invoke either the generate or install hidden key
> action.  Presumably, the lifetime of the permanently hidden key would be
> tied to the lifetime of its parent.
> Regarding what happens when the actions are invoked a second time, it's
> not specified.  One choice, perhaps the safe choice, would be to deny
> subsequent attempts, forcing the client to create a new parent node instead.
> If the parent node is in a list, such as in the keystore, then the second key
> could be created, with certificates bound to it, before mapping reference to
> the old-key to the new-key.  However, if the key is not in a list, such as when
> using a "local-definition", then in in-place migration, along with service
> disruption, would be required.
> Of course, one has to ask how often/likely is it that a client wants to
> regenerate the private key.  Presumably it would only be due to the concern
> that the key had been compromised (which shouldn't happen if
> "permanently hidden") or, perhaps, due to a proactive key-rotation policy,
> thinking (misguided, I believe, proven false now) that the private key's
> entropy expires over time.  Regardless, the point is that it seems to be an
> action that would seldomly occur and, when/if it does, the effort to create
> another parent node (in keystore or a local-definition) might not be a big
> deal.
> PS: words such as "expectation" and "presumably" are used above to
> indicate a likely need for the text to be more explicit.
> Kent // contributor