123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141 |
- # SPDX-License-Identifier: GPL-2.0
- menu "Certificates for signature checking"
- config MODULE_SIG_KEY
- string "File name or PKCS#11 URI of module signing key"
- default "certs/signing_key.pem"
- depends on MODULE_SIG || (IMA_APPRAISE_MODSIG && MODULES)
- help
- Provide the file name of a private key/certificate in PEM format,
- or a PKCS#11 URI according to RFC7512. The file should contain, or
- the URI should identify, both the certificate and its corresponding
- private key.
- If this option is unchanged from its default "certs/signing_key.pem",
- then the kernel will automatically generate the private key and
- certificate as described in Documentation/admin-guide/module-signing.rst
- choice
- prompt "Type of module signing key to be generated"
- depends on MODULE_SIG || (IMA_APPRAISE_MODSIG && MODULES)
- help
- The type of module signing key type to generate. This option
- does not apply if a #PKCS11 URI is used.
- config MODULE_SIG_KEY_TYPE_RSA
- bool "RSA"
- help
- Use an RSA key for module signing.
- config MODULE_SIG_KEY_TYPE_ECDSA
- bool "ECDSA"
- select CRYPTO_ECDSA
- help
- Use an elliptic curve key (NIST P384) for module signing. Consider
- using a strong hash like sha256 or sha384 for hashing modules.
- Note: Remove all ECDSA signing keys, e.g. certs/signing_key.pem,
- when falling back to building Linux 5.14 and older kernels.
- endchoice
- config SYSTEM_TRUSTED_KEYRING
- bool "Provide system-wide ring of trusted keys"
- depends on KEYS
- depends on ASYMMETRIC_KEY_TYPE
- depends on X509_CERTIFICATE_PARSER = y
- help
- Provide a system keyring to which trusted keys can be added. Keys in
- the keyring are considered to be trusted. Keys may be added at will
- by the kernel from compiled-in data and from hardware key stores, but
- userspace may only add extra keys if those keys can be verified by
- keys already in the keyring.
- Keys in this keyring are used by module signature checking.
- config SYSTEM_TRUSTED_KEYS
- string "Additional X.509 keys for default system keyring"
- depends on SYSTEM_TRUSTED_KEYRING
- help
- If set, this option should be the filename of a PEM-formatted file
- containing trusted X.509 certificates to be included in the default
- system keyring. Any certificate used for module signing is implicitly
- also trusted.
- NOTE: If you previously provided keys for the system keyring in the
- form of DER-encoded *.x509 files in the top-level build directory,
- those are no longer used. You will need to set this option instead.
- config SYSTEM_EXTRA_CERTIFICATE
- bool "Reserve area for inserting a certificate without recompiling"
- depends on SYSTEM_TRUSTED_KEYRING
- help
- If set, space for an extra certificate will be reserved in the kernel
- image. This allows introducing a trusted certificate to the default
- system keyring without recompiling the kernel.
- config SYSTEM_EXTRA_CERTIFICATE_SIZE
- int "Number of bytes to reserve for the extra certificate"
- depends on SYSTEM_EXTRA_CERTIFICATE
- default 4096
- help
- This is the number of bytes reserved in the kernel image for a
- certificate to be inserted.
- config SECONDARY_TRUSTED_KEYRING
- bool "Provide a keyring to which extra trustable keys may be added"
- depends on SYSTEM_TRUSTED_KEYRING
- help
- If set, provide a keyring to which extra keys may be added, provided
- those keys are not blacklisted and are vouched for by a key built
- into the kernel or already in the secondary trusted keyring.
- config SYSTEM_BLACKLIST_KEYRING
- bool "Provide system-wide ring of blacklisted keys"
- depends on KEYS
- help
- Provide a system keyring to which blacklisted keys can be added.
- Keys in the keyring are considered entirely untrusted. Keys in this
- keyring are used by the module signature checking to reject loading
- of modules signed with a blacklisted key.
- config SYSTEM_BLACKLIST_HASH_LIST
- string "Hashes to be preloaded into the system blacklist keyring"
- depends on SYSTEM_BLACKLIST_KEYRING
- help
- If set, this option should be the filename of a list of hashes in the
- form "<hash>", "<hash>", ... . This will be included into a C
- wrapper to incorporate the list into the kernel. Each <hash> must be a
- string starting with a prefix ("tbs" or "bin"), then a colon (":"), and
- finally an even number of hexadecimal lowercase characters (up to 128).
- Certificate hashes can be generated with
- tools/certs/print-cert-tbs-hash.sh .
- config SYSTEM_REVOCATION_LIST
- bool "Provide system-wide ring of revocation certificates"
- depends on SYSTEM_BLACKLIST_KEYRING
- depends on PKCS7_MESSAGE_PARSER=y
- help
- If set, this allows revocation certificates to be stored in the
- blacklist keyring and implements a hook whereby a PKCS#7 message can
- be checked to see if it matches such a certificate.
- config SYSTEM_REVOCATION_KEYS
- string "X.509 certificates to be preloaded into the system blacklist keyring"
- depends on SYSTEM_REVOCATION_LIST
- help
- If set, this option should be the filename of a PEM-formatted file
- containing X.509 certificates to be included in the default blacklist
- keyring.
- config SYSTEM_BLACKLIST_AUTH_UPDATE
- bool "Allow root to add signed blacklist keys"
- depends on SYSTEM_BLACKLIST_KEYRING
- depends on SYSTEM_DATA_VERIFICATION
- help
- If set, provide the ability to load new blacklist keys at run time if
- they are signed and vouched by a certificate from the builtin trusted
- keyring. The PKCS#7 signature of the description is set in the key
- payload. Blacklist keys cannot be removed.
- endmenu
|