Skip to content

Commit 1d72a02

Browse files
naynajainmaddy-kerneldev
authored andcommitted
docs: trusted-encryped: add PKWM as a new trust source
Update Documentation/security/keys/trusted-encrypted.rst and Documentation/ admin-guide/kernel-parameters.txt with PowerVM Key Wrapping Module (PKWM) as a new trust source Signed-off-by: Nayna Jain <nayna@linux.ibm.com> Signed-off-by: Srish Srinivasan <ssrish@linux.ibm.com> Tested-by: Nayna Jain <nayna@linux.ibm.com> Reviewed-by: Mimi Zohar <zohar@linux.ibm.com> Signed-off-by: Madhavan Srinivasan <maddy@linux.ibm.com> Link: https://patch.msgid.link/20260127145228.48320-7-ssrish@linux.ibm.com
1 parent c99fcb0 commit 1d72a02

2 files changed

Lines changed: 51 additions & 0 deletions

File tree

Documentation/admin-guide/kernel-parameters.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7755,6 +7755,7 @@ Kernel parameters
77557755
- "tee"
77567756
- "caam"
77577757
- "dcp"
7758+
- "pkwm"
77587759
If not specified then it defaults to iterating through
77597760
the trust source list starting with TPM and assigns the
77607761
first trust source as a backend which is initialized

Documentation/security/keys/trusted-encrypted.rst

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,14 @@ safe.
8181
and the UNIQUE key. Default is to use the UNIQUE key, but selecting
8282
the OTP key can be done via a module parameter (dcp_use_otp_key).
8383

84+
(5) PKWM (PowerVM Key Wrapping Module: IBM PowerVM + Platform KeyStore)
85+
86+
Rooted to a unique, per-LPAR key, which is derived from a system-wide,
87+
randomly generated LPAR root key. Both the per-LPAR keys and the LPAR
88+
root key are stored in hypervisor-owned secure memory at runtime,
89+
and the LPAR root key is additionally persisted in secure locations
90+
such as the processor SEEPROMs and encrypted NVRAM.
91+
8492
* Execution isolation
8593

8694
(1) TPM
@@ -102,6 +110,14 @@ safe.
102110
environment. Only basic blob key encryption is executed there.
103111
The actual key sealing/unsealing is done on main processor/kernel space.
104112

113+
(5) PKWM (PowerVM Key Wrapping Module: IBM PowerVM + Platform KeyStore)
114+
115+
Fixed set of cryptographic operations done on on-chip hardware
116+
cryptographic acceleration unit NX. Keys for wrapping and unwrapping
117+
are managed by PowerVM Platform KeyStore, which stores keys in an
118+
isolated in-memory copy in secure hypervisor memory, as well as in a
119+
persistent copy in hypervisor-encrypted NVRAM.
120+
105121
* Optional binding to platform integrity state
106122

107123
(1) TPM
@@ -129,6 +145,11 @@ safe.
129145
Relies on Secure/Trusted boot process (called HAB by vendor) for
130146
platform integrity.
131147

148+
(5) PKWM (PowerVM Key Wrapping Module: IBM PowerVM + Platform KeyStore)
149+
150+
Relies on secure and trusted boot process of IBM Power systems for
151+
platform integrity.
152+
132153
* Interfaces and APIs
133154

134155
(1) TPM
@@ -149,6 +170,11 @@ safe.
149170
Vendor-specific API that is implemented as part of the DCP crypto driver in
150171
``drivers/crypto/mxs-dcp.c``.
151172

173+
(5) PKWM (PowerVM Key Wrapping Module: IBM PowerVM + Platform KeyStore)
174+
175+
Platform Keystore has well documented interfaces in PAPR document.
176+
Refer to ``Documentation/arch/powerpc/papr_hcalls.rst``
177+
152178
* Threat model
153179

154180
The strength and appropriateness of a particular trust source for a given
@@ -191,6 +217,10 @@ selected trust source:
191217
a dedicated hardware RNG that is independent from DCP which can be enabled
192218
to back the kernel RNG.
193219

220+
* PKWM (PowerVM Key Wrapping Module: IBM PowerVM + Platform KeyStore)
221+
222+
The normal kernel random number generator is used to generate keys.
223+
194224
Users may override this by specifying ``trusted.rng=kernel`` on the kernel
195225
command-line to override the used RNG with the kernel's random number pool.
196226

@@ -321,6 +351,26 @@ Usage::
321351
specific to this DCP key-blob implementation. The key length for new keys is
322352
always in bytes. Trusted Keys can be 32 - 128 bytes (256 - 1024 bits).
323353

354+
Trusted Keys usage: PKWM
355+
------------------------
356+
357+
Usage::
358+
359+
keyctl add trusted name "new keylen [options]" ring
360+
keyctl add trusted name "load hex_blob" ring
361+
keyctl print keyid
362+
363+
options:
364+
wrap_flags= ascii hex value of security policy requirement
365+
0x00: no secure boot requirement (default)
366+
0x01: require secure boot to be in either audit or
367+
enforced mode
368+
0x02: require secure boot to be in enforced mode
369+
370+
"keyctl print" returns an ASCII hex copy of the sealed key, which is in format
371+
specific to PKWM key-blob implementation. The key length for new keys is
372+
always in bytes. Trusted Keys can be 32 - 128 bytes (256 - 1024 bits).
373+
324374
Encrypted Keys usage
325375
--------------------
326376

0 commit comments

Comments
 (0)