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