mbox series

[v4,0/4] Add SP800-108 KDF implementation to crypto API

Message ID 4642773.OV4Wx5bFTl@positron.chronox.de (mailing list archive)
Headers show
Series Add SP800-108 KDF implementation to crypto API | expand

Message

Stephan Mueller Nov. 19, 2021, 6:55 a.m. UTC
Hi,

The key derviation functions are considered to be a cryptographic
operation. As cryptographic operations are provided via the kernel
crypto API, this patch set consolidates the SP800-108 KDF
implementation into the crypto API.

If this patch is accepted, another patch set will be published attempting
to move the HKDF implementation from the crypto file system code base
to the kernel crypto API.

The KDF implementation is provided as service functions. Yet, the
interface to the the provided KDF is modeled such, that additional
KDF implementation can use the same API style. The goal is to allow
the transformation from a service function into a crypto API template
eventually.

The KDF executes a power-on self test with test vectors from commonly
known sources.

Tbe SP800-108 KDF implementation is used to replace the implementation
in the keys subsystem. The implementation was verified using the
keyutils command line test code provided in
tests/keyctl/dh_compute/valid. All tests show that the expected values
are calculated with the new code.

Changes v3 to v4:
* SP800-108 KDF kernel configuration parameter is not user selectable
  as suggested by Eric Biggers
* update the error code path for the self test handling to mirror
  testmgr.c as suggested by Eric Biggers
* further cleanup in kdf_alloc as suggested by Mat Martineau

Changes v2 to v3:

* port to kernel 5.16-rc1
* remove the HKDF patch to only leave the SP800-108 patch

Stephan Mueller (4):
  crypto: Add key derivation self-test support code
  crypto: add SP800-108 counter key derivation function
  security: DH - remove dead code for zero padding
  security: DH - use KDF implementation from crypto API

 crypto/Kconfig                         |   4 +
 crypto/Makefile                        |   5 +
 crypto/kdf_sp800108.c                  | 153 +++++++++++++++++++++++++
 include/crypto/internal/kdf_selftest.h |  71 ++++++++++++
 include/crypto/kdf_sp800108.h          |  61 ++++++++++
 security/keys/Kconfig                  |   2 +-
 security/keys/dh.c                     | 130 ++++-----------------
 7 files changed, 315 insertions(+), 111 deletions(-)
 create mode 100644 crypto/kdf_sp800108.c
 create mode 100644 include/crypto/internal/kdf_selftest.h
 create mode 100644 include/crypto/kdf_sp800108.h

Comments

Herbert Xu Nov. 26, 2021, 5:32 a.m. UTC | #1
On Fri, Nov 19, 2021 at 07:55:03AM +0100, Stephan Müller wrote:
> Hi,
> 
> The key derviation functions are considered to be a cryptographic
> operation. As cryptographic operations are provided via the kernel
> crypto API, this patch set consolidates the SP800-108 KDF
> implementation into the crypto API.
> 
> If this patch is accepted, another patch set will be published attempting
> to move the HKDF implementation from the crypto file system code base
> to the kernel crypto API.
> 
> The KDF implementation is provided as service functions. Yet, the
> interface to the the provided KDF is modeled such, that additional
> KDF implementation can use the same API style. The goal is to allow
> the transformation from a service function into a crypto API template
> eventually.
> 
> The KDF executes a power-on self test with test vectors from commonly
> known sources.
> 
> Tbe SP800-108 KDF implementation is used to replace the implementation
> in the keys subsystem. The implementation was verified using the
> keyutils command line test code provided in
> tests/keyctl/dh_compute/valid. All tests show that the expected values
> are calculated with the new code.
> 
> Changes v3 to v4:
> * SP800-108 KDF kernel configuration parameter is not user selectable
>   as suggested by Eric Biggers
> * update the error code path for the self test handling to mirror
>   testmgr.c as suggested by Eric Biggers
> * further cleanup in kdf_alloc as suggested by Mat Martineau
> 
> Changes v2 to v3:
> 
> * port to kernel 5.16-rc1
> * remove the HKDF patch to only leave the SP800-108 patch
> 
> Stephan Mueller (4):
>   crypto: Add key derivation self-test support code
>   crypto: add SP800-108 counter key derivation function
>   security: DH - remove dead code for zero padding
>   security: DH - use KDF implementation from crypto API
> 
>  crypto/Kconfig                         |   4 +
>  crypto/Makefile                        |   5 +
>  crypto/kdf_sp800108.c                  | 153 +++++++++++++++++++++++++
>  include/crypto/internal/kdf_selftest.h |  71 ++++++++++++
>  include/crypto/kdf_sp800108.h          |  61 ++++++++++
>  security/keys/Kconfig                  |   2 +-
>  security/keys/dh.c                     | 130 ++++-----------------
>  7 files changed, 315 insertions(+), 111 deletions(-)
>  create mode 100644 crypto/kdf_sp800108.c
>  create mode 100644 include/crypto/internal/kdf_selftest.h
>  create mode 100644 include/crypto/kdf_sp800108.h

All applied.  Thanks.