Received: by 2002:a05:6a10:9848:0:0:0:0 with SMTP id x8csp4315046pxf; Tue, 16 Mar 2021 10:23:10 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzPV/gFibisUDY21EMS8VCk+P+raI8XwphyQzfV/v49yYLvrE9l9QRTHjDXKRBCsyL/R+DD X-Received: by 2002:a17:906:5d06:: with SMTP id g6mr30905935ejt.216.1615915390270; Tue, 16 Mar 2021 10:23:10 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1615915390; cv=none; d=google.com; s=arc-20160816; b=gUVrQixjrsCdFn97qSq5gq75BP+Jz6SjLtRjzRx7AKLRyDiDyoV+wN9C3QGy+Shltn tTAxeRNVJH78e//uBmwq2SAjzFmWeBay9XybnypLETBjeodNnkSVkZVFfYnoQV9oAYQg nMffjCS/ePgeIoam6KJdiNRWDixtOtEhGTKIRlllgk0QycJVWsHNycMBvprL6yX/DdXz pRIESzO/mzogyrNzJIruOVMP22hBJrnZufLtF8z2c6bqu8iERoR81A4JYNB/yniOafjw IqrwVN/OIP6OhNpUl4QyKnSqyw0kd6pX7g8nYoFAW97Lm826QDLnql95dj8MhGlTJ52K Q9yg== 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=nqneTjJwq0IX+8s+YTNuLyvkvi9+IKImq72sjtfHWYY=; b=chSkkBucsXgyaAJ418hClSt3WvY+fsxHgMtc4gqcPv6fk5hurDPQhbl/+uqwKnfxOn RhZ1EM4dRZZCEGMjjv5CgBWrm4R3WX8a9KvldA/zeOnh5BSaCA/z14oLwT5iAU9v+8XZ hysyXCN9qzQOb1I2FGaeuWPfxnBFxD5p1TbAdHz1n7IC4cl5UiDdQKI8gNCAYHTm9iqZ MbN+5tWUu3zIToEhI61vAkFN8jHlhqZy5PXOdWScNV1VX2rhnjIra3eWe0gjxhaproWZ wIOPdAT2UkvuuM3SA1BQZ/8GSGC6mD3JRLH/bmSKhC9lcWXK6BKQS4rtGCzDA2TMVZB3 +lbg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-crypto-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-crypto-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id br23si13998559ejb.740.2021.03.16.10.22.46; Tue, 16 Mar 2021 10:23:10 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-crypto-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-crypto-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-crypto-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S238957AbhCPRCo (ORCPT + 99 others); Tue, 16 Mar 2021 13:02:44 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:56786 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S238066AbhCPRCO (ORCPT ); Tue, 16 Mar 2021 13:02:14 -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 E1B7DC0613D9 for ; Tue, 16 Mar 2021 10:02:09 -0700 (PDT) Received: from dude.hi.pengutronix.de ([2001:67c:670:100:1d::7]) by metis.ext.pengutronix.de with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1lMD4c-0000Nr-4C; Tue, 16 Mar 2021 18:01:38 +0100 Received: from afa by dude.hi.pengutronix.de with local (Exim 4.92) (envelope-from ) id 1lMD4Y-0000VZ-G5; Tue, 16 Mar 2021 18:01:34 +0100 From: Ahmad Fatoum To: Jarkko Sakkinen , =?UTF-8?q?Horia=20Geant=C4=83?= , Mimi Zohar , Aymen Sghaier , Herbert Xu , "David S. Miller" , James Bottomley Cc: kernel@pengutronix.de, David Howells , James Morris , "Serge E. Hallyn" , Steffen Trumtrar , Udit Agarwal , Jan Luebbe , David Gstir , Franck LENORMAND , Sumit Garg , 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 v1 0/3] KEYS: trusted: Introduce support for NXP CAAM-based trusted keys Date: Tue, 16 Mar 2021 18:01:15 +0100 Message-Id: X-Mailer: git-send-email 2.29.2 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-SA-Exim-Connect-IP: 2001:67c:670:100:1d::7 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 Precedence: bulk List-ID: X-Mailing-List: linux-crypto@vger.kernel.org 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 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. The key material stays within the kernel only, but can optionally be user-set instead of coming from RNG. 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 To: "Horia Geantă" To: Mimi Zohar To: Aymen Sghaier To: Herbert Xu To: "David S. Miller" To: James Bottomley Cc: David Howells Cc: James Morris Cc: "Serge E. Hallyn" Cc: Steffen Trumtrar Cc: Udit Agarwal Cc: Jan Luebbe Cc: David Gstir Cc: Franck LENORMAND Cc: Sumit Garg 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 (3): crypto: caam - add in-kernel interface for blob generator KEYS: trusted: implement fallback to kernel RNG KEYS: trusted: Introduce support for NXP CAAM-based trusted keys Documentation/admin-guide/kernel-parameters.txt | 1 +- drivers/crypto/caam/Kconfig | 4 +- 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 | 54 ++++- security/keys/trusted-keys/Makefile | 1 +- security/keys/trusted-keys/trusted_caam.c | 74 +++++- security/keys/trusted-keys/trusted_core.c | 17 +- 10 files changed, 392 insertions(+), 3 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/trusted_caam.c base-commit: 8a3fa8ade8a35d8f7c178f5680f07f223da41b87 -- git-series 0.9.1