Received: by 2002:a05:6a10:6d10:0:0:0:0 with SMTP id gq16csp960760pxb; Fri, 15 Apr 2022 16:41:23 -0700 (PDT) X-Google-Smtp-Source: ABdhPJydS5CmSOFhDCI/T4AC4Pn9uZTufRtlx/PLXKgQ3kJFoIoFCZQcgcy8kpCzQcdHipTlf3CM X-Received: by 2002:a17:907:2d8d:b0:6e8:886e:fd1e with SMTP id gt13-20020a1709072d8d00b006e8886efd1emr997221ejc.139.1650066083404; Fri, 15 Apr 2022 16:41:23 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1650066083; cv=none; d=google.com; s=arc-20160816; b=gqaZwbeyRwKlMxOM6HAxfErQwIt9zTo2swdXdcOwztW3H0agjQXdb/j+eQ0oV8Sk5C xQ26K2K3LryrelssYXQVBtoOlf5rPNtTIkpefXoeS+lVGs6qFiqUauvnNy8xSxpPXknM /RG0aGeWZFSARfhYRbjfi077Rq+EF8azDkoKuYyWPoVE2FQgtmG5WZcg025MJcFXn2wj lJPofK+PkIupnYNjU+i5VGLcOP0Hzq1+M929eZMs3lCMEiqtaq8Lpik9B/jsici5+5X7 9BXFXeqSHskTAGC70QPd0Ezrdh+/rrPZ3pViUQSMBSDKUjDZ7JoZkPXTX4a/RyA1N9eG ssJA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :message-id:date:subject:cc:to:from; bh=2WWJQ4mELXitGY5To+fUJw3MJxUZoJ9l00qL3gY/YgU=; b=q+qQEahHny2kMWvKwwXH3UPotSDlEInDL/y+adBjKjNbZjLTU93hPN8kbfjvtGQbQW RDbL7BsIXtFyaWENQhqyiPCb1ZsKfBjZuk3HGWiPHYv0gkqoLA1L41IeBFX0ylamfk5e eBTofLJwvN0xDcvkme5VGrDw8oqDfDTximiy299i1IyDzllf0jR65akWxJxueVgPAuEd Q9INzbFAuOJkr+Nx+yRJzeoA8xZYLffgLkyv4l5CjAgHWXoLkA9n6F/QrrtbkqHpbV2C BXuDeomTsvd2O03AM/wIAr1tATKr3Lu1OZzTkgr7oKnRPMEIHu+TfQRGaq+jAEyScFFl bY0Q== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-crypto-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-crypto-owner@vger.kernel.org Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id t5-20020a1709063e4500b006e8803ef843si1745900eji.149.2022.04.15.16.40.48; Fri, 15 Apr 2022 16:41:23 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-crypto-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-crypto-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-crypto-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1352571AbiDOVAH (ORCPT + 99 others); Fri, 15 Apr 2022 17:00:07 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:57770 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1352606AbiDOVAF (ORCPT ); Fri, 15 Apr 2022 17:00:05 -0400 Received: from metis.ext.pengutronix.de (metis.ext.pengutronix.de [IPv6:2001:67c:670:201:290:27ff:fe1d:cc33]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id BAD4A61A04 for ; Fri, 15 Apr 2022 13:57:35 -0700 (PDT) Received: from drehscheibe.grey.stw.pengutronix.de ([2a0a:edc0:0:c01:1d::a2]) by metis.ext.pengutronix.de with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1nfT0B-0002iD-02; Fri, 15 Apr 2022 22:57:11 +0200 Received: from [2a0a:edc0:0:1101:1d::ac] (helo=dude04.red.stw.pengutronix.de) by drehscheibe.grey.stw.pengutronix.de with esmtp (Exim 4.94.2) (envelope-from ) id 1nfT09-003FIi-FN; Fri, 15 Apr 2022 22:57:08 +0200 Received: from afa by dude04.red.stw.pengutronix.de with local (Exim 4.94.2) (envelope-from ) id 1nfT07-000Bzx-Cd; Fri, 15 Apr 2022 22:57:07 +0200 From: Ahmad Fatoum To: Jarkko Sakkinen , =?UTF-8?q?Horia=20Geant=C4=83?= , Mimi Zohar , Pankaj Gupta , Herbert Xu , "David S. Miller" , James Bottomley Cc: kernel@pengutronix.de, David Howells , James Morris , "Serge E. Hallyn" , Steffen Trumtrar , Jan Luebbe , David Gstir , Eric Biggers , Richard Weinberger , Franck LENORMAND , Sumit Garg , Andreas Rammhold , Tim Harvey , Matthias Schiffer , linux-integrity@vger.kernel.org, keyrings@vger.kernel.org, linux-crypto@vger.kernel.org, linux-kernel@vger.kernel.org, linux-security-module@vger.kernel.org Subject: [PATCH v7 0/6] KEYS: trusted: Introduce support for NXP CAAM-based trusted keys Date: Fri, 15 Apr 2022 22:56:41 +0200 Message-Id: <20220415205647.46056-1-a.fatoum@pengutronix.de> X-Mailer: git-send-email 2.30.2 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-SA-Exim-Connect-IP: 2a0a:edc0:0:c01:1d::a2 X-SA-Exim-Mail-From: afa@pengutronix.de X-SA-Exim-Scanned: No (on metis.ext.pengutronix.de); SAEximRunCond expanded to false X-PTX-Original-Recipient: linux-crypto@vger.kernel.org X-Spam-Status: No, score=-4.2 required=5.0 tests=BAYES_00,RCVD_IN_DNSWL_MED, SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-crypto@vger.kernel.org Series applies on top of v5.18-rc2 v6 was here: https://lore.kernel.org/linux-integrity/20220316164335.1720255-1-a.fatoum@pengutronix.de/ Changelog is beneath each individual patch. 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.MX6Q/DL and an i.MX8M[6]. 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/ [6]: https://lore.kernel.org/linux-integrity/DU2PR04MB8630D83FE9BBC0D782C4FAF595089@DU2PR04MB8630.eurprd04.prod.outlook.com/ --- To: Jarkko Sakkinen To: "Horia Geantă" To: Mimi Zohar To: Pankaj Gupta To: Herbert Xu To: "David S. Miller" To: James Bottomley Cc: David Howells Cc: James Morris Cc: "Serge E. Hallyn" Cc: Steffen Trumtrar Cc: Jan Luebbe Cc: David Gstir Cc: Eric Biggers Cc: Richard Weinberger Cc: Franck LENORMAND Cc: Sumit Garg Cc: Andreas Rammhold Cc: Tim Harvey Cc: Matthias Schiffer Cc: linux-integrity@vger.kernel.org Cc: keyrings@vger.kernel.org Cc: linux-crypto@vger.kernel.org Cc: linux-kernel@vger.kernel.org Cc: linux-security-module@vger.kernel.org Ahmad Fatoum (6): KEYS: trusted: allow use of TEE as backend without TCG_TPM support KEYS: trusted: allow use of kernel RNG for key material crypto: caam - add in-kernel interface for blob generator KEYS: trusted: Introduce support for NXP CAAM-based trusted keys doc: trusted-encrypted: describe new CAAM trust source MAINTAINERS: add myself as CAAM trusted key maintainer .../admin-guide/kernel-parameters.txt | 11 ++ .../security/keys/trusted-encrypted.rst | 60 ++++++- MAINTAINERS | 9 + drivers/crypto/caam/Kconfig | 3 + drivers/crypto/caam/Makefile | 1 + drivers/crypto/caam/blob_gen.c | 164 ++++++++++++++++++ include/keys/trusted-type.h | 2 +- include/keys/trusted_caam.h | 11 ++ include/soc/fsl/caam-blob.h | 102 +++++++++++ security/keys/Kconfig | 18 +- security/keys/trusted-keys/Kconfig | 38 ++++ security/keys/trusted-keys/Makefile | 10 +- security/keys/trusted-keys/trusted_caam.c | 82 +++++++++ security/keys/trusted-keys/trusted_core.c | 45 ++++- 14 files changed, 527 insertions(+), 29 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