1b2441318SGreg Kroah-Hartman# SPDX-License-Identifier: GPL-2.0 2cfc411e7SDavid Howellsmenu "Certificates for signature checking" 3cfc411e7SDavid Howells 4cfc411e7SDavid Howellsconfig MODULE_SIG_KEY 5cfc411e7SDavid Howells string "File name or PKCS#11 URI of module signing key" 6cfc411e7SDavid Howells default "certs/signing_key.pem" 7781a5739SNayna Jain depends on MODULE_SIG || (IMA_APPRAISE_MODSIG && MODULES) 8cfc411e7SDavid Howells help 9cfc411e7SDavid Howells Provide the file name of a private key/certificate in PEM format, 10cfc411e7SDavid Howells or a PKCS#11 URI according to RFC7512. The file should contain, or 11cfc411e7SDavid Howells the URI should identify, both the certificate and its corresponding 12cfc411e7SDavid Howells private key. 13cfc411e7SDavid Howells 14cfc411e7SDavid Howells If this option is unchanged from its default "certs/signing_key.pem", 15cfc411e7SDavid Howells then the kernel will automatically generate the private key and 165fb94e9cSMauro Carvalho Chehab certificate as described in Documentation/admin-guide/module-signing.rst 17cfc411e7SDavid Howells 18a4aed36eSStefan Bergerchoice 19a4aed36eSStefan Berger prompt "Type of module signing key to be generated" 20be0d5fa7SMasahiro Yamada depends on MODULE_SIG || (IMA_APPRAISE_MODSIG && MODULES) 21a4aed36eSStefan Berger help 22a4aed36eSStefan Berger The type of module signing key type to generate. This option 23a4aed36eSStefan Berger does not apply if a #PKCS11 URI is used. 24a4aed36eSStefan Berger 25a4aed36eSStefan Bergerconfig MODULE_SIG_KEY_TYPE_RSA 26a4aed36eSStefan Berger bool "RSA" 27a4aed36eSStefan Berger help 28a4aed36eSStefan Berger Use an RSA key for module signing. 29a4aed36eSStefan Berger 30a4aed36eSStefan Bergerconfig MODULE_SIG_KEY_TYPE_ECDSA 31a4aed36eSStefan Berger bool "ECDSA" 32a4aed36eSStefan Berger select CRYPTO_ECDSA 33a4aed36eSStefan Berger help 34a4aed36eSStefan Berger Use an elliptic curve key (NIST P384) for module signing. Consider 35a4aed36eSStefan Berger using a strong hash like sha256 or sha384 for hashing modules. 36a4aed36eSStefan Berger 37a4aed36eSStefan Berger Note: Remove all ECDSA signing keys, e.g. certs/signing_key.pem, 38a4aed36eSStefan Berger when falling back to building Linux 5.14 and older kernels. 39a4aed36eSStefan Berger 40a4aed36eSStefan Bergerendchoice 41a4aed36eSStefan Berger 42cfc411e7SDavid Howellsconfig SYSTEM_TRUSTED_KEYRING 43cfc411e7SDavid Howells bool "Provide system-wide ring of trusted keys" 44cfc411e7SDavid Howells depends on KEYS 4599716b7cSDavid Howells depends on ASYMMETRIC_KEY_TYPE 46*2154aca2SMasahiro Yamada depends on X509_CERTIFICATE_PARSER = y 47cfc411e7SDavid Howells help 48cfc411e7SDavid Howells Provide a system keyring to which trusted keys can be added. Keys in 49cfc411e7SDavid Howells the keyring are considered to be trusted. Keys may be added at will 50cfc411e7SDavid Howells by the kernel from compiled-in data and from hardware key stores, but 51cfc411e7SDavid Howells userspace may only add extra keys if those keys can be verified by 52cfc411e7SDavid Howells keys already in the keyring. 53cfc411e7SDavid Howells 54cfc411e7SDavid Howells Keys in this keyring are used by module signature checking. 55cfc411e7SDavid Howells 56cfc411e7SDavid Howellsconfig SYSTEM_TRUSTED_KEYS 57cfc411e7SDavid Howells string "Additional X.509 keys for default system keyring" 58cfc411e7SDavid Howells depends on SYSTEM_TRUSTED_KEYRING 59cfc411e7SDavid Howells help 60cfc411e7SDavid Howells If set, this option should be the filename of a PEM-formatted file 61cfc411e7SDavid Howells containing trusted X.509 certificates to be included in the default 62cfc411e7SDavid Howells system keyring. Any certificate used for module signing is implicitly 63cfc411e7SDavid Howells also trusted. 64cfc411e7SDavid Howells 65cfc411e7SDavid Howells NOTE: If you previously provided keys for the system keyring in the 66cfc411e7SDavid Howells form of DER-encoded *.x509 files in the top-level build directory, 67cfc411e7SDavid Howells those are no longer used. You will need to set this option instead. 68cfc411e7SDavid Howells 69c4c36105SMehmet Kayaalpconfig SYSTEM_EXTRA_CERTIFICATE 70c4c36105SMehmet Kayaalp bool "Reserve area for inserting a certificate without recompiling" 71c4c36105SMehmet Kayaalp depends on SYSTEM_TRUSTED_KEYRING 72c4c36105SMehmet Kayaalp help 73c4c36105SMehmet Kayaalp If set, space for an extra certificate will be reserved in the kernel 74c4c36105SMehmet Kayaalp image. This allows introducing a trusted certificate to the default 75c4c36105SMehmet Kayaalp system keyring without recompiling the kernel. 76c4c36105SMehmet Kayaalp 77c4c36105SMehmet Kayaalpconfig SYSTEM_EXTRA_CERTIFICATE_SIZE 78c4c36105SMehmet Kayaalp int "Number of bytes to reserve for the extra certificate" 79c4c36105SMehmet Kayaalp depends on SYSTEM_EXTRA_CERTIFICATE 80c4c36105SMehmet Kayaalp default 4096 81c4c36105SMehmet Kayaalp help 82c4c36105SMehmet Kayaalp This is the number of bytes reserved in the kernel image for a 83c4c36105SMehmet Kayaalp certificate to be inserted. 84c4c36105SMehmet Kayaalp 85d3bfe841SDavid Howellsconfig SECONDARY_TRUSTED_KEYRING 86d3bfe841SDavid Howells bool "Provide a keyring to which extra trustable keys may be added" 87d3bfe841SDavid Howells depends on SYSTEM_TRUSTED_KEYRING 88d3bfe841SDavid Howells help 89d3bfe841SDavid Howells If set, provide a keyring to which extra keys may be added, provided 90d3bfe841SDavid Howells those keys are not blacklisted and are vouched for by a key built 91d3bfe841SDavid Howells into the kernel or already in the secondary trusted keyring. 92d3bfe841SDavid Howells 93734114f8SDavid Howellsconfig SYSTEM_BLACKLIST_KEYRING 94734114f8SDavid Howells bool "Provide system-wide ring of blacklisted keys" 95734114f8SDavid Howells depends on KEYS 96734114f8SDavid Howells help 97734114f8SDavid Howells Provide a system keyring to which blacklisted keys can be added. 98734114f8SDavid Howells Keys in the keyring are considered entirely untrusted. Keys in this 99734114f8SDavid Howells keyring are used by the module signature checking to reject loading 100734114f8SDavid Howells of modules signed with a blacklisted key. 101734114f8SDavid Howells 102734114f8SDavid Howellsconfig SYSTEM_BLACKLIST_HASH_LIST 103734114f8SDavid Howells string "Hashes to be preloaded into the system blacklist keyring" 104734114f8SDavid Howells depends on SYSTEM_BLACKLIST_KEYRING 105734114f8SDavid Howells help 106734114f8SDavid Howells If set, this option should be the filename of a list of hashes in the 107734114f8SDavid Howells form "<hash>", "<hash>", ... . This will be included into a C 108addf4663SMickaël Salaün wrapper to incorporate the list into the kernel. Each <hash> must be a 109addf4663SMickaël Salaün string starting with a prefix ("tbs" or "bin"), then a colon (":"), and 110addf4663SMickaël Salaün finally an even number of hexadecimal lowercase characters (up to 128). 111addf4663SMickaël Salaün Certificate hashes can be generated with 112addf4663SMickaël Salaün tools/certs/print-cert-tbs-hash.sh . 113734114f8SDavid Howells 11456c58126SEric Snowbergconfig SYSTEM_REVOCATION_LIST 11556c58126SEric Snowberg bool "Provide system-wide ring of revocation certificates" 11656c58126SEric Snowberg depends on SYSTEM_BLACKLIST_KEYRING 11756c58126SEric Snowberg depends on PKCS7_MESSAGE_PARSER=y 11856c58126SEric Snowberg help 11956c58126SEric Snowberg If set, this allows revocation certificates to be stored in the 12056c58126SEric Snowberg blacklist keyring and implements a hook whereby a PKCS#7 message can 12156c58126SEric Snowberg be checked to see if it matches such a certificate. 12256c58126SEric Snowberg 123d1f04410SEric Snowbergconfig SYSTEM_REVOCATION_KEYS 124d1f04410SEric Snowberg string "X.509 certificates to be preloaded into the system blacklist keyring" 125d1f04410SEric Snowberg depends on SYSTEM_REVOCATION_LIST 126d1f04410SEric Snowberg help 127d1f04410SEric Snowberg If set, this option should be the filename of a PEM-formatted file 128d1f04410SEric Snowberg containing X.509 certificates to be included in the default blacklist 129d1f04410SEric Snowberg keyring. 130d1f04410SEric Snowberg 1316364d106SMickaël Salaünconfig SYSTEM_BLACKLIST_AUTH_UPDATE 1326364d106SMickaël Salaün bool "Allow root to add signed blacklist keys" 1336364d106SMickaël Salaün depends on SYSTEM_BLACKLIST_KEYRING 1346364d106SMickaël Salaün depends on SYSTEM_DATA_VERIFICATION 1356364d106SMickaël Salaün help 1366364d106SMickaël Salaün If set, provide the ability to load new blacklist keys at run time if 1376364d106SMickaël Salaün they are signed and vouched by a certificate from the builtin trusted 1386364d106SMickaël Salaün keyring. The PKCS#7 signature of the description is set in the key 1396364d106SMickaël Salaün payload. Blacklist keys cannot be removed. 1406364d106SMickaël Salaün 141cfc411e7SDavid Howellsendmenu 142