From: Daniel Zahka <daniel.zahka@gmail.com>
To: Willem de Bruijn <willemdebruijn.kernel@gmail.com>,
Donald Hunter <donald.hunter@gmail.com>,
Jakub Kicinski <kuba@kernel.org>,
"David S. Miller" <davem@davemloft.net>,
Eric Dumazet <edumazet@google.com>,
Paolo Abeni <pabeni@redhat.com>, Simon Horman <horms@kernel.org>,
Jonathan Corbet <corbet@lwn.net>,
Andrew Lunn <andrew+netdev@lunn.ch>
Cc: "Saeed Mahameed" <saeedm@nvidia.com>,
"Leon Romanovsky" <leon@kernel.org>,
"Tariq Toukan" <tariqt@nvidia.com>,
"Boris Pismenny" <borisp@nvidia.com>,
"Kuniyuki Iwashima" <kuniyu@google.com>,
"Willem de Bruijn" <willemb@google.com>,
"David Ahern" <dsahern@kernel.org>,
"Neal Cardwell" <ncardwell@google.com>,
"Patrisious Haddad" <phaddad@nvidia.com>,
"Raed Salem" <raeds@nvidia.com>,
"Jianbo Liu" <jianbol@nvidia.com>,
"Dragos Tatulea" <dtatulea@nvidia.com>,
"Rahul Rameshbabu" <rrameshbabu@nvidia.com>,
"Stanislav Fomichev" <sdf@fomichev.me>,
"Toke Høiland-Jørgensen" <toke@redhat.com>,
"Alexander Lobakin" <aleksander.lobakin@intel.com>,
"Jacob Keller" <jacob.e.keller@intel.com>,
netdev@vger.kernel.org
Subject: Re: [PATCH v2 10/17] psp: track generations of device key
Date: Thu, 26 Jun 2025 08:19:57 -0400 [thread overview]
Message-ID: <a6f3efcf-f820-4b0e-8d2b-9b818b58fc2f@gmail.com> (raw)
In-Reply-To: <685c9236a44fc_2a5da429471@willemb.c.googlers.com.notmuch>
On 6/25/25 8:20 PM, Willem de Bruijn wrote:
> Daniel Zahka wrote:
>> From: Jakub Kicinski <kuba@kernel.org>
>>
>> There is a (somewhat theoretical in absence of multi-host support)
>> possibility that another entity will rotate the key and we won't
>> know. This may lead to accepting packets with matching SPI but
>> which used different crypto keys than we expected. Maintain and
>> compare "key generation" per PSP spec.
> One option is for the device to include a generation id along
> with the session key and SPI.
>
> It already does, as the MSB of the SPI determines which of the two
> device keys is responsible.
>
> But this could be extended to multi-bit.
The idea behind psd->generation is that the device can give each device
key an id, and then on rx, the device will fill out the rx metadata with
the id for whatever key was used for decryption. The policy checking
code in the tcp layer checks the generation from the rx metadata against
the one in the psp_assoc from when the session key was created. In this
way, psd->generation is opaque. It would be most intuitive for it to be
something like additional MSBs of the spi space, though.
>
> Another option to avoid this issue is for a device to notify the host
> whenever it rotates the key. This can be due to a multi-host scenario
> where another host requested a rotation. Or it may be a device
> initiated rotation as it runs out of 31b SPI.
>
This will need to be supported in any case. I think this is all to deal
with any potential races against getting a spi after a rotation and
immediately trying to use it to forge a packet targeted towards a socket
on the same machine that may now have that same spi from a previous
device key. I'm not sure if that is a legitimate concern, but if the
device has the ability to provide extra device key generation bits with
rx decryption metadata, this just uses that.
>> Since we're tracking "key generations" more explicitly now,
>> maintain different lists for associations from different generations.
>> This way we can catch stale associations (the user space should
>> listen to rotation notifications and change the keys).
>>
>> Drivers can "opt out" of generation tracking by setting
>> the generation value to 0.
> Why?
If the device doesn't support this capability of filling out rx metadata
with additional key generation bits beyond the MSB of the spi.
next prev parent reply other threads:[~2025-06-26 12:20 UTC|newest]
Thread overview: 42+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-06-25 13:51 [PATCH v2 00/17] add basic PSP encryption for TCP connections Daniel Zahka
2025-06-25 13:51 ` [PATCH v2 01/17] psp: add documentation Daniel Zahka
2025-06-25 23:42 ` Willem de Bruijn
2025-06-26 11:55 ` Daniel Zahka
2025-06-26 13:49 ` Jakub Kicinski
2025-06-26 13:58 ` Willem de Bruijn
2025-06-25 13:51 ` [PATCH v2 02/17] psp: base PSP device support Daniel Zahka
2025-06-25 23:55 ` Willem de Bruijn
2025-06-26 14:00 ` Jakub Kicinski
2025-06-26 14:25 ` Willem de Bruijn
2025-06-26 15:11 ` Jakub Kicinski
2025-06-26 17:20 ` Willem de Bruijn
2025-06-26 23:57 ` Jakub Kicinski
2025-06-27 16:10 ` Willem de Bruijn
2025-06-25 13:51 ` [PATCH v2 03/17] net: modify core data structures for PSP datapath support Daniel Zahka
2025-06-25 13:51 ` [PATCH v2 04/17] tcp: add datapath logic for PSP with inline key exchange Daniel Zahka
2025-06-26 0:06 ` Willem de Bruijn
2025-06-26 14:07 ` Jakub Kicinski
2025-06-25 13:51 ` [PATCH v2 05/17] psp: add op for rotation of device key Daniel Zahka
2025-06-25 13:51 ` [PATCH v2 06/17] net: move sk_validate_xmit_skb() to net/core/dev.c Daniel Zahka
2025-06-25 13:51 ` [PATCH v2 07/17] net: tcp: allow tcp_timewait_sock to validate skbs before handing to device Daniel Zahka
2025-06-26 0:02 ` Willem de Bruijn
2025-06-25 13:51 ` [PATCH v2 08/17] net: psp: add socket security association code Daniel Zahka
2025-06-25 22:18 ` Jakub Kicinski
2025-06-25 23:01 ` Daniel Zahka
2025-06-26 2:09 ` Willem de Bruijn
2025-06-26 2:12 ` Willem de Bruijn
2025-06-26 12:37 ` Daniel Zahka
2025-06-26 3:31 ` Eric Dumazet
2025-06-25 13:51 ` [PATCH v2 09/17] net: psp: update the TCP MSS to reflect PSP packet overhead Daniel Zahka
2025-06-25 13:52 ` [PATCH v2 10/17] psp: track generations of device key Daniel Zahka
2025-06-26 0:20 ` Willem de Bruijn
2025-06-26 12:19 ` Daniel Zahka [this message]
2025-06-26 14:02 ` Willem de Bruijn
2025-06-25 13:52 ` [PATCH v2 11/17] net/mlx5e: Support PSP offload functionality Daniel Zahka
2025-06-25 13:52 ` [PATCH v2 12/17] net/mlx5e: Implement PSP operations .assoc_add and .assoc_del Daniel Zahka
2025-06-25 13:52 ` [PATCH v2 13/17] net/mlx5e: Implement PSP Tx data path Daniel Zahka
2025-06-26 1:54 ` Willem de Bruijn
2025-06-25 13:52 ` [PATCH v2 14/17] net/mlx5e: Add PSP steering in local NIC RX Daniel Zahka
2025-06-25 13:52 ` [PATCH v2 15/17] net/mlx5e: Configure PSP Rx flow steering rules Daniel Zahka
2025-06-25 13:52 ` [PATCH v2 16/17] net/mlx5e: Add Rx data path offload Daniel Zahka
2025-06-25 13:52 ` [PATCH v2 17/17] net/mlx5e: Implement PSP key_rotate operation Daniel Zahka
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=a6f3efcf-f820-4b0e-8d2b-9b818b58fc2f@gmail.com \
--to=daniel.zahka@gmail.com \
--cc=aleksander.lobakin@intel.com \
--cc=andrew+netdev@lunn.ch \
--cc=borisp@nvidia.com \
--cc=corbet@lwn.net \
--cc=davem@davemloft.net \
--cc=donald.hunter@gmail.com \
--cc=dsahern@kernel.org \
--cc=dtatulea@nvidia.com \
--cc=edumazet@google.com \
--cc=horms@kernel.org \
--cc=jacob.e.keller@intel.com \
--cc=jianbol@nvidia.com \
--cc=kuba@kernel.org \
--cc=kuniyu@google.com \
--cc=leon@kernel.org \
--cc=ncardwell@google.com \
--cc=netdev@vger.kernel.org \
--cc=pabeni@redhat.com \
--cc=phaddad@nvidia.com \
--cc=raeds@nvidia.com \
--cc=rrameshbabu@nvidia.com \
--cc=saeedm@nvidia.com \
--cc=sdf@fomichev.me \
--cc=tariqt@nvidia.com \
--cc=toke@redhat.com \
--cc=willemb@google.com \
--cc=willemdebruijn.kernel@gmail.com \
/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;
as well as URLs for NNTP newsgroup(s).