xref: /openbmc/linux/security/keys/Kconfig (revision cd3bc044)
1ec8f24b7SThomas Gleixner# SPDX-License-Identifier: GPL-2.0-only
2f0894940SDavid Howells#
3f0894940SDavid Howells# Key management configuration
4f0894940SDavid Howells#
5f0894940SDavid Howells
6f0894940SDavid Howellsconfig KEYS
7f0894940SDavid Howells	bool "Enable access key retention support"
8b2a4df20SDavid Howells	select ASSOCIATIVE_ARRAY
9f0894940SDavid Howells	help
10f0894940SDavid Howells	  This option provides support for retaining authentication tokens and
11f0894940SDavid Howells	  access keys in the kernel.
12f0894940SDavid Howells
13f0894940SDavid Howells	  It also includes provision of methods by which such keys might be
14f0894940SDavid Howells	  associated with a process so that network filesystems, encryption
15f0894940SDavid Howells	  support and the like can find them.
16f0894940SDavid Howells
17f0894940SDavid Howells	  Furthermore, a special type of key is available that acts as keyring:
18f0894940SDavid Howells	  a searchable sequence of keys. Each process is equipped with access
19f0894940SDavid Howells	  to five standard keyrings: UID-specific, GID-specific, session,
20f0894940SDavid Howells	  process and thread.
21f0894940SDavid Howells
22f0894940SDavid Howells	  If you are unsure as to whether this is required, answer N.
23f0894940SDavid Howells
247743c48eSDavid Howellsconfig KEYS_REQUEST_CACHE
257743c48eSDavid Howells	bool "Enable temporary caching of the last request_key() result"
267743c48eSDavid Howells	depends on KEYS
277743c48eSDavid Howells	help
287743c48eSDavid Howells	  This option causes the result of the last successful request_key()
297743c48eSDavid Howells	  call that didn't upcall to the kernel to be cached temporarily in the
307743c48eSDavid Howells	  task_struct.  The cache is cleared by exit and just prior to the
317743c48eSDavid Howells	  resumption of userspace.
327743c48eSDavid Howells
337743c48eSDavid Howells	  This allows the key used for multiple step processes where each step
347743c48eSDavid Howells	  wants to request a key that is likely the same as the one requested
357743c48eSDavid Howells	  by the last step to save on the searching.
367743c48eSDavid Howells
377743c48eSDavid Howells	  An example of such a process is a pathwalk through a network
387743c48eSDavid Howells	  filesystem in which each method needs to request an authentication
397743c48eSDavid Howells	  key.  Pathwalk will call multiple methods for each dentry traversed
407743c48eSDavid Howells	  (permission, d_revalidate, lookup, getxattr, getacl, ...).
417743c48eSDavid Howells
42f36f8c75SDavid Howellsconfig PERSISTENT_KEYRINGS
43f36f8c75SDavid Howells	bool "Enable register of persistent per-UID keyrings"
44f36f8c75SDavid Howells	depends on KEYS
45f36f8c75SDavid Howells	help
46f36f8c75SDavid Howells	  This option provides a register of persistent per-UID keyrings,
47f36f8c75SDavid Howells	  primarily aimed at Kerberos key storage.  The keyrings are persistent
48f36f8c75SDavid Howells	  in the sense that they stay around after all processes of that UID
49f36f8c75SDavid Howells	  have exited, not that they survive the machine being rebooted.
50f36f8c75SDavid Howells
51f36f8c75SDavid Howells	  A particular keyring may be accessed by either the user whose keyring
52f36f8c75SDavid Howells	  it is or by a process with administrative privileges.  The active
53f36f8c75SDavid Howells	  LSMs gets to rule on which admin-level processes get to access the
54f36f8c75SDavid Howells	  cache.
55f36f8c75SDavid Howells
56f36f8c75SDavid Howells	  Keyrings are created and added into the register upon demand and get
57f36f8c75SDavid Howells	  removed if they expire (a default timeout is set upon creation).
58f36f8c75SDavid Howells
59ab3c3587SDavid Howellsconfig BIG_KEYS
602eaf6b5dSJosh Boyer	bool "Large payload keys"
61ab3c3587SDavid Howells	depends on KEYS
62ab3c3587SDavid Howells	depends on TMPFS
63521fd61cSJason A. Donenfeld	depends on CRYPTO_LIB_CHACHA20POLY1305 = y
64ab3c3587SDavid Howells	help
65ab3c3587SDavid Howells	  This option provides support for holding large keys within the kernel
66ab3c3587SDavid Howells	  (for example Kerberos ticket caches).  The data may be stored out to
67ab3c3587SDavid Howells	  swapspace by tmpfs.
68ab3c3587SDavid Howells
69ab3c3587SDavid Howells	  If you are unsure as to whether this is required, answer N.
70ab3c3587SDavid Howells
71f0894940SDavid Howellsconfig TRUSTED_KEYS
72f0894940SDavid Howells	tristate "TRUSTED KEYS"
73f0894940SDavid Howells	depends on KEYS && TCG_TPM
74f0894940SDavid Howells	select CRYPTO
75f0894940SDavid Howells	select CRYPTO_HMAC
76f0894940SDavid Howells	select CRYPTO_SHA1
775ca4c20cSJarkko Sakkinen	select CRYPTO_HASH_INFO
78f2219745SJames Bottomley	select ASN1_ENCODER
79f2219745SJames Bottomley	select OID_REGISTRY
80f2219745SJames Bottomley	select ASN1
81f0894940SDavid Howells	help
82f0894940SDavid Howells	  This option provides support for creating, sealing, and unsealing
83f0894940SDavid Howells	  keys in the kernel. Trusted keys are random number symmetric keys,
84f0894940SDavid Howells	  generated and RSA-sealed by the TPM. The TPM only unseals the keys,
85f0894940SDavid Howells	  if the boot PCRs and other criteria match.  Userspace will only ever
86f0894940SDavid Howells	  see encrypted blobs.
87f0894940SDavid Howells
88f0894940SDavid Howells	  If you are unsure as to whether this is required, answer N.
89f0894940SDavid Howells
90f0894940SDavid Howellsconfig ENCRYPTED_KEYS
91f0894940SDavid Howells	tristate "ENCRYPTED KEYS"
92f0894940SDavid Howells	depends on KEYS
93f0894940SDavid Howells	select CRYPTO
94f0894940SDavid Howells	select CRYPTO_HMAC
95f0894940SDavid Howells	select CRYPTO_AES
96f0894940SDavid Howells	select CRYPTO_CBC
97f0894940SDavid Howells	select CRYPTO_SHA256
98f0894940SDavid Howells	select CRYPTO_RNG
99f0894940SDavid Howells	help
100f0894940SDavid Howells	  This option provides support for create/encrypting/decrypting keys
101*cd3bc044SYael Tzur	  in the kernel.  Encrypted keys are instantiated using kernel
102*cd3bc044SYael Tzur	  generated random numbers or provided decrypted data, and are
103*cd3bc044SYael Tzur	  encrypted/decrypted with a 'master' symmetric key. The 'master'
104*cd3bc044SYael Tzur	  key can be either a trusted-key or user-key type. Only encrypted
105*cd3bc044SYael Tzur	  blobs are ever output to Userspace.
106*cd3bc044SYael Tzur
107*cd3bc044SYael Tzur	  If you are unsure as to whether this is required, answer N.
108*cd3bc044SYael Tzur
109*cd3bc044SYael Tzurconfig USER_DECRYPTED_DATA
110*cd3bc044SYael Tzur	bool "Allow encrypted keys with user decrypted data"
111*cd3bc044SYael Tzur	depends on ENCRYPTED_KEYS
112*cd3bc044SYael Tzur	help
113*cd3bc044SYael Tzur	  This option provides support for instantiating encrypted keys using
114*cd3bc044SYael Tzur	  user-provided decrypted data.  The decrypted data must be hex-ascii
115*cd3bc044SYael Tzur	  encoded.
116f0894940SDavid Howells
117f0894940SDavid Howells	  If you are unsure as to whether this is required, answer N.
118ddbb4114SMat Martineau
119ddbb4114SMat Martineauconfig KEY_DH_OPERATIONS
120ddbb4114SMat Martineau       bool "Diffie-Hellman operations on retained keys"
121ddbb4114SMat Martineau       depends on KEYS
1224cd4ca7cSStephan Müller       select CRYPTO
123d3b04a43SStephan Müller       select CRYPTO_KDF800108_CTR
1247cbe0932SMat Martineau       select CRYPTO_DH
125ddbb4114SMat Martineau       help
126ddbb4114SMat Martineau	 This option provides support for calculating Diffie-Hellman
127ddbb4114SMat Martineau	 public keys and shared secrets using values stored as keys
128ddbb4114SMat Martineau	 in the kernel.
129ddbb4114SMat Martineau
130ddbb4114SMat Martineau	 If you are unsure as to whether this is required, answer N.
131f7e47677SDavid Howells
132f7e47677SDavid Howellsconfig KEY_NOTIFICATIONS
133f7e47677SDavid Howells	bool "Provide key/keyring change notifications"
134f7e47677SDavid Howells	depends on KEYS && WATCH_QUEUE
135f7e47677SDavid Howells	help
1368fe62e0cSGabriel Krisman Bertazi	  This option provides support for getting change notifications
1378fe62e0cSGabriel Krisman Bertazi	  on keys and keyrings on which the caller has View permission.
1388fe62e0cSGabriel Krisman Bertazi	  This makes use of pipes to handle the notification buffer and
1398fe62e0cSGabriel Krisman Bertazi	  provides KEYCTL_WATCH_KEY to enable/disable watches.
140