From: "Michael S. Tsirkin" <mst@redhat.com>
To: helei <lhestz@163.com>
Cc: qemu-devel@nongnu.org, arei.gonglei@huawei.com, zhenwei.pi@linux.dev
Subject: Re: [PATCH 0/1] hw/virtio-crypto: add akcipher keylen validation
Date: Tue, 9 Jun 2026 11:59:36 -0400 [thread overview]
Message-ID: <20260609115607-mutt-send-email-mst@kernel.org> (raw)
In-Reply-To: <9b5b6607-13f5-4b61-88be-d8386a0d1b00@163.com>
On Mon, Jun 08, 2026 at 10:35:14PM +0800, helei wrote:
>
>
> On 6/7/26 10:18, Michael S. Tsirkin wrote:
> > On Sun, Jun 07, 2026 at 08:15:19AM +0800, helei wrote:
> >>
> >> On 6/6/26 16:37, Michael S. Tsirkin wrote:
> >>> On Sat, Jun 06, 2026 at 03:47:55PM +0800, helei wrote:
> >>>> The virtio-crypto spec does not dictate a maximum length limit for
> >>>> asymmetric cipher (akcipher) keys. We added a hard limit which mirrors
> >>>> the linux kernels's internal limit for akcipher keys (see
> >>>> keyctl framework and the add_key syscall).
> >>> We have max_size - doesn't that apply?
> >>> backends/cryptodev-builtin.c actually sets it:
> >>> backends/cryptodev-builtin.c:#define CRYPTODEV_BUITLIN_MAX_REQUEST_SIZE (1024 * 1024)
> >>> backends/cryptodev-builtin.c: backend->conf.max_size = CRYPTODEV_BUITLIN_MAX_REQUEST_SIZE;
> >>
> >> Thanks for your review! I have verified via testing that all processing
> >> requests in the dataq are strictly
> >>
> >> bounded by max_size, but session creation requests in the ctrlq are not.
> >
> >
> >
> > well if we read the spec it's vague
> >
> > max_size is defined as "the maximum size of the variable-length parameters of data operation of
> > each crypto request's content." and
> > The driver SHOULD read max_size to discover the maximum size of the variable-length parameters of
> > data operation of the crypto request's content
> >
> >
> > so data operation.
> >
> > however:
> >
> > "The device MUST set max_size to show the
> > maximum size of crypto request the device supports".
> >
> > seems to cover all requests?
> >
> the original architectural intent was almost certainly for max_size to
> govern data-plane payloads, while control messages are handled by their
> own independent limits (max_cipher_key_len and max_auth_key_len).
> both upstream linux guest driver (virtio_crypto_skcipher_algs.c) and
> qemu's builtin-backend actually implement it exactly this way:
> - data path enforces max_size by checking it against payload length
> (note that cryptodev-builtin recently capped this to 1MB via CVE-2025-14876)
> - control path completely ignores max_size when creating sessions
we can add akcipher key length feature but what to do about existing
guests?
could max_size be a way to fix it?
> >
> >
> > btw vhost user sets max_size to max u64 - is that sane?
> >
> this is sane for an out-of-process data plane from a transport
> perspective, but it creates a practical catch when backed by a dpdk
> implementation:
> - in dpdk vhost_crypto.c, vhost_crypto_check_cipher_request() enforces a
> strict check: src_data_len <= RTE_MBUF_DEFAULT_BUF_SIZE (2176 bytes)
> - the guest kernel driver simply wraps the incoming sg list and passes
> it to virtqueue directly.
> this creates a tricky situation for users: because vhost-user claims
> max_size is max_u64, the users has no way of knowing this 2KB ceiling
> exists unless they explicitly know the host backend is dpdk and look at
> its source code.
worth fixing maybe.
> >
> >
> >>>
> >>>> Maybe we should update the virtio-spec and add a max_akcipher_key_len
> >>>> field for virtio crypto devices.
> >>> maybe
> >>>
> >>>> helei (1):
> >>>> hw/virtio-crypto: enforce max akcipher key length
> >>>>
> >>>> hw/virtio/virtio-crypto.c | 13 +++++++++++++
> >>>> 1 file changed, 13 insertions(+)
> >>>>
> >>>> --
> >>>> 2.43.0
> >
prev parent reply other threads:[~2026-06-09 16:00 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-06-06 7:47 [PATCH 0/1] hw/virtio-crypto: add akcipher keylen validation helei
2026-06-06 7:47 ` [PATCH] hw/virtio-crypto: enforce max akcipher key length helei
2026-06-06 8:59 ` Manos Pitsidianakis
2026-06-06 8:37 ` [PATCH 0/1] hw/virtio-crypto: add akcipher keylen validation Michael S. Tsirkin
2026-06-07 0:15 ` helei
2026-06-07 2:18 ` Michael S. Tsirkin
2026-06-08 14:35 ` helei
2026-06-09 15:59 ` Michael S. Tsirkin [this message]
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=20260609115607-mutt-send-email-mst@kernel.org \
--to=mst@redhat.com \
--cc=arei.gonglei@huawei.com \
--cc=lhestz@163.com \
--cc=qemu-devel@nongnu.org \
--cc=zhenwei.pi@linux.dev \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.