From nobody Wed Apr 15 00:02:44 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 9915DC19F2B for ; Thu, 28 Jul 2022 20:57:35 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233176AbiG1U5d (ORCPT ); Thu, 28 Jul 2022 16:57:33 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:55800 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232818AbiG1U53 (ORCPT ); Thu, 28 Jul 2022 16:57:29 -0400 Received: from dfw.source.kernel.org (dfw.source.kernel.org [IPv6:2604:1380:4641:c500::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 5FE5877A79; Thu, 28 Jul 2022 13:57:26 -0700 (PDT) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id D9A5460F1B; Thu, 28 Jul 2022 20:57:25 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 077D9C433D6; Thu, 28 Jul 2022 20:57:24 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1659041845; bh=AiJ624A7q3U6WLzMdmIephz/BFMnF/PLuTlRBValYJE=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=f9NXutg5sUhhvUtx2Rzpl+1l3cpDR43ykx+a3yxGudBggfKW+3RP3pDlxGJY1C9e+ FP4RPyL3J2DiPRManOkQYvLStP4n7E+a8ALVJVNJ2bc/wHR3iTHeLGuKkSNdeF+ISN xO+UNStJDZCjkN5SDkdFwut7OKiv6yj1G6xtHaEU= From: Konstantin Ryabitsev Date: Thu, 28 Jul 2022 16:57:04 -0400 Subject: [PATCH v1 1/5] maintainer-pgp-guide: use key terminology consistent with upstream MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20220727-docs-pgp-guide-v1-1-c48fb06cb9af@linuxfoundation.org> References: <20220727-docs-pgp-guide-v1-0-c48fb06cb9af@linuxfoundation.org> In-Reply-To: <20220727-docs-pgp-guide-v1-0-c48fb06cb9af@linuxfoundation.org> To: Jonathan Corbet Cc: linux-kernel@vger.kernel.org, linux-doc@vger.kernel.org X-Mailer: b4 0.10.0-dev-49460 X-Developer-Signature: v=1; a=openpgp-sha256; l=11287; i=konstantin@linuxfoundation.org; h=from:subject:message-id; bh=AiJ624A7q3U6WLzMdmIephz/BFMnF/PLuTlRBValYJE=; b=owGbwMvMwCW27YjM47CUmTmMp9WSGJIe/TCZFPFe6gKH/kaviXwBStWhpSlL1nAqbWRtXmHzqaFj +oEHHaUsDGJcDLJiiixl+2I3BRU+9JBL7zGFmcPKBDKEgYtTACZiocbwz07ww66gGLmedSc3BXgtqc 83XnIubBP3yfplNmKTCwQ65jAyNH4L7CjPaZ87u8Fn6xSl3h12FptOXUqbHXI2tbTQSf4fMwA= X-Developer-Key: i=konstantin@linuxfoundation.org; a=openpgp; fpr=DE0E66E32F1FDD0902666B96E63EDCA9329DD07E Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org GnuPG does not use the word "master key" when referring to the subkey marked with the "certification" capability. Our use of this term was not only inconsistent, but also misleading, because in real life "master keys" are able to open multiple locks made for different keys, while PGP Certify key has no such capability. Signed-off-by: Konstantin Ryabitsev diff --git a/Documentation/process/maintainer-pgp-guide.rst b/Documentation= /process/maintainer-pgp-guide.rst index 29e7d7b1cd44..cdd108f50fe7 100644 --- a/Documentation/process/maintainer-pgp-guide.rst +++ b/Documentation/process/maintainer-pgp-guide.rst @@ -133,45 +133,55 @@ daily cronjob:: Check the full path to your ``gpg`` or ``gpg2`` command and use the ``gpg2`` command if regular ``gpg`` for you is the legacy GnuPG v.1. =20 -.. _master_key: +.. _protect_your_key: =20 -Protect your master PGP key -=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D +Protect your PGP key +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D =20 This guide assumes that you already have a PGP key that you use for Linux kernel development purposes. If you do not yet have one, please see the "`Protecting Code Integrity`_" document mentioned earlier for guidance on how to create a new one. =20 -You should also make a new key if your current one is weaker than 2048 bits -(RSA). - -Master key vs. Subkeys ----------------------- - -Subkeys are fully independent PGP keypairs that are tied to the "master" -key using certifying key signatures (certificates). It is important to -understand the following: - -1. There are no technical differences between the "master key" and "subkey= s." -2. At creation time, we assign functional limitations to each key by - giving it specific capabilities. -3. A PGP key can have 4 capabilities: - - - **[S]** key can be used for signing - - **[E]** key can be used for encryption - - **[A]** key can be used for authentication - - **[C]** key can be used for certifying other keys - -4. A single key may have multiple capabilities. -5. A subkey is fully independent from the master key. A message - encrypted to a subkey cannot be decrypted with the master key. If you - lose your private subkey, it cannot be recreated from the master key - in any way. - -The key carrying the **[C]** (certify) capability is considered the -"master" key because it is the only key that can be used to indicate -relationship with other keys. Only the **[C]** key can be used to: +You should also make a new key if your current one is weaker than 2048 +bits (RSA). + +Understanding PGP Subkeys +------------------------- + +A PGP key rarely consists of a single keypair -- usually it is a +collection of independent subkeys that can be used for different +purposes based on their capabilities, assigned at their creation time. +PGP defined four capabilities that a key can have: + +- **[S]** keys can be used for signing +- **[E]** keys can be used for encryption +- **[A]** keys can be used for authentication +- **[C]** keys can be used for certifying other keys + +The **[C]** (certification) key is often called the "master" key, but +this terminology is misleading because it implies that the Certify key +can be used in place of any of other subkey on the same chain (like a +physical "master key" would). For this reason, this guide will refer to +it as "the Certify key" to avoid any ambiguity. + +It is critical to fully understand the following: + +1. All subkeys are fully independent from each other. If you lose a + private subkey, it cannot be restored or recreated from any other + private key on your chain. +2. With the exception of the Certify key, there can be multiple subkeys + with identical capabilities (e.g. you can have 2 valid encryption + subkeys, 3 valid signing subkeys, but only one valid certification + subkey). All subkeys are fully independent -- a message encrypted to + one **[E]** subkey cannot be decrypted with any other **[E]** subkey + you may also have. +3. A single subkey may have multiple capabilities (e.g. your **[C]** key + can also be your **[S]** key). + +The key carrying the **[C]** (certify) capability is the only key that +can be used to indicate relationship with other keys. Only the **[C]** +key can be used to: =20 - add or revoke other keys (subkeys) with S/E/A capabilities - add, change or revoke identities (uids) associated with the key @@ -180,7 +190,7 @@ relationship with other keys. Only the **[C]** key can = be used to: =20 By default, GnuPG creates the following when generating new keys: =20 -- A master key carrying both Certify and Sign capabilities (**[SC]**) +- One subkey carrying both Certify and Sign capabilities (**[SC]**) - A separate subkey with the Encryption capability (**[E]**) =20 If you used the default parameters when generating your key, then that @@ -192,9 +202,6 @@ for example:: uid [ultimate] Alice Dev ssb rsa2048 2018-01-23 [E] [expires: 2020-01-23] =20 -Any key carrying the **[C]** capability is your master key, regardless -of any other capabilities it may have assigned to it. - The long line under the ``sec`` entry is your key fingerprint -- whenever you see ``[fpr]`` in the examples below, that 40-character string is what it refers to. @@ -215,9 +222,9 @@ strong passphrase. To set it or change it, use:: Create a separate Signing subkey -------------------------------- =20 -Our goal is to protect your master key by moving it to offline media, so -if you only have a combined **[SC]** key, then you should create a separate -signing subkey:: +Our goal is to protect your Certify key by moving it to offline media, +so if you only have a combined **[SC]** key, then you should create a +separate signing subkey:: =20 $ gpg --quick-addkey [fpr] ed25519 sign =20 @@ -230,8 +237,8 @@ your new subkey:: =20 GnuPG 2.1 and later has full support for Elliptic Curve Cryptography, with ability to combine ECC subkeys with traditional - RSA master keys. The main upside of ECC cryptography is that it is - much faster computationally and creates much smaller signatures when + RSA keys. The main upside of ECC cryptography is that it is much + faster computationally and creates much smaller signatures when compared byte for byte with 2048+ bit RSA keys. Unless you plan on using a smartcard device that does not support ECC operations, we recommend that you create an ECC signing subkey for your kernel @@ -244,8 +251,8 @@ your new subkey:: "nistp256" instead or "ed25519." =20 =20 -Back up your master key for disaster recovery ---------------------------------------------- +Back up your Certify key for disaster recovery +---------------------------------------------- =20 The more signatures you have on your PGP key from other developers, the more reasons you have to create a backup version that lives on something @@ -300,7 +307,7 @@ will use for backup purposes. You will need to encrypt = them using LUKS -- refer to your distro's documentation on how to accomplish this. =20 For the encryption passphrase, you can use the same one as on your -master key. +PGP key. =20 Once the encryption process is over, re-insert the USB drive and make sure it gets properly mounted. Copy your entire ``.gnupg`` directory @@ -319,7 +326,7 @@ far away, because you'll need to use it every now and a= gain for things like editing identities, adding or revoking subkeys, or signing other people's keys. =20 -Remove the master key from your homedir +Remove the Certify key from your homedir ---------------------------------------- =20 The files in our home directory are not as well protected as we like to @@ -334,7 +341,7 @@ think. They can be leaked or stolen via many different= means: Protecting your key with a good passphrase greatly helps reduce the risk of any of the above, but passphrases can be discovered via keyloggers, shoulder-surfing, or any number of other means. For this reason, the -recommended setup is to remove your master key from your home directory +recommended setup is to remove your Certify key from your home directory and store it on offline storage. =20 .. warning:: @@ -343,7 +350,7 @@ and store it on offline storage. your GnuPG directory in its entirety. What we are about to do will render your key useless if you do not have a usable backup! =20 -First, identify the keygrip of your master key:: +First, identify the keygrip of your Certify key:: =20 $ gpg --with-keygrip --list-key [fpr] =20 @@ -359,7 +366,7 @@ The output will be something like this:: Keygrip =3D 3333000000000000000000000000000000000000 =20 Find the keygrip entry that is beneath the ``pub`` line (right under the -master key fingerprint). This will correspond directly to a file in your +Certify key fingerprint). This will correspond directly to a file in your ``~/.gnupg`` directory:: =20 $ cd ~/.gnupg/private-keys-v1.d @@ -369,13 +376,13 @@ master key fingerprint). This will correspond directl= y to a file in your 3333000000000000000000000000000000000000.key =20 All you have to do is simply remove the .key file that corresponds to -the master keygrip:: +the Certify key keygrip:: =20 $ cd ~/.gnupg/private-keys-v1.d $ rm 1111000000000000000000000000000000000000.key =20 Now, if you issue the ``--list-secret-keys`` command, it will show that -the master key is missing (the ``#`` indicates it is not available):: +the Certify key is missing (the ``#`` indicates it is not available):: =20 $ gpg --list-secret-keys sec# rsa2048 2018-01-24 [SC] [expires: 2020-01-24] @@ -404,7 +411,7 @@ file, which still contains your private keys. Move the subkeys to a dedicated crypto device =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D =20 -Even though the master key is now safe from being leaked or stolen, the +Even though the Certify key is now safe from being leaked or stolen, the subkeys are still in your home directory. Anyone who manages to get their hands on those will be able to decrypt your communication or fake your signatures (if they know the passphrase). Furthermore, each time a @@ -627,10 +634,10 @@ Other common GnuPG operations Here is a quick reference for some common operations you'll need to do with your PGP key. =20 -Mounting your master key offline storage -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +Mounting your safe offline storage +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ =20 -You will need your master key for any of the operations below, so you +You will need your Certify key for any of the operations below, so you will first need to mount your backup offline storage and tell GnuPG to use it:: =20 @@ -644,7 +651,7 @@ your regular home directory location). Extending key expiration date ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ =20 -The master key has the default expiration date of 2 years from the date +The Certify key has the default expiration date of 2 years from the date of creation. This is done both for security reasons and to make obsolete keys eventually disappear from keyservers. =20 --=20 b4 0.10.0-dev-49460 From nobody Wed Apr 15 00:02:44 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 717BAC19F2A for ; Thu, 28 Jul 2022 20:57:58 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233060AbiG1U5u (ORCPT ); Thu, 28 Jul 2022 16:57:50 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:55806 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233180AbiG1U5c (ORCPT ); Thu, 28 Jul 2022 16:57:32 -0400 Received: from ams.source.kernel.org (ams.source.kernel.org [IPv6:2604:1380:4601:e00::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 852687821F; Thu, 28 Jul 2022 13:57:28 -0700 (PDT) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ams.source.kernel.org (Postfix) with ESMTPS id 133CAB82594; Thu, 28 Jul 2022 20:57:27 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 8D956C433D7; Thu, 28 Jul 2022 20:57:25 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1659041845; bh=azSgDeGUyqdJ5DSn8DlL30b6grHpGLBFojeo8hzd0QE=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=jBrRL0SkMavSDFeOHUNNI1jpeLEBCl6/uK8k6908BqBjTK5cJ+5JTNS35L/t8cvpe wr+PUbHuu38OERMIrERSGx5dk7KllSeP+q+zPsy2zmP83VhCX5nK2T667V9vbXwcmg F3v5zbtuJlnV0VglnDaXOJB5K9x1+dUec9TWyV58= From: Konstantin Ryabitsev Date: Thu, 28 Jul 2022 16:57:05 -0400 Subject: [PATCH v1 2/5] maintainer-pgp-guide: remove keyserver instructions MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20220727-docs-pgp-guide-v1-2-c48fb06cb9af@linuxfoundation.org> References: <20220727-docs-pgp-guide-v1-0-c48fb06cb9af@linuxfoundation.org> In-Reply-To: <20220727-docs-pgp-guide-v1-0-c48fb06cb9af@linuxfoundation.org> To: Jonathan Corbet Cc: linux-kernel@vger.kernel.org, linux-doc@vger.kernel.org X-Mailer: b4 0.10.0-dev-49460 X-Developer-Signature: v=1; a=openpgp-sha256; l=5444; i=konstantin@linuxfoundation.org; h=from:subject:message-id; bh=azSgDeGUyqdJ5DSn8DlL30b6grHpGLBFojeo8hzd0QE=; b=owGbwMvMwCW27YjM47CUmTmMp9WSGJIe/TDVtF1pbfLeT3SngKXMqcXs6c/fsq1R2aOlb/on4c0k frcjHaUsDGJcDLJiiixl+2I3BRU+9JBL7zGFmcPKBDKEgYtTACbyJ53hnw2n66mSzp0PhI2tb88+ZB Zslqwyw5wtY6OezKKiY9svxDP8s5DPa7i6cuNxn9Sc3ismwgnOX7PvMM0UDv/0o6xgqelXFgA= X-Developer-Key: i=konstantin@linuxfoundation.org; a=openpgp; fpr=DE0E66E32F1FDD0902666B96E63EDCA9329DD07E Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Keyservers are largely a thing of the past with the replacement systems like keys.openpgp.net specifically designed to offer no support for the web of trust. Remove all sections that talk about keyservers and add a small section with the link to kernel.org documentation that talks about using the kernel.org public key repository. Signed-off-by: Konstantin Ryabitsev diff --git a/Documentation/process/maintainer-pgp-guide.rst b/Documentation= /process/maintainer-pgp-guide.rst index cdd108f50fe7..01112ac7723e 100644 --- a/Documentation/process/maintainer-pgp-guide.rst +++ b/Documentation/process/maintainer-pgp-guide.rst @@ -121,18 +121,6 @@ edit your ``~/.gnupg/gpg-agent.conf`` file to set your= own values:: to remove anything you had in place for older versions of GnuPG, as it may not be doing the right thing any more. =20 -Set up a refresh cronjob -~~~~~~~~~~~~~~~~~~~~~~~~ - -You will need to regularly refresh your keyring in order to get the -latest changes on other people's public keys, which is best done with a -daily cronjob:: - - @daily /usr/bin/gpg2 --refresh >/dev/null 2>&1 - -Check the full path to your ``gpg`` or ``gpg2`` command and use the -``gpg2`` command if regular ``gpg`` for you is the legacy GnuPG v.1. - .. _protect_your_key: =20 Protect your PGP key @@ -228,11 +216,6 @@ separate signing subkey:: =20 $ gpg --quick-addkey [fpr] ed25519 sign =20 -Remember to tell the keyservers about this change, so others can pull down -your new subkey:: - - $ gpg --send-key [fpr] - .. note:: ECC support in GnuPG =20 GnuPG 2.1 and later has full support for Elliptic Curve @@ -906,65 +889,17 @@ the new default in GnuPG v2). To set it, add (or modi= fy) the =20 trust-model tofu+pgp =20 -How to use keyservers (more) safely ------------------------------------ - -If you get a "No public key" error when trying to validate someone's -tag, then you should attempt to lookup that key using a keyserver. It is -important to keep in mind that there is absolutely no guarantee that the -key you retrieve from PGP keyservers belongs to the actual person -- -that much is by design. You are supposed to use the Web of Trust to -establish key validity. - -How to properly maintain the Web of Trust is beyond the scope of this -document, simply because doing it properly requires both effort and -dedication that tends to be beyond the caring threshold of most human -beings. Here are some shortcuts that will help you reduce the risk of -importing a malicious key. - -First, let's say you've tried to run ``git verify-tag`` but it returned -an error saying the key is not found:: - - $ git verify-tag sunxi-fixes-for-4.15-2 - gpg: Signature made Sun 07 Jan 2018 10:51:55 PM EST - gpg: using RSA key DA73759BF8619E484E5A3B47389A54219C0F= 2430 - gpg: issuer "wens@...org" - gpg: Can't check signature: No public key - -Let's query the keyserver for more info about that key fingerprint (the -fingerprint probably belongs to a subkey, so we can't use it directly -without finding out the ID of the master key it is associated with):: - - $ gpg --search DA73759BF8619E484E5A3B47389A54219C0F2430 - gpg: data source: hkp://keys.gnupg.net - (1) Chen-Yu Tsai - 4096 bit RSA key C94035C21B4F2AEB, created: 2017-03-14, expires:= 2019-03-15 - Keys 1-1 of 1 for "DA73759BF8619E484E5A3B47389A54219C0F2430". Enter n= umber(s), N)ext, or Q)uit > q - -Locate the ID of the master key in the output, in our example -``C94035C21B4F2AEB``. Now display the key of Linus Torvalds that you -have on your keyring:: - - $ gpg --list-key torvalds@kernel.org - pub rsa2048 2011-09-20 [SC] - ABAF11C65A2970B130ABE3C479BE3E4300411886 - uid [ unknown] Linus Torvalds - sub rsa2048 2011-09-20 [E] - -Next, find a trust path from Linus Torvalds to the key-id you found via ``= gpg ---search`` of the unknown key. For this, you can use several tools includ= ing -https://github.com/mricon/wotmate, -https://git.kernel.org/pub/scm/docs/kernel/pgpkeys.git/tree/graphs, and -https://the.earth.li/~noodles/pathfind.html. - -If you get a few decent trust paths, then it's a pretty good indication -that it is a valid key. You can add it to your keyring from the -keyserver now:: - - $ gpg --recv-key C94035C21B4F2AEB - -This process is not perfect, and you are obviously trusting the -administrators of the PGP Pathfinder service to not be malicious (in -fact, this goes against :ref:`devs_not_infra`). However, if you -do not carefully maintain your own web of trust, then it is a marked -improvement over blindly trusting keyservers. +Using the kernel.org web of trust repository +-------------------------------------------- + +Kernel.org maintains a git repository with developers' public keys as a +replacement for replicating keyserver networks that have gone mostly +dark in the past few years. The full documentation for how to set up +that repository as your source of public keys can be found here: + +- `Kernel developer PGP Keyring`_ + +If you are a kernel developer, please consider submitting your key for +inclusion into that keyring. + +.. _`Kernel developer PGP Keyring`: https://korg.docs.kernel.org/pgpkeys.h= tml --=20 b4 0.10.0-dev-49460 From nobody Wed Apr 15 00:02:44 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id DE67CC04A68 for ; Thu, 28 Jul 2022 20:57:48 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229882AbiG1U5p (ORCPT ); Thu, 28 Jul 2022 16:57:45 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:55842 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233060AbiG1U5a (ORCPT ); Thu, 28 Jul 2022 16:57:30 -0400 Received: from dfw.source.kernel.org (dfw.source.kernel.org [IPv6:2604:1380:4641:c500::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id B6B2178219; Thu, 28 Jul 2022 13:57:27 -0700 (PDT) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id EE33461865; Thu, 28 Jul 2022 20:57:26 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 21CC8C43470; Thu, 28 Jul 2022 20:57:26 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1659041846; bh=+yWtLXs1Zq1z9BhFpIxlo5zOYx6a+00PO/tsLikHY7I=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=QVWc14yNV0R8Jiqd6bgGJ+4DJ8b1CYQhZMxnQE4eTnVh3VsScJw/yTs7wpFANSybY ALi4nSFe+jpoMhtLak5d9qvOUIAK94Z+z+hgLk1fBQSBfxSbrSaPcJFtBUXBMP4NM2 KhZWpLP5xWMd/4TVjHFsgxeOHjmRp3z4Bka/wTOI= From: Konstantin Ryabitsev Date: Thu, 28 Jul 2022 16:57:06 -0400 Subject: [PATCH v1 3/5] maintainer-pgp-guide: update ECC support information MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20220727-docs-pgp-guide-v1-3-c48fb06cb9af@linuxfoundation.org> References: <20220727-docs-pgp-guide-v1-0-c48fb06cb9af@linuxfoundation.org> In-Reply-To: <20220727-docs-pgp-guide-v1-0-c48fb06cb9af@linuxfoundation.org> To: Jonathan Corbet Cc: linux-kernel@vger.kernel.org, linux-doc@vger.kernel.org X-Mailer: b4 0.10.0-dev-49460 X-Developer-Signature: v=1; a=openpgp-sha256; l=2325; i=konstantin@linuxfoundation.org; h=from:subject:message-id; bh=+yWtLXs1Zq1z9BhFpIxlo5zOYx6a+00PO/tsLikHY7I=; b=owGbwMvMwCW27YjM47CUmTmMp9WSGJIe/TDtZA3RLup0Ugk/erEurenM6RlCbdZqYtXWS/aLF85j yuvpKGVhEONikBVTZCnbF7spqPChh1x6jynMHFYmkCEMXJwCMBElLUaGs1KTfr8OW5NgXC/06XO0Zu Pe671Lltu+L3wuv6tky2ZvRYb/sc33F6faOP/LW+2VyH08rUB+77Gc2se7OI/E3zn0elslHwA= X-Developer-Key: i=konstantin@linuxfoundation.org; a=openpgp; fpr=DE0E66E32F1FDD0902666B96E63EDCA9329DD07E Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Update ECC sections with the latest details, now that Yubikeys are able to support ED25519 curves. Tweak a few links to smartcard devices to reflect the latest URL changes. Signed-off-by: Konstantin Ryabitsev diff --git a/Documentation/process/maintainer-pgp-guide.rst b/Documentation= /process/maintainer-pgp-guide.rst index 01112ac7723e..62b0bab5d7c5 100644 --- a/Documentation/process/maintainer-pgp-guide.rst +++ b/Documentation/process/maintainer-pgp-guide.rst @@ -227,11 +227,9 @@ separate signing subkey:: recommend that you create an ECC signing subkey for your kernel work. =20 - If for some reason you prefer to stay with RSA subkeys, just replace - "ed25519" with "rsa2048" in the above command. Additionally, if you - plan to use a hardware device that does not support ED25519 ECC - keys, like Nitrokey Pro or a Yubikey, then you should use - "nistp256" instead or "ed25519." + Note, that if you plan to use a hardware device that does not + support ED25519 ECC keys, you should choose "nistp256" instead or + "ed25519." =20 =20 Back up your Certify key for disaster recovery @@ -437,7 +435,8 @@ functionality. There are several options available: - `Yubikey 5`_: proprietary hardware and software, but cheaper than Nitrokey Pro and comes available in the USB-C form that is more useful with newer laptops. Offers additional security features such as FIDO - U2F, among others, and now finally supports ECC keys (NISTP). + U2F, among others, and now finally supports NISTP and ED25519 ECC + keys. =20 `LWN has a good review`_ of some of the above models, as well as several others. Your choice will depend on cost, shipping availability in your @@ -450,7 +449,7 @@ geographical region, and open/proprietary hardware cons= iderations. Foundation. =20 .. _`Nitrokey Start`: https://shop.nitrokey.com/shop/product/nitrokey-star= t-6 -.. _`Nitrokey Pro 2`: https://shop.nitrokey.com/shop/product/nitrokey-pro-= 2-3 +.. _`Nitrokey Pro 2`: https://shop.nitrokey.com/shop/product/nkpr2-nitroke= y-pro-2-3 .. _`Yubikey 5`: https://www.yubico.com/products/yubikey-5-overview/ .. _Gnuk: https://www.fsij.org/doc-gnuk/ .. _`LWN has a good review`: https://lwn.net/Articles/736231/ --=20 b4 0.10.0-dev-49460 From nobody Wed Apr 15 00:02:44 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 54964C19F2C for ; Thu, 28 Jul 2022 20:58:05 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233487AbiG1U6E (ORCPT ); Thu, 28 Jul 2022 16:58:04 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:55840 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233213AbiG1U5c (ORCPT ); Thu, 28 Jul 2022 16:57:32 -0400 Received: from ams.source.kernel.org (ams.source.kernel.org [IPv6:2604:1380:4601:e00::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 9795877574; Thu, 28 Jul 2022 13:57:29 -0700 (PDT) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ams.source.kernel.org (Postfix) with ESMTPS id 39698B82593; Thu, 28 Jul 2022 20:57:28 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id A97C0C4347C; Thu, 28 Jul 2022 20:57:26 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1659041846; bh=KVD7HjeOiAY1TaMMP3/tdJDHP/1E9ZXiaHqWbd9BwC8=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=qUzKWxt6XuxavOPFtS4QkQiLSW4OtJ75MRWfn3aahgjuFdq9qjG/gdUHuDlXsn3OI w6xIv4GLgzTGVP0t3AAEe7B+lrrX3cW9bkreUQravZOTLErOfdyX7+0z5jKkzpARTW EHbt1xYoHC0NJPwOtRfrC8G70SFGiN058FC4mzog= From: Konstantin Ryabitsev Date: Thu, 28 Jul 2022 16:57:07 -0400 Subject: [PATCH v1 4/5] maintainer-pgp-guide: add a section on PGP-signed patches MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20220727-docs-pgp-guide-v1-4-c48fb06cb9af@linuxfoundation.org> References: <20220727-docs-pgp-guide-v1-0-c48fb06cb9af@linuxfoundation.org> In-Reply-To: <20220727-docs-pgp-guide-v1-0-c48fb06cb9af@linuxfoundation.org> To: Jonathan Corbet Cc: linux-kernel@vger.kernel.org, linux-doc@vger.kernel.org X-Mailer: b4 0.10.0-dev-49460 X-Developer-Signature: v=1; a=openpgp-sha256; l=3027; i=konstantin@linuxfoundation.org; h=from:subject:message-id; bh=KVD7HjeOiAY1TaMMP3/tdJDHP/1E9ZXiaHqWbd9BwC8=; b=owGbwMvMwCW27YjM47CUmTmMp9WSGJIe/TDLevMkkymqWD2AWXWNpu0GroQYzda9YeKHFimmX96t 7lrRUcrCIMbFICumyFK2L3ZTUOFDD7n0HlOYOaxMIEMYuDgFYCKRfYwMM5bOvz8latqRqvolvpmxSb 36V7P+39rY8O9w7pVjQQ5HrzMyXJNaL6PYYu1nyLigqfj63aydt7SU/9WVFazZm9Tge2w6DwA= X-Developer-Key: i=konstantin@linuxfoundation.org; a=openpgp; fpr=DE0E66E32F1FDD0902666B96E63EDCA9329DD07E Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org With more developers beginning to use b4 and patatt, add a section to the guide that talks about setting up and using patatt for PGP-signing patch submissions. Signed-off-by: Konstantin Ryabitsev diff --git a/Documentation/process/maintainer-pgp-guide.rst b/Documentation= /process/maintainer-pgp-guide.rst index 62b0bab5d7c5..2ce38e5d547d 100644 --- a/Documentation/process/maintainer-pgp-guide.rst +++ b/Documentation/process/maintainer-pgp-guide.rst @@ -674,6 +674,7 @@ remote end. =20 .. _`Agent Forwarding over SSH`: https://wiki.gnupg.org/AgentForwarding =20 +.. _pgp_with_git: =20 Using PGP with Git =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D @@ -817,6 +818,63 @@ You can tell git to always sign commits:: =20 .. _verify_identities: =20 + +How to work with signed patches +------------------------------- + +It is possible to use your PGP key to sign patches sent to kernel +developer mailing lists. Since existing email signature mechanisms +(PGP-Mime or PGP-inline) tend to cause problems with regular code +review tasks, you should use the tool kernel.org created for this +purpose that puts cryptographic attestation signatures into message +headers (a-la DKIM): + +- `Patatt Patch Attestation`_ + +.. _`Patatt Patch Attestation`: https://pypi.org/project/patatt/ + +Installing and configuring patatt +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Patatt is packaged for many distributions already, so please check there +first. You can also install it from pypi using "``pip install patatt``". + +If you already have your PGP key configured with git (via the +``user.signingKey`` configuration parameter), then patatt requires no +further configuration. You can start signing your patches by installing +the git-send-email hook in the repository you want:: + + patatt install-hook + +Now any patches you send with ``git send-email`` will be automatically +signed with your cryptographic signature. + +Checking patatt signatures +~~~~~~~~~~~~~~~~~~~~~~~~~~ + +If you are using ``b4`` to retrieve and apply patches, then it will +automatically attempt to verify all DKIM and patatt signatures it +encounters, for example:: + + $ b4 am 20220720205013.890942-1-broonie@kernel.org + [...] + Checking attestation on all messages, may take a moment... + --- + =E2=9C=93 [PATCH v1 1/3] kselftest/arm64: Correct buffer allocation = for SVE Z registers + =E2=9C=93 [PATCH v1 2/3] arm64/sve: Document our actual ABI for clea= ring registers on syscall + =E2=9C=93 [PATCH v1 3/3] kselftest/arm64: Enforce actual ABI for SVE= syscalls + --- + =E2=9C=93 Signed: openpgp/broonie@kernel.org + =E2=9C=93 Signed: DKIM/kernel.org + +.. note:: + + Patatt and b4 are still in active development and you should check + the latest documentation for these projects for any new or updated + features. + +.. _kernel_identities: + How to verify kernel developer identities =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D =20 --=20 b4 0.10.0-dev-49460 From nobody Wed Apr 15 00:02:44 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 5F6BFC04A68 for ; Thu, 28 Jul 2022 20:57:43 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233338AbiG1U5l (ORCPT ); Thu, 28 Jul 2022 16:57:41 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:55846 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233066AbiG1U5a (ORCPT ); Thu, 28 Jul 2022 16:57:30 -0400 Received: from dfw.source.kernel.org (dfw.source.kernel.org [IPv6:2604:1380:4641:c500::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 2443E7821B; Thu, 28 Jul 2022 13:57:28 -0700 (PDT) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id ACD5361871; Thu, 28 Jul 2022 20:57:27 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 3E6B6C433D6; Thu, 28 Jul 2022 20:57:27 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1659041847; bh=fG+3nCW7qlAcg2TRLEYO2j/tO09JErrxFIGTuZ1+Pkw=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=0/5X582XPxczuTXnk7ACfcWOa2ZKA1vmxSM+qKOfITTzTkSFClTvq27pI2+/YjS3R PHvittK0SFrABTC8euKI6f6vfRG9DpmoDppNwOnn94/Ic1mI35GpL4liwiQvQHsial bd2wXSd9yICLuB1SJOC8sFXOQWAdsHUVMtyRcX4c= From: Konstantin Ryabitsev Date: Thu, 28 Jul 2022 16:57:08 -0400 Subject: [PATCH v1 5/5] maintainer-pgp-guide: minor wording tweaks MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20220727-docs-pgp-guide-v1-5-c48fb06cb9af@linuxfoundation.org> References: <20220727-docs-pgp-guide-v1-0-c48fb06cb9af@linuxfoundation.org> In-Reply-To: <20220727-docs-pgp-guide-v1-0-c48fb06cb9af@linuxfoundation.org> To: Jonathan Corbet Cc: linux-kernel@vger.kernel.org, linux-doc@vger.kernel.org X-Mailer: b4 0.10.0-dev-49460 X-Developer-Signature: v=1; a=openpgp-sha256; l=1447; i=konstantin@linuxfoundation.org; h=from:subject:message-id; bh=fG+3nCW7qlAcg2TRLEYO2j/tO09JErrxFIGTuZ1+Pkw=; b=owGbwMvMwCW27YjM47CUmTmMp9WSGJIe/TD3cVbhvLDXX71r4cy+BfyWTe+WzTM/6nTA8pDlXUvD uK5XHaUsDGJcDLJiiixl+2I3BRU+9JBL7zGFmcPKBDKEgYtTACbSUsDIcFjOoc6Db4p1tqa6/1e51S WOv82NX73Zs9vXZcODwtjDXowMlwz+B0ul7O77ovBitbXzeX6d+k+3yvL4mfN4Hqd9izdhBgA= X-Developer-Key: i=konstantin@linuxfoundation.org; a=openpgp; fpr=DE0E66E32F1FDD0902666B96E63EDCA9329DD07E Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Tweak some wording to remove redundant information or fix spacing. Signed-off-by: Konstantin Ryabitsev diff --git a/Documentation/process/maintainer-pgp-guide.rst b/Documentation= /process/maintainer-pgp-guide.rst index 2ce38e5d547d..ea74c87d09d8 100644 --- a/Documentation/process/maintainer-pgp-guide.rst +++ b/Documentation/process/maintainer-pgp-guide.rst @@ -265,9 +265,7 @@ home, such as your bank vault. Your printer is probably no longer a simple dumb device connected to your parallel port, but since the output is still encrypted with your passphrase, printing out even to "cloud-integrated" modern - printers should remain a relatively safe operation. One option is to - change the passphrase on your master key immediately after you are - done with paperkey. + printers should remain a relatively safe operation. =20 Back up your whole GnuPG directory ---------------------------------- @@ -311,7 +309,7 @@ Remove the Certify key from your homedir ---------------------------------------- =20 The files in our home directory are not as well protected as we like to -think. They can be leaked or stolen via many different means: +think. They can be leaked or stolen via many different means: =20 - by accident when making quick homedir copies to set up a new workstation - by systems administrator negligence or malice --=20 b4 0.10.0-dev-49460