Re: [PATCH cryptodev-2.6] crypto: rsassa-pkcs1 - Reinstate support for legacy protocols
Herbert Xu <[email protected]>
| Newsgroups | dev.linux.lists.iwd,org.kernel.vger.keyrings,org.kernel.vger.linux-crypto |
|---|---|
| Message-ID | <[email protected]> |
On Tue, Oct 29, 2024 at 11:24:57AM +0100, Lukas Wunner wrote:
> Commit 1e562deacecc ("crypto: rsassa-pkcs1 - Migrate to sig_alg backend")
> enforced that rsassa-pkcs1 sign/verify operations specify a hash
> algorithm. That is necessary because per RFC 8017 sec 8.2, a hash
> algorithm identifier must be prepended to the hash before generating or
> verifying the signature ("Full Hash Prefix").
>
> However the commit went too far in that it changed user space behavior:
> KEYCTL_PKEY_QUERY system calls now return -EINVAL unless they specify a
> hash algorithm. Intel Wireless Daemon (iwd) is one application issuing
> such system calls (for EAP-TLS).
>
> Closer analysis of the Embedded Linux Library (ell) used by iwd reveals
> that the problem runs even deeper: When iwd uses TLS 1.1 or earlier, it
> not only queries for keys, but performs sign/verify operations without
> specifying a hash algorithm. These legacy TLS versions concatenate an
> MD5 to a SHA-1 hash and omit the Full Hash Prefix:
>
> https://git.kernel.org/pub/scm/libs/ell/ell.git/tree/ell/tls-suites.c#n97
>
> TLS 1.1 was deprecated in 2021 by RFC 8996, but removal of support was
> inadvertent in this case. It probably should be coordinated with iwd
> maintainers first.
>
> So reinstate support for such legacy protocols by defaulting to hash
> algorithm "none" which uses an empty Full Hash Prefix.
>
> If it is later on decided to remove TLS 1.1 support but still allow
> KEYCTL_PKEY_QUERY without a hash algorithm, that can be achieved by
> reverting the present commit and replacing it with the following patch:
>
> https://lore.kernel.org/r/[email protected]/
>
> It's worth noting that Python's cryptography library gained support for
> such legacy use cases very recently, so they do seem to still be a thing.
> The Python developers identified IKE version 1 as another protocol
> omitting the Full Hash Prefix:
>
> https://github.com/pyca/cryptography/issues/10226
> https://github.com/pyca/cryptography/issues/5495
>
> The author of those issues, Zoltan Kelemen, spent considerable effort
> searching for test vectors but only found one in a 2019 blog post by
> Kevin Jones. Add it to testmgr.h to verify correctness of this feature.
>
> Examination of wpa_supplicant as well as various IKE daemons (libreswan,
> strongswan, isakmpd, raccoon) has determined that none of them seems to
> use the kernel's Key Retention Service, so iwd is the only affected user
> space application known so far.
>
> Fixes: 1e562deacecc ("crypto: rsassa-pkcs1 - Migrate to sig_alg backend")
> Reported-by: Klara Modin <[email protected]>
> Tested-by: Klara Modin <[email protected]>
> Closes: https://lore.kernel.org/r/[email protected]/
> Signed-off-by: Lukas Wunner <[email protected]>
> ---
> crypto/asymmetric_keys/public_key.c | 2 +-
> crypto/rsassa-pkcs1.c | 20 +++++++++++---
> crypto/testmgr.c | 6 ++++
> crypto/testmgr.h | 55 +++++++++++++++++++++++++++++++++++++
> 4 files changed, 78 insertions(+), 5 deletions(-)
Patch applied. Thanks.
--
Email: Herbert Xu <[email protected]>
Home Page: http://gondor.apana.org.au/~herbert/
PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt