3535 Rooted to Hardware Unique Key (HUK) which is generally burnt in on-chip
3636 fuses and is accessible to TEE only.
3737
38+ (3) CAAM (Cryptographic Acceleration and Assurance Module: IP on NXP SoCs)
39+
40+ When High Assurance Boot (HAB) is enabled and the CAAM is in secure
41+ mode, trust is rooted to the OTPMK, a never-disclosed 256-bit key
42+ randomly generated and fused into each SoC at manufacturing time.
43+ Otherwise, a common fixed test key is used instead.
44+
3845 * Execution isolation
3946
4047 (1) TPM
4653 Customizable set of operations running in isolated execution
4754 environment verified via Secure/Trusted boot process.
4855
56+ (3) CAAM
57+
58+ Fixed set of operations running in isolated execution environment.
59+
4960 * Optional binding to platform integrity state
5061
5162 (1) TPM
6374 Relies on Secure/Trusted boot process for platform integrity. It can
6475 be extended with TEE based measured boot process.
6576
77+ (3) CAAM
78+
79+ Relies on the High Assurance Boot (HAB) mechanism of NXP SoCs
80+ for platform integrity.
81+
6682 * Interfaces and APIs
6783
6884 (1) TPM
@@ -74,10 +90,13 @@ safe.
7490 TEEs have well-documented, standardized client interface and APIs. For
7591 more details refer to ``Documentation/staging/tee.rst ``.
7692
93+ (3) CAAM
94+
95+ Interface is specific to silicon vendor.
7796
7897 * Threat model
7998
80- The strength and appropriateness of a particular TPM or TEE for a given
99+ The strength and appropriateness of a particular trust source for a given
81100 purpose must be assessed when using them to protect security-relevant data.
82101
83102
@@ -104,6 +123,12 @@ selected trust source:
104123 from platform specific hardware RNG or a software based Fortuna CSPRNG
105124 which can be seeded via multiple entropy sources.
106125
126+ * CAAM: Kernel RNG
127+
128+ The normal kernel random number generator is used. To seed it from the
129+ CAAM HWRNG, enable CRYPTO_DEV_FSL_CAAM_RNG_API and ensure the device
130+ is probed.
131+
107132Users may override this by specifying ``trusted.rng=kernel `` on the kernel
108133command-line to override the used RNG with the kernel's random number pool.
109134
@@ -193,6 +218,19 @@ Usage::
193218specific to TEE device implementation. The key length for new keys is always
194219in bytes. Trusted Keys can be 32 - 128 bytes (256 - 1024 bits).
195220
221+ Trusted Keys usage: CAAM
222+ ------------------------
223+
224+ Usage::
225+
226+ keyctl add trusted name "new keylen" ring
227+ keyctl add trusted name "load hex_blob" ring
228+ keyctl print keyid
229+
230+ "keyctl print" returns an ASCII hex copy of the sealed key, which is in a
231+ CAAM-specific format. The key length for new keys is always in bytes.
232+ Trusted Keys can be 32 - 128 bytes (256 - 1024 bits).
233+
196234Encrypted Keys usage
197235--------------------
198236
0 commit comments