[PATCH v5 0/5] KEYS: trusted: Introduce support for NXP CAAM-based trusted keys
Ahmad Fatoum
a.fatoum at pengutronix.de
Tue Feb 22 19:58:14 UTC 2022
Series applies on top of current linux-tpmdd/master
v4 was here:
https://lore.kernel.org/linux-integrity/cover.8f40b6d1b93adc80aed2cac29a134f7a7fb5ee98.1633946449.git-series.a.fatoum@pengutronix.de
v4 -> v5:
- Collected Reviewed-by's and Tested-by's
- Changed trusted.kernel_rng bool option into a string trusted.rng option
(Jarkko)
- Changed modifier to SECURE_KEY for compatibility with linux-imx
(Matthias)
- Typo fix in commit message (Jarkko)
- Note in CAAM patch what CAAM is (Jarkko)
v3 -> v4:
- Collected Acked-by's, Reviewed-by's and Tested-by
- Fixed typo spotted by David
- Rebased on top of Andreas' regression fix and pulled Kconfig
inflexibility fix back into series
v2 -> v3:
- Split off first Kconfig preparation patch. It fixes a regression,
so sent that out, so it can be applied separately (Sumit)
- Split off second key import patch. I'll send that out separately
as it's a development aid and not required within the CAAM series
- add MAINTAINERS entry
v1 -> v2:
- Added new commit to make trusted key Kconfig option independent
of TPM and added new Kconfig file for trusted keys
- Add new commit for importing existing key material
- Allow users to force use of kernel RNG (Jarkko)
- Enforce maximum keymod size (Horia)
- Use append_seq_(in|out)_ptr_intlen instead of append_seq_(in|out)_ptr
(Horia)
- Make blobifier handle private to CAAM glue code file (Horia)
- Extend trusted keys documentation for CAAM
- Rebased and updated original cover letter:
The Cryptographic Acceleration and Assurance Module (CAAM) is an IP core
built into many newer i.MX and QorIQ SoCs by NXP.
Its blob mechanism can AES encrypt/decrypt user data using a unique
never-disclosed device-specific key.
There has been multiple discussions on how to represent this within the kernel:
The Cryptographic Acceleration and Assurance Module (CAAM) is an IP core
built into many newer i.MX and QorIQ SoCs by NXP.
Its blob mechanism can AES encrypt/decrypt user data using a unique
never-disclosed device-specific key. There has been multiple
discussions on how to represent this within the kernel:
- [RFC] crypto: caam - add red blobifier
Steffen implemented[1] a PoC sysfs driver to start a discussion on how to
best integrate the blob mechanism.
Mimi suggested that it could be used to implement trusted keys.
Trusted keys back then were a TPM-only feature.
- security/keys/secure_key: Adds the secure key support based on CAAM.
Udit Agarwal added[2] a new "secure" key type with the CAAM as backend.
The key material stays within the kernel only.
Mimi and James agreed that this needs a generic interface, not specific
to CAAM. Mimi suggested trusted keys. Jan noted that this could serve as
basis for TEE-backed keys.
- [RFC] drivers: crypto: caam: key: Add caam_tk key type
Franck added[3] a new "caam_tk" key type based on Udit's work. This time
it uses CAAM "black blobs" instead of "red blobs", so key material stays
within the CAAM and isn't exposed to kernel in plaintext.
James voiced the opinion that there should be just one user-facing generic
wrap/unwrap key type with multiple possible handlers.
David suggested trusted keys.
- Introduce TEE based Trusted Keys support
Sumit reworked[4] trusted keys to support multiple possible backends with
one chosen at boot time and added a new TEE backend along with TPM.
This now sits in Jarkko's master branch to be sent out for v5.13
This patch series builds on top of Sumit's rework to have the CAAM as yet another
trusted key backend.
The CAAM bits are based on Steffen's initial patch from 2015. His work had been
used in the field for some years now, so I preferred not to deviate too much from it.
This series has been tested with dmcrypt[5] on an i.MX6DL.
Looking forward to your feedback.
Cheers,
Ahmad
[1]: https://lore.kernel.org/linux-crypto/1447082306-19946-2-git-send-email-s.trumtrar@pengutronix.de/
[2]: https://lore.kernel.org/linux-integrity/20180723111432.26830-1-udit.agarwal@nxp.com/
[3]: https://lore.kernel.org/lkml/1551456599-10603-2-git-send-email-franck.lenormand@nxp.com/
[4]: https://lore.kernel.org/lkml/1604419306-26105-1-git-send-email-sumit.garg@linaro.org/
[5]: https://lore.kernel.org/linux-integrity/20210122084321.24012-2-a.fatoum@pengutronix.de/
---
To: Jarkko Sakkinen <jarkko at kernel.org>
To: "Horia Geantă" <horia.geanta at nxp.com>
To: Mimi Zohar <zohar at linux.ibm.com>
To: Aymen Sghaier <aymen.sghaier at nxp.com>
To: Herbert Xu <herbert at gondor.apana.org.au>
To: "David S. Miller" <davem at davemloft.net>
To: James Bottomley <jejb at linux.ibm.com>
Cc: David Howells <dhowells at redhat.com>
Cc: James Morris <jmorris at namei.org>
Cc: "Serge E. Hallyn" <serge at hallyn.com>
Cc: Steffen Trumtrar <s.trumtrar at pengutronix.de>
Cc: Jan Luebbe <j.luebbe at pengutronix.de>
Cc: David Gstir <david at sigma-star.at>
Cc: Eric Biggers <ebiggers at kernel.org>
Cc: Richard Weinberger <richard at nod.at>
Cc: Franck LENORMAND <franck.lenormand at nxp.com>
Cc: Sumit Garg <sumit.garg at linaro.org>
Cc: Andreas Rammhold <andreas at rammhold.de>
Cc: Tim Harvey <tharvey at gateworks.com>
Cc: Matthias Schiffer <matthias.schiffer at ew.tq-group.com>
Cc: Pankaj Gupta <pankaj.gupta at nxp.com>
Cc: linux-integrity at vger.kernel.org
Cc: keyrings at vger.kernel.org
Cc: linux-crypto at vger.kernel.org
Cc: linux-kernel at vger.kernel.org
Cc: linux-security-module at vger.kernel.org
Ahmad Fatoum (5):
KEYS: trusted: allow use of TEE as backend without TCG_TPM support
KEYS: trusted: allow users to use kernel RNG for key material
KEYS: trusted: allow trust sources to use kernel RNG for key material
crypto: caam - add in-kernel interface for blob generator
KEYS: trusted: Introduce support for NXP CAAM-based trusted keys
.../admin-guide/kernel-parameters.txt | 11 +
.../security/keys/trusted-encrypted.rst | 60 ++++-
MAINTAINERS | 9 +
crypto/asymmetric_keys/Kconfig | 2 +-
drivers/crypto/caam/Kconfig | 3 +
drivers/crypto/caam/Makefile | 1 +
drivers/crypto/caam/blob_gen.c | 230 ++++++++++++++++++
include/keys/trusted-type.h | 2 +-
include/keys/trusted_caam.h | 11 +
include/soc/fsl/caam-blob.h | 56 +++++
security/keys/Kconfig | 18 +-
security/keys/trusted-keys/Kconfig | 38 +++
security/keys/trusted-keys/Makefile | 10 +-
security/keys/trusted-keys/trusted_caam.c | 74 ++++++
security/keys/trusted-keys/trusted_core.c | 45 +++-
15 files changed, 540 insertions(+), 30 deletions(-)
create mode 100644 drivers/crypto/caam/blob_gen.c
create mode 100644 include/keys/trusted_caam.h
create mode 100644 include/soc/fsl/caam-blob.h
create mode 100644 security/keys/trusted-keys/Kconfig
create mode 100644 security/keys/trusted-keys/trusted_caam.c
--
2.30.2
More information about the Linux-security-module-archive
mailing list