public inbox for linux-nvme@lists.infradead.org
 help / color / mirror / Atom feed
From: Christoph Hellwig <hch@lst.de>
To: Hannes Reinecke <hare@kernel.org>
Cc: Christoph Hellwig <hch@lst.de>, Keith Busch <kbusch@kernel.org>,
	Sagi Grimberg <sagi@grimberg.me>,
	linux-nvme@lists.infradead.org
Subject: Re: [PATCH 07/10] nvme-tcp: request secure channel concatenation
Date: Tue, 28 Jan 2025 10:11:31 +0100	[thread overview]
Message-ID: <20250128091131.GF25760@lst.de> (raw)
In-Reply-To: <20250122165829.11603-8-hare@kernel.org>

On Wed, Jan 22, 2025 at 05:58:26PM +0100, Hannes Reinecke wrote:
> Add a fabrics option 'concat' to request secure channel concatenation.
> When secure channel concatenation is enabled a 'generated PSK' is inserted
> into the keyring such that it's available after reset.

That's a very sparse commit message.  What is the point of doing this?
What is the spec reference for the implementation?  What is the user
interface?  Why does this now always select NVME_KEYRING?

> +	if (!ctrl->opts->concat || chap->qid != 0)
> +		data->sc_c = NVME_AUTH_SECP_NOSC;
> +	else if (ctrl->opts->tls_key)
> +		data->sc_c = NVME_AUTH_SECP_REPLACETLSPSK;
> +	else
> +		data->sc_c = NVME_AUTH_SECP_NEWTLSPSK;

Took me a while to unwind this.  Why not make this a little easier as:

	if (ctrl->opts->concat && chap->qid == 0) {
		if (ctrl->opts->tls_key)
			data->sc_c = NVME_AUTH_SECP_REPLACETLSPSK;
		else
			data->sc_c = NVME_AUTH_SECP_NEWTLSPSK;
	} else {
		data->sc_c = NVME_AUTH_SECP_NOSC;
	}

?

> +	ret = nvme_auth_derive_tls_psk(chap->hash_id, psk, psk_len, digest, &tls_psk);

Overly long line.

> +	tls_key = nvme_tls_psk_refresh(ctrl->opts->keyring, ctrl->opts->host->nqn,

Same.  Not going to mention more of that, but please fix it up.

> +		if (ctrl->opts->concat &&
> +		    (ret = nvme_auth_secure_concat(ctrl, chap))) {

		if (ctrl->opts->concat) {
			ret = nvme_auth_secure_concat(ctrl, chap);
			if (ret) {
				...

> +	/*
> +	 * Only run authentication on the admin queue for
> 	 * secure concatenation
> +	 */

The two lines of comment can be folded in one, and it's missing a period
at the end of the sentence.

> +			/*
> +			 * The generated PSK is stored in the
> +			 * fabric options
> +			 */

Missing period and not using up the line as well.

> +/*
> + * The TLS key is set by secure concatenation after negotiation
> + * has been completed on the admin queue. We need to revoke the
> + * key when:
> + * - concatenation is enabled
> + *   (otherwise it's a static key set by the user)
> + * and
> + * - the generated key is present in ctrl->tls_key
> + *   (otherwise there's nothing to revoke)
> + * and
> + * - a valid PSK key ID has been set in ctrl->tls_pskid
> + *   (otherwise TLS negotiation has not run).
> + *
> + * We cannot always revoke the key, as we're calling
> + * nvme_tcp_alloc_admin_queue() twice during secure
> + * concatenation, once on a 'normal' connection to run
> + * the DH-HMAC-CHAP negotiation (which generates the key,
> + * so it _must not_ be set), and once after the negotiation
> + * (which uses the key, so it _must_ be set).
> + */

Another overly dense fomatting.  Are you trying to make up the
extra width used in the first patches? :)

> --- a/include/linux/nvme.h
> +++ b/include/linux/nvme.h
> @@ -1746,6 +1746,13 @@ enum {
>  	NVME_AUTH_DHGROUP_INVALID	= 0xff,
>  };
>  
> +enum {
> +	NVME_AUTH_SECP_NOSC		= 0x00,
> +	NVME_AUTH_SECP_SC		= 0x01,
> +	NVME_AUTH_SECP_NEWTLSPSK	= 0x02,
> +	NVME_AUTH_SECP_REPLACETLSPSK	= 0x03,
> +};

Comments please to explain what fields this applies to.  Also we
usuall try to split protocol definition additions into separate
patches.



  reply	other threads:[~2025-01-28  9:12 UTC|newest]

Thread overview: 30+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-01-22 16:58 [PATCHv14 00/10] nvme: implement secure concatenation Hannes Reinecke
2025-01-22 16:58 ` [PATCH 01/10] crypto,fs: Separate out hkdf_extract() and hkdf_expand() Hannes Reinecke
2025-01-22 16:58 ` [PATCH 02/10] nvme: add nvme_auth_generate_psk() Hannes Reinecke
2025-01-28  8:53   ` Christoph Hellwig
2025-01-28 15:26     ` Hannes Reinecke
2025-01-22 16:58 ` [PATCH 03/10] nvme: add nvme_auth_generate_digest() Hannes Reinecke
2025-01-28  8:56   ` Christoph Hellwig
2025-01-22 16:58 ` [PATCH 04/10] nvme: add nvme_auth_derive_tls_psk() Hannes Reinecke
2025-01-28  8:58   ` Christoph Hellwig
2025-02-03 13:37     ` Hannes Reinecke
2025-02-04  5:23       ` Christoph Hellwig
2025-01-22 16:58 ` [PATCH 05/10] nvme-keyring: add nvme_tls_psk_refresh() Hannes Reinecke
2025-01-28  9:00   ` Christoph Hellwig
2025-02-03 13:55     ` Hannes Reinecke
2025-01-22 16:58 ` [PATCH 06/10] nvme: always include <linux/key.h> Hannes Reinecke
2025-01-28  9:01   ` Christoph Hellwig
2025-02-03 13:55     ` Hannes Reinecke
2025-01-22 16:58 ` [PATCH 07/10] nvme-tcp: request secure channel concatenation Hannes Reinecke
2025-01-28  9:11   ` Christoph Hellwig [this message]
2025-01-28 15:33     ` Hannes Reinecke
2025-02-03 14:06     ` Hannes Reinecke
2025-01-22 16:58 ` [PATCH 08/10] nvme-fabrics: reset admin connection for secure concatenation Hannes Reinecke
2025-01-22 16:58 ` [PATCH 09/10] nvmet-tcp: support secure channel concatenation Hannes Reinecke
2025-01-28  9:15   ` Christoph Hellwig
2025-02-03 14:20     ` Hannes Reinecke
2025-01-22 16:58 ` [PATCH 10/10] nvmet: add tls_concat and tls_key debugfs entries Hannes Reinecke
2025-01-23 22:13 ` [PATCHv14 00/10] nvme: implement secure concatenation Sagi Grimberg
  -- strict thread matches above, loose matches on Subject: below --
2024-12-03 11:02 [PATCHv13 " Hannes Reinecke
2024-12-03 11:02 ` [PATCH 07/10] nvme-tcp: request secure channel concatenation Hannes Reinecke
2024-12-24 11:45   ` Sagi Grimberg
2024-12-02 14:29 [PATCHv12 00/10] nvme: implement secure concatenation Hannes Reinecke
2024-12-02 14:29 ` [PATCH 07/10] nvme-tcp: request secure channel concatenation Hannes Reinecke

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20250128091131.GF25760@lst.de \
    --to=hch@lst.de \
    --cc=hare@kernel.org \
    --cc=kbusch@kernel.org \
    --cc=linux-nvme@lists.infradead.org \
    --cc=sagi@grimberg.me \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox