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