€•„ÉŒsphinx.addnodes”Œdocument”“”)�”}”(Œ rawsource”Œ”Œchildren”]”(Œ translations”Œ LanguagesNode”“”)�”}”(hhh]”(hŒ pending_xref”“”)�”}”(hhh]”Œdocutils.nodes”ŒText”“”ŒChinese (Simplified)”…”�”}”Œparent”hsbaŒ attributes”}”(Œids”]”Œclasses”]”Œnames”]”Œdupnames”]”Œbackrefs”]”Œ refdomain”Œstd”Œreftype”Œdoc”Œ reftarget”Œ./translations/zh_CN/admin-guide/module-signing”Œmodname”NŒ classname”NŒ refexplicit”ˆuŒtagname”hhh ubh)�”}”(hhh]”hŒChinese (Traditional)”…”�”}”hh2sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ./translations/zh_TW/admin-guide/module-signing”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒItalian”…”�”}”hhFsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ./translations/it_IT/admin-guide/module-signing”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒJapanese”…”�”}”hhZsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ./translations/ja_JP/admin-guide/module-signing”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒKorean”…”�”}”hhnsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ./translations/ko_KR/admin-guide/module-signing”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒPortuguese (Brazilian)”…”�”}”hh‚sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ./translations/pt_BR/admin-guide/module-signing”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒSpanish”…”�”}”hh–sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ./translations/sp_SP/admin-guide/module-signing”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubeh}”(h]”h ]”h"]”h$]”h&]”Œcurrent_language”ŒEnglish”uh1h hhŒ _document”hŒsource”NŒline”NubhŒsection”“”)�”}”(hhh]”(hŒtitle”“”)�”}”(hŒKernel module signing facility”h]”hŒKernel module signing facility”…”�”}”(hh¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhh·h²hh³ŒH/var/lib/git/docbuild/linux/Documentation/admin-guide/module-signing.rst”h´KubhŒcomment”“”)�”}”(hŒCONTENTS”h]”hŒCONTENTS”…”�”}”hhÍsbah}”(h]”h ]”h"]”h$]”h&]”Œ xml:space”Œpreserve”uh1hËhh·h²hh³hÊh´KubhÌ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”hÛhÜuh1hËhh·h²hh³hÊh´KubhÌ)�”}”(hŒ - Overview.”h]”hŒ - Overview.”…”�”}”hhæsbah}”(h]”h ]”h"]”h$]”h&]”hÛhÜuh1hËhh·h²hh³hÊh´KubhÌ)�”}”(hŒ- Configuring module signing.”h]”hŒ- Configuring module signing.”…”�”}”hhôsbah}”(h]”h ]”h"]”h$]”h&]”hÛhÜuh1hËhh·h²hh³hÊh´KubhÌ)�”}”(hŒ- Generating signing keys.”h]”hŒ- Generating signing keys.”…”�”}”hjsbah}”(h]”h ]”h"]”h$]”h&]”hÛhÜuh1hËhh·h²hh³hÊh´KubhÌ)�”}”(hŒ- Public keys in the kernel.”h]”hŒ- Public keys in the kernel.”…”�”}”hjsbah}”(h]”h ]”h"]”h$]”h&]”hÛhÜuh1hËhh·h²hh³hÊh´K ubhÌ)�”}”(hŒ- Manually signing modules.”h]”hŒ- Manually signing modules.”…”�”}”hjsbah}”(h]”h ]”h"]”h$]”h&]”hÛhÜuh1hËhh·h²hh³hÊh´K ubhÌ)�”}”(hŒ- Signed modules and stripping.”h]”hŒ- Signed modules and stripping.”…”�”}”hj,sbah}”(h]”h ]”h"]”h$]”h&]”hÛhÜuh1hËhh·h²hh³hÊh´K ubhÌ)�”}”(hŒ- Loading signed modules.”h]”hŒ- Loading signed modules.”…”�”}”hj:sbah}”(h]”h ]”h"]”h$]”h&]”hÛhÜuh1hËhh·h²hh³hÊh´K ubhÌ)�”}”(hŒ,- Non-valid signatures and unsigned modules.”h]”hŒ,- Non-valid signatures and unsigned modules.”…”�”}”hjHsbah}”(h]”h ]”h"]”h$]”h&]”hÛhÜuh1hËhh·h²hh³hÊh´K ubhÌ)�”}”(hŒ+- Administering/protecting the private key.”h]”hŒ+- Administering/protecting the private key.”…”�”}”hjVsbah}”(h]”h ]”h"]”h$]”h&]”hÛhÜuh1hËhh·h²hh³hÊh´Kubh¶)�”}”(hhh]”(h»)�”}”(hŒOverview”h]”hŒOverview”…”�”}”(hjgh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjdh²hh³hÊh´KubhŒ paragraph”“”)�”}”(hXÞThe kernel module signing facility cryptographically signs modules during installation and then checks the signature upon loading the module. This allows increased kernel security by disallowing the loading of unsigned modules or modules signed with an invalid key. Module signing increases security by making it harder to load a malicious module into the kernel. The module signature checking is done by the kernel so that it is not necessary to have trusted userspace bits.”h]”hXÞThe kernel module signing facility cryptographically signs modules during installation and then checks the signature upon loading the module. This allows increased kernel security by disallowing the loading of unsigned modules or modules signed with an invalid key. Module signing increases security by making it harder to load a malicious module into the kernel. The module signature checking is done by the kernel so that it is not necessary to have trusted userspace bits.”…”�”}”(hjwh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1juh³hÊh´Khjdh²hubjv)�”}”(hXcThis facility uses X.509 ITU-T standard certificates to encode the public keys involved. The signatures are not themselves encoded in any industrial standard type. The built-in facility currently only supports the RSA, NIST P-384 ECDSA and NIST FIPS-204 ML-DSA public key signing standards (though it is pluggable and permits others to be used). For RSA and ECDSA, the possible hash algorithms that can be used are SHA-2 and SHA-3 of sizes 256, 384, and 512 (the algorithm is selected by data in the signature); ML-DSA does its own hashing, but is allowed to be used with a SHA512 hash for signed attributes.”h]”hXcThis facility uses X.509 ITU-T standard certificates to encode the public keys involved. The signatures are not themselves encoded in any industrial standard type. The built-in facility currently only supports the RSA, NIST P-384 ECDSA and NIST FIPS-204 ML-DSA public key signing standards (though it is pluggable and permits others to be used). For RSA and ECDSA, the possible hash algorithms that can be used are SHA-2 and SHA-3 of sizes 256, 384, and 512 (the algorithm is selected by data in the signature); ML-DSA does its own hashing, but is allowed to be used with a SHA512 hash for signed attributes.”…”�”}”(hj…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1juh³hÊh´Khjdh²hubeh}”(h]”Œoverview”ah ]”h"]”Œoverview”ah$]”h&]”uh1hµhh·h²hh³hÊh´Kubh¶)�”}”(hhh]”(h»)�”}”(hŒConfiguring module signing”h]”hŒConfiguring module signing”…”�”}”(hjžh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj›h²hh³hÊh´K)ubjv)�”}”(hŒ›The module signing facility is enabled by going to the :menuselection:`Enable Loadable Module Support` section of the kernel configuration and turning on::”h]”(hŒ7The module signing facility is enabled by going to the ”…”�”}”(hj¬h²hh³Nh´NubhŒinline”“”)�”}”(hŒEnable Loadable Module Support”h]”hŒEnable Loadable Module Support”…”�”}”(hj¶h²hh³Nh´Nubah}”(h]”h ]”Œ menuselection”ah"]”h$]”h&]”Œrawtext”Œ/:menuselection:`Enable Loadable Module Support`”uh1j´hj¬ubhŒ4 section of the kernel configuration and turning on:”…”�”}”(hj¬h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³hÊh´K+hj›h²hubhŒ literal_block”“”)�”}”(hŒ7CONFIG_MODULE_SIG "Module signature verification"”h]”hŒ7CONFIG_MODULE_SIG "Module signature verification"”…”�”}”hjÓsbah}”(h]”h ]”h"]”h$]”h&]”hÛhÜuh1jÑh³hÊh´K/hj›h²hubjv)�”}”(hŒ'This has a number of options available:”h]”hŒ'This has a number of options available:”…”�”}”(hjáh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1juh³hÊh´K1hj›h²hubhŒ block_quote”“”)�”}”(hX (1) :menuselection:`Require modules to be validly signed` (``CONFIG_MODULE_SIG_FORCE``) This specifies how the kernel should deal with a module that has a signature for which the key is not known or a module that is unsigned. If this is off (ie. "permissive"), then modules for which the key is not available and modules that are unsigned are permitted, but the kernel will be marked as being tainted, and the concerned modules will be marked as tainted, shown with the character 'E'. If this is on (ie. "restrictive"), only modules that have a valid signature that can be verified by a public key in the kernel's possession will be loaded. All other modules will generate an error. Irrespective of the setting here, if the module has a signature block that cannot be parsed, it will be rejected out of hand. (2) :menuselection:`Automatically sign all modules` (``CONFIG_MODULE_SIG_ALL``) If this is on then modules will be automatically signed during the modules_install phase of a build. If this is off, then the modules must be signed manually using:: scripts/sign-file (3) :menuselection:`Which hash algorithm should modules be signed with?` This presents a choice of which hash algorithm the installation phase will sign the modules with: =============================== ========================================== ``CONFIG_MODULE_SIG_SHA256`` :menuselection:`Sign modules with SHA-256` ``CONFIG_MODULE_SIG_SHA384`` :menuselection:`Sign modules with SHA-384` ``CONFIG_MODULE_SIG_SHA512`` :menuselection:`Sign modules with SHA-512` ``CONFIG_MODULE_SIG_SHA3_256`` :menuselection:`Sign modules with SHA3-256` ``CONFIG_MODULE_SIG_SHA3_384`` :menuselection:`Sign modules with SHA3-384` ``CONFIG_MODULE_SIG_SHA3_512`` :menuselection:`Sign modules with SHA3-512` =============================== ========================================== The algorithm selected here will also be built into the kernel (rather than being a module) so that modules signed with that algorithm can have their signatures checked without causing a dependency loop. (4) :menuselection:`File name or PKCS#11 URI of module signing key` (``CONFIG_MODULE_SIG_KEY``) Setting this option to something other than its default of ``certs/signing_key.pem`` will disable the autogeneration of signing keys and allow the kernel modules to be signed with a key of your choosing. The string provided should identify a file containing both a private key and its corresponding X.509 certificate in PEM form, or — on systems where the OpenSSL ENGINE_pkcs11 is functional — a PKCS#11 URI as defined by RFC7512. In the latter case, the PKCS#11 URI should reference both a certificate and a private key. If the PEM file containing the private key is encrypted, or if the PKCS#11 token requires a PIN, this can be provided at build time by means of the ``KBUILD_SIGN_PIN`` variable. (5) :menuselection:`Additional X.509 keys for default system keyring` (``CONFIG_SYSTEM_TRUSTED_KEYS``) This option can be set to the filename of a PEM-encoded file containing additional certificates which will be included in the system keyring by default. ”h]”hŒenumerated_list”“”)�”}”(hhh]”(hŒ list_item”“”)�”}”(hX+:menuselection:`Require modules to be validly signed` (``CONFIG_MODULE_SIG_FORCE``) This specifies how the kernel should deal with a module that has a signature for which the key is not known or a module that is unsigned. If this is off (ie. "permissive"), then modules for which the key is not available and modules that are unsigned are permitted, but the kernel will be marked as being tainted, and the concerned modules will be marked as tainted, shown with the character 'E'. If this is on (ie. "restrictive"), only modules that have a valid signature that can be verified by a public key in the kernel's possession will be loaded. All other modules will generate an error. Irrespective of the setting here, if the module has a signature block that cannot be parsed, it will be rejected out of hand. ”h]”(jv)�”}”(hŒS:menuselection:`Require modules to be validly signed` (``CONFIG_MODULE_SIG_FORCE``)”h]”(jµ)�”}”(hŒ$Require modules to be validly signed”h]”hŒ$Require modules to be validly signed”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”Œ menuselection”ah"]”h$]”h&]”Œrawtext”Œ5:menuselection:`Require modules to be validly signed`”uh1j´hjubhŒ (”…”�”}”(hjh²hh³Nh´NubhŒliteral”“”)�”}”(hŒ``CONFIG_MODULE_SIG_FORCE``”h]”hŒCONFIG_MODULE_SIG_FORCE”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjubhŒ)”…”�”}”(hjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³hÊh´K3hjüubjv)�”}”(hŒ‰This specifies how the kernel should deal with a module that has a signature for which the key is not known or a module that is unsigned.”h]”hŒ‰This specifies how the kernel should deal with a module that has a signature for which the key is not known or a module that is unsigned.”…”�”}”(hj3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1juh³hÊh´K6hjüubjv)�”}”(hXIf this is off (ie. "permissive"), then modules for which the key is not available and modules that are unsigned are permitted, but the kernel will be marked as being tainted, and the concerned modules will be marked as tainted, shown with the character 'E'.”h]”hX If this is off (ie. “permissiveâ€�), then modules for which the key is not available and modules that are unsigned are permitted, but the kernel will be marked as being tainted, and the concerned modules will be marked as tainted, shown with the character ‘E’.”…”�”}”(hjAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1juh³hÊh´K9hjüubjv)�”}”(hŒÆIf this is on (ie. "restrictive"), only modules that have a valid signature that can be verified by a public key in the kernel's possession will be loaded. All other modules will generate an error.”h]”hŒÌIf this is on (ie. “restrictiveâ€�), only modules that have a valid signature that can be verified by a public key in the kernel’s possession will be loaded. All other modules will generate an error.”…”�”}”(hjOh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1juh³hÊh´K>hjüubjv)�”}”(hŒ}Irrespective of the setting here, if the module has a signature block that cannot be parsed, it will be rejected out of hand.”h]”hŒ}Irrespective of the setting here, if the module has a signature block that cannot be parsed, it will be rejected out of hand.”…”�”}”(hj]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1juh³hÊh´KBhjüubeh}”(h]”h ]”h"]”h$]”h&]”uh1júhj÷ubjû)�”}”(hX :menuselection:`Automatically sign all modules` (``CONFIG_MODULE_SIG_ALL``) If this is on then modules will be automatically signed during the modules_install phase of a build. If this is off, then the modules must be signed manually using:: scripts/sign-file ”h]”(jv)�”}”(hŒK:menuselection:`Automatically sign all modules` (``CONFIG_MODULE_SIG_ALL``)”h]”(jµ)�”}”(hŒAutomatically sign all modules”h]”hŒAutomatically sign all modules”…”�”}”(hjyh²hh³Nh´Nubah}”(h]”h ]”Œ menuselection”ah"]”h$]”h&]”Œrawtext”Œ/:menuselection:`Automatically sign all modules`”uh1j´hjuubhŒ (”…”�”}”(hjuh²hh³Nh´Nubj)�”}”(hŒ``CONFIG_MODULE_SIG_ALL``”h]”hŒCONFIG_MODULE_SIG_ALL”…”�”}”(hjŽh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjuubhŒ)”…”�”}”(hjuh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³hÊh´KFhjqubjv)�”}”(hŒ¦If this is on then modules will be automatically signed during the modules_install phase of a build. If this is off, then the modules must be signed manually using::”h]”hŒ¥If this is on then modules will be automatically signed during the modules_install phase of a build. If this is off, then the modules must be signed manually using:”…”�”}”(hj¦h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1juh³hÊh´KIhjqubjÒ)�”}”(hŒscripts/sign-file”h]”hŒscripts/sign-file”…”�”}”hj´sbah}”(h]”h ]”h"]”h$]”h&]”hÛhÜuh1jÑh³hÊh´KMhjqubeh}”(h]”h ]”h"]”h$]”h&]”uh1júhj÷ubjû)�”}”(hXê:menuselection:`Which hash algorithm should modules be signed with?` This presents a choice of which hash algorithm the installation phase will sign the modules with: =============================== ========================================== ``CONFIG_MODULE_SIG_SHA256`` :menuselection:`Sign modules with SHA-256` ``CONFIG_MODULE_SIG_SHA384`` :menuselection:`Sign modules with SHA-384` ``CONFIG_MODULE_SIG_SHA512`` :menuselection:`Sign modules with SHA-512` ``CONFIG_MODULE_SIG_SHA3_256`` :menuselection:`Sign modules with SHA3-256` ``CONFIG_MODULE_SIG_SHA3_384`` :menuselection:`Sign modules with SHA3-384` ``CONFIG_MODULE_SIG_SHA3_512`` :menuselection:`Sign modules with SHA3-512` =============================== ========================================== The algorithm selected here will also be built into the kernel (rather than being a module) so that modules signed with that algorithm can have their signatures checked without causing a dependency loop. ”h]”(jv)�”}”(hŒD:menuselection:`Which hash algorithm should modules be signed with?`”h]”jµ)�”}”(hŒ3Which hash algorithm should modules be signed with?”h]”hŒ3Which hash algorithm should modules be signed with?”…”�”}”(hjÐh²hh³Nh´Nubah}”(h]”h ]”Œ menuselection”ah"]”h$]”h&]”Œrawtext”jÎuh1j´hjÌubah}”(h]”h ]”h"]”h$]”h&]”uh1juh³hÊh´KPhjÈubjv)�”}”(hŒaThis presents a choice of which hash algorithm the installation phase will sign the modules with:”h]”hŒaThis presents a choice of which hash algorithm the installation phase will sign the modules with:”…”�”}”(hjæh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1juh³hÊh´KRhjÈubjð)�”}”(hX[=============================== ========================================== ``CONFIG_MODULE_SIG_SHA256`` :menuselection:`Sign modules with SHA-256` ``CONFIG_MODULE_SIG_SHA384`` :menuselection:`Sign modules with SHA-384` ``CONFIG_MODULE_SIG_SHA512`` :menuselection:`Sign modules with SHA-512` ``CONFIG_MODULE_SIG_SHA3_256`` :menuselection:`Sign modules with SHA3-256` ``CONFIG_MODULE_SIG_SHA3_384`` :menuselection:`Sign modules with SHA3-384` ``CONFIG_MODULE_SIG_SHA3_512`` :menuselection:`Sign modules with SHA3-512` =============================== ========================================== ”h]”hŒtable”“”)�”}”(hhh]”hŒtgroup”“”)�”}”(hhh]”(hŒcolspec”“”)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”Kuh1jhjÿubj)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”K+uh1jhjÿubhŒtbody”“”)�”}”(hhh]”(hŒrow”“”)�”}”(hhh]”(hŒentry”“”)�”}”(hhh]”jv)�”}”(hŒ``CONFIG_MODULE_SIG_SHA256``”h]”j)�”}”(hj)h]”hŒCONFIG_MODULE_SIG_SHA256”…”�”}”(hj+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj'ubah}”(h]”h ]”h"]”h$]”h&]”uh1juh³hÊh´KVhj$ubah}”(h]”h ]”h"]”h$]”h&]”uh1j"hjubj#)�”}”(hhh]”jv)�”}”(hŒ*:menuselection:`Sign modules with SHA-256`”h]”jµ)�”}”(hŒSign modules with SHA-256”h]”hŒSign modules with SHA-256”…”�”}”(hjKh²hh³Nh´Nubah}”(h]”h ]”Œ menuselection”ah"]”h$]”h&]”Œrawtext”jIuh1j´hjGubah}”(h]”h ]”h"]”h$]”h&]”uh1juh³hÊh´KVhjDubah}”(h]”h ]”h"]”h$]”h&]”uh1j"hjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjubj)�”}”(hhh]”(j#)�”}”(hhh]”jv)�”}”(hŒ``CONFIG_MODULE_SIG_SHA384``”h]”j)�”}”(hjuh]”hŒCONFIG_MODULE_SIG_SHA384”…”�”}”(hjwh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjsubah}”(h]”h ]”h"]”h$]”h&]”uh1juh³hÊh´KWhjpubah}”(h]”h ]”h"]”h$]”h&]”uh1j"hjmubj#)�”}”(hhh]”jv)�”}”(hŒ*:menuselection:`Sign modules with SHA-384`”h]”jµ)�”}”(hŒSign modules with SHA-384”h]”hŒSign modules with SHA-384”…”�”}”(hj—h²hh³Nh´Nubah}”(h]”h ]”Œ menuselection”ah"]”h$]”h&]”Œrawtext”j•uh1j´hj“ubah}”(h]”h ]”h"]”h$]”h&]”uh1juh³hÊh´KWhj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j"hjmubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjubj)�”}”(hhh]”(j#)�”}”(hhh]”jv)�”}”(hŒ``CONFIG_MODULE_SIG_SHA512``”h]”j)�”}”(hjÁh]”hŒCONFIG_MODULE_SIG_SHA512”…”�”}”(hjÃh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¿ubah}”(h]”h ]”h"]”h$]”h&]”uh1juh³hÊh´KXhj¼ubah}”(h]”h ]”h"]”h$]”h&]”uh1j"hj¹ubj#)�”}”(hhh]”jv)�”}”(hŒ*:menuselection:`Sign modules with SHA-512`”h]”jµ)�”}”(hŒSign modules with SHA-512”h]”hŒSign modules with SHA-512”…”�”}”(hjãh²hh³Nh´Nubah}”(h]”h ]”Œ menuselection”ah"]”h$]”h&]”Œrawtext”jáuh1j´hjßubah}”(h]”h ]”h"]”h$]”h&]”uh1juh³hÊh´KXhjÜubah}”(h]”h ]”h"]”h$]”h&]”uh1j"hj¹ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjubj)�”}”(hhh]”(j#)�”}”(hhh]”jv)�”}”(hŒ``CONFIG_MODULE_SIG_SHA3_256``”h]”j)�”}”(hj h]”hŒCONFIG_MODULE_SIG_SHA3_256”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1juh³hÊh´KYhjubah}”(h]”h ]”h"]”h$]”h&]”uh1j"hjubj#)�”}”(hhh]”jv)�”}”(hŒ+:menuselection:`Sign modules with SHA3-256`”h]”jµ)�”}”(hŒSign modules with SHA3-256”h]”hŒSign modules with SHA3-256”…”�”}”(hj/h²hh³Nh´Nubah}”(h]”h ]”Œ menuselection”ah"]”h$]”h&]”Œrawtext”j-uh1j´hj+ubah}”(h]”h ]”h"]”h$]”h&]”uh1juh³hÊh´KYhj(ubah}”(h]”h ]”h"]”h$]”h&]”uh1j"hjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjubj)�”}”(hhh]”(j#)�”}”(hhh]”jv)�”}”(hŒ``CONFIG_MODULE_SIG_SHA3_384``”h]”j)�”}”(hjYh]”hŒCONFIG_MODULE_SIG_SHA3_384”…”�”}”(hj[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjWubah}”(h]”h ]”h"]”h$]”h&]”uh1juh³hÊh´KZhjTubah}”(h]”h ]”h"]”h$]”h&]”uh1j"hjQubj#)�”}”(hhh]”jv)�”}”(hŒ+:menuselection:`Sign modules with SHA3-384`”h]”jµ)�”}”(hŒSign modules with SHA3-384”h]”hŒSign modules with SHA3-384”…”�”}”(hj{h²hh³Nh´Nubah}”(h]”h ]”Œ menuselection”ah"]”h$]”h&]”Œrawtext”jyuh1j´hjwubah}”(h]”h ]”h"]”h$]”h&]”uh1juh³hÊh´KZhjtubah}”(h]”h ]”h"]”h$]”h&]”uh1j"hjQubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjubj)�”}”(hhh]”(j#)�”}”(hhh]”jv)�”}”(hŒ``CONFIG_MODULE_SIG_SHA3_512``”h]”j)�”}”(hj¥h]”hŒCONFIG_MODULE_SIG_SHA3_512”…”�”}”(hj§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj£ubah}”(h]”h ]”h"]”h$]”h&]”uh1juh³hÊh´K[hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1j"hj�ubj#)�”}”(hhh]”jv)�”}”(hŒ+:menuselection:`Sign modules with SHA3-512`”h]”jµ)�”}”(hŒSign modules with SHA3-512”h]”hŒSign modules with SHA3-512”…”�”}”(hjÇh²hh³Nh´Nubah}”(h]”h ]”Œ menuselection”ah"]”h$]”h&]”Œrawtext”jÅuh1j´hjÃubah}”(h]”h ]”h"]”h$]”h&]”uh1juh³hÊh´K[hjÀubah}”(h]”h ]”h"]”h$]”h&]”uh1j"hj�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjÿubeh}”(h]”h ]”h"]”h$]”h&]”Œcols”Kuh1jýhjúubah}”(h]”h ]”h"]”h$]”h&]”uh1jøhjôubah}”(h]”h ]”h"]”h$]”h&]”uh1jïh³hÊh´KUhjÈubjv)�”}”(hŒËThe algorithm selected here will also be built into the kernel (rather than being a module) so that modules signed with that algorithm can have their signatures checked without causing a dependency loop.”h]”hŒËThe algorithm selected here will also be built into the kernel (rather than being a module) so that modules signed with that algorithm can have their signatures checked without causing a dependency loop.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1juh³hÊh´K^hjÈubeh}”(h]”h ]”h"]”h$]”h&]”uh1júhj÷ubjû)�”}”(hX:menuselection:`File name or PKCS#11 URI of module signing key` (``CONFIG_MODULE_SIG_KEY``) Setting this option to something other than its default of ``certs/signing_key.pem`` will disable the autogeneration of signing keys and allow the kernel modules to be signed with a key of your choosing. The string provided should identify a file containing both a private key and its corresponding X.509 certificate in PEM form, or — on systems where the OpenSSL ENGINE_pkcs11 is functional — a PKCS#11 URI as defined by RFC7512. In the latter case, the PKCS#11 URI should reference both a certificate and a private key. If the PEM file containing the private key is encrypted, or if the PKCS#11 token requires a PIN, this can be provided at build time by means of the ``KBUILD_SIGN_PIN`` variable. ”h]”(jv)�”}”(hŒ[:menuselection:`File name or PKCS#11 URI of module signing key` (``CONFIG_MODULE_SIG_KEY``)”h]”(jµ)�”}”(hŒ.File name or PKCS#11 URI of module signing key”h]”hŒ.File name or PKCS#11 URI of module signing key”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”Œ menuselection”ah"]”h$]”h&]”Œrawtext”Œ?:menuselection:`File name or PKCS#11 URI of module signing key`”uh1j´hjubhŒ (”…”�”}”(hjh²hh³Nh´Nubj)�”}”(hŒ``CONFIG_MODULE_SIG_KEY``”h]”hŒCONFIG_MODULE_SIG_KEY”…”�”}”(hj3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjubhŒ)”…”�”}”(hjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³hÊh´Kchjubjv)�”}”(hX Setting this option to something other than its default of ``certs/signing_key.pem`` will disable the autogeneration of signing keys and allow the kernel modules to be signed with a key of your choosing. The string provided should identify a file containing both a private key and its corresponding X.509 certificate in PEM form, or — on systems where the OpenSSL ENGINE_pkcs11 is functional — a PKCS#11 URI as defined by RFC7512. In the latter case, the PKCS#11 URI should reference both a certificate and a private key.”h]”(hŒ;Setting this option to something other than its default of ”…”�”}”(hjKh²hh³Nh´Nubj)�”}”(hŒ``certs/signing_key.pem``”h]”hŒcerts/signing_key.pem”…”�”}”(hjSh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjKubhX¹ will disable the autogeneration of signing keys and allow the kernel modules to be signed with a key of your choosing. The string provided should identify a file containing both a private key and its corresponding X.509 certificate in PEM form, or — on systems where the OpenSSL ENGINE_pkcs11 is functional — a PKCS#11 URI as defined by RFC7512. In the latter case, the PKCS#11 URI should reference both a certificate and a private key.”…”�”}”(hjKh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³hÊh´Kfhjubjv)�”}”(hŒ±If the PEM file containing the private key is encrypted, or if the PKCS#11 token requires a PIN, this can be provided at build time by means of the ``KBUILD_SIGN_PIN`` variable.”h]”(hŒ”If the PEM file containing the private key is encrypted, or if the PKCS#11 token requires a PIN, this can be provided at build time by means of the ”…”�”}”(hjkh²hh³Nh´Nubj)�”}”(hŒ``KBUILD_SIGN_PIN``”h]”hŒKBUILD_SIGN_PIN”…”�”}”(hjsh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjkubhŒ variable.”…”�”}”(hjkh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³hÊh´Kohjubeh}”(h]”h ]”h"]”h$]”h&]”uh1júhj÷ubjû)�”}”(hŒý:menuselection:`Additional X.509 keys for default system keyring` (``CONFIG_SYSTEM_TRUSTED_KEYS``) This option can be set to the filename of a PEM-encoded file containing additional certificates which will be included in the system keyring by default. ”h]”(jv)�”}”(hŒb:menuselection:`Additional X.509 keys for default system keyring` (``CONFIG_SYSTEM_TRUSTED_KEYS``)”h]”(jµ)�”}”(hŒ0Additional X.509 keys for default system keyring”h]”hŒ0Additional X.509 keys for default system keyring”…”�”}”(hj™h²hh³Nh´Nubah}”(h]”h ]”Œ menuselection”ah"]”h$]”h&]”Œrawtext”ŒA:menuselection:`Additional X.509 keys for default system keyring`”uh1j´hj•ubhŒ (”…”�”}”(hj•h²hh³Nh´Nubj)�”}”(hŒ``CONFIG_SYSTEM_TRUSTED_KEYS``”h]”hŒCONFIG_SYSTEM_TRUSTED_KEYS”…”�”}”(hj®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj•ubhŒ)”…”�”}”(hj•h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³hÊh´Kthj‘ubjv)�”}”(hŒ˜This option can be set to the filename of a PEM-encoded file containing additional certificates which will be included in the system keyring by default.”h]”hŒ˜This option can be set to the filename of a PEM-encoded file containing additional certificates which will be included in the system keyring by default.”…”�”}”(hjÆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1juh³hÊh´Kwhj‘ubeh}”(h]”h ]”h"]”h$]”h&]”uh1júhj÷ubeh}”(h]”h ]”h"]”h$]”h&]”Œenumtype”Œarabic”Œprefix”Œ(”Œsuffix”Œ)”uh1jõhjñubah}”(h]”h ]”h"]”h$]”h&]”uh1jïh³hÊh´K3hj›h²hubjv)�”}”(hŒ“Note that enabling module signing adds a dependency on the OpenSSL devel packages to the kernel build processes for the tool that does the signing.”h]”hŒ“Note that enabling module signing adds a dependency on the OpenSSL devel packages to the kernel build processes for the tool that does the signing.”…”�”}”(hjìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1juh³hÊh´K{hj›h²hubeh}”(h]”Œconfiguring-module-signing”ah ]”h"]”Œconfiguring module signing”ah$]”h&]”uh1hµhh·h²hh³hÊh´K)ubh¶)�”}”(hhh]”(h»)�”}”(hŒGenerating signing keys”h]”hŒGenerating signing keys”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjh²hh³hÊh´K�ubjv)�”}”(hXƒCryptographic keypairs are required to generate and check signatures. A private key is used to generate a signature and the corresponding public key is used to check it. The private key is only needed during the build, after which it can be deleted or stored securely. The public key gets built into the kernel so that it can be used to check the signatures as the modules are loaded.”h]”hXƒCryptographic keypairs are required to generate and check signatures. A private key is used to generate a signature and the corresponding public key is used to check it. The private key is only needed during the build, after which it can be deleted or stored securely. The public key gets built into the kernel so that it can be used to check the signatures as the modules are loaded.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1juh³hÊh´Kƒhjh²hubjv)�”}”(hŒÃUnder normal conditions, when ``CONFIG_MODULE_SIG_KEY`` is unchanged from its default, the kernel build will automatically generate a new keypair using openssl if one does not exist in the file::”h]”(hŒUnder normal conditions, when ”…”�”}”(hj!h²hh³Nh´Nubj)�”}”(hŒ``CONFIG_MODULE_SIG_KEY``”h]”hŒCONFIG_MODULE_SIG_KEY”…”�”}”(hj)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj!ubhŒ‹ is unchanged from its default, the kernel build will automatically generate a new keypair using openssl if one does not exist in the file:”…”�”}”(hj!h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1juh³hÊh´KŠhjh²hubjÒ)�”}”(hŒcerts/signing_key.pem”h]”hŒcerts/signing_key.pem”…”�”}”hjAsbah}”(h]”h ]”h"]”h$]”h&]”hÛhÜuh1jÑh³hÊh´KŽhjh²hubjv)�”}”(hŒtduring the building of vmlinux (the public part of the key needs to be built into vmlinux) using parameters in the::”h]”hŒsduring the building of vmlinux (the public part of the key needs to be built into vmlinux) using parameters in the:”…”�”}”(hjOh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1juh³hÊh´K�hjh²hubjÒ)�”}”(hŒcerts/x509.genkey”h]”hŒcerts/x509.genkey”…”�”}”hj]sbah}”(h]”h ]”h"]”h$]”h&]”hÛhÜuh1jÑh³hÊh´K“hjh²hubjv)�”}”(hŒ j˜j•jÿjüjDjAj%j"jõjòj< j9 j‡ j„ jÎ jË j9 j6 uŒ nametypes”}”(jA ‰j˜‰jÿ‰jD‰j%‰jõ‰j< ‰j‡ ‰jÎ ‰j9 ‰uh}”(j> h·j•jdjüj›jAjj"jGjòj(j9 jøj„ j? jË jŠ j6 jÑ uŒ footnote_refs”}”Œ citation_refs”}”Œ autofootnotes”]”Œautofootnote_refs”]”Œsymbol_footnotes”]”Œsymbol_footnote_refs”]”Œ footnotes”]”Œ citations”]”Œautofootnote_start”KŒsymbol_footnote_start”KŒ id_counter”Œ collections”ŒCounter”“”}”…”R”Œparse_messages”]”Œtransform_messages”]”Œ transformer”NŒ include_log”]”Œ decoration”Nh²hub.