One of the last merge requests that Linus Torvalds honored this past weekend prior to releasing Linux 3.7-rc1
as the modules pull, which added in module signing support for the Linux kernel.
The work coming out of Red Hat introduces a CONFIG_MODULE_SIG
option that enables module signing support. This kernel configuration option causes the build process to sign the kernel modules as they are built and for the resulting kernel to check the modules when they are loaded. The module signing allows for SHA1, SHA224, SHA256, SHA384, and SHA512 cryptographic hashes.
option was also added as part of this kernel modules work, which will require any kernel module that is loaded to be signed by a key compiled into the kernel. If the module isn't signed by a key in that kernel, the module will not be loaded.
The accepted patches come via Red Hat's David Howells. The module signing support in its earliest form date back to 2004, but it wasn't agreed upon until just recently about the Linux kernel module signing support and it being acceptable for mainline integration.
The most pressing need for the module signing support is for UEFI SecureBoot so that the Linux kernel can reject loading any unsigned modules, which could pose a threat if it's malicious code or unsigned binary blobs.
The "modules-next" pull that went in on Sunday prior to the closing of the Linux 3.7 kernel
that has this "MODSIGN" support can be seen from the web-based Git viewer
David Howells (30):
Make most arch asm/module.h files use asm-generic/module.h
KEYS: Add payload preparsing opportunity prior to key instantiate or update
MPILIB: Provide count_leading/trailing_zeros() based on arch functions
KEYS: Document asymmetric key type
KEYS: Implement asymmetric key type
KEYS: Asymmetric key pluggable data parsers
KEYS: Asymmetric public-key algorithm crypto key subtype
KEYS: Provide signature verification with an asymmetric key
MPILIB: Reinstate mpi_cmp[_ui]() and export for RSA signature verification
RSA: Implement signature verification algorithm [PKCS#1 / RFC3447]
RSA: Fix signature verification for shorter signatures
X.509: Implement simple static OID registry
X.509: Add utility functions to render OIDs as strings
X.509: Add simple ASN.1 grammar compiler
X.509: Add an ASN.1 decoder
MPILIB: Provide a function to read raw data into an MPI
X.509: Add a crypto key parser for binary (DER) X.509 certificates
MODSIGN: Add FIPS policy
MODSIGN: Provide gitignore and make clean rules for extra files
MODSIGN: Provide Kconfig options
MODSIGN: Automatically generate module signing keys if missing
MODSIGN: Provide module signing public keys to the kernel
MODSIGN: Implement module signature checking
MODSIGN: Provide a script for generating a key ID from an X.509 cert
MODSIGN: Sign modules during the build process
MODSIGN: Use the same digest for the autogen key sig as for the module sig
MODSIGN: Use utf8 strings in signer's name in autogenerated X.509 certs
MODSIGN: Fix 32-bit overflow in X.509 certificate validity date checking
X.509: Convert some printk calls to pr_devel
X.509: Fix indefinite length element skip error handling