Re: [PATCH cryptodev-2.6] crypto: rsassa-pkcs1 - Reinstate support for legacy protocols

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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/ZxalYZwH5UiGX5uj@xxxxxxxxx/
> 
> 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 <klarasmodin@xxxxxxxxx>
> Tested-by: Klara Modin <klarasmodin@xxxxxxxxx>
> Closes: https://lore.kernel.org/r/2ed09a22-86c0-4cf0-8bda-ef804ccb3413@xxxxxxxxx/
> Signed-off-by: Lukas Wunner <lukas@xxxxxxxxx>
> ---
>  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 <herbert@xxxxxxxxxxxxxxxxxxx>
Home Page: http://gondor.apana.org.au/~herbert/
PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt




[Index of Archives]     [Kernel]     [Gnu Classpath]     [Gnu Crypto]     [DM Crypt]     [Netfilter]     [Bugtraq]
  Powered by Linux