From b28166a251ed90fe954f973f0ec2098b44162310 Mon Sep 17 00:00:00 2001 From: "Tammi L. Coles" Date: Sat, 7 Oct 2023 14:45:56 +0200 Subject: [PATCH 01/44] change opening lines/introduction to chapter --- book/source/04-certificates.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/book/source/04-certificates.md b/book/source/04-certificates.md index 8583c90..597704c 100644 --- a/book/source/04-certificates.md +++ b/book/source/04-certificates.md @@ -1,7 +1,7 @@ (certificates_chapter)= # Certificates -One central (and non-trivial) element of OpenPGP are "OpenPGP certificates" (also often called "OpenPGP keys"). OpenPGP certificates are relatively complex data structures, so it's good to have a clear mental model of them. +OpenPGP fundamentally hinges on the concept of "OpenPGP certificates," often referred to as "OpenPGP keys." These certificates are complex data structures essential for identity verification and data encryption. Understanding their structure and functionality is pivotal for effective application of the OpenPGP standard. ## Terminology: The various meanings of "key" From edad5d19bfe0b0fd3a97c44769afd5a600e3de09 Mon Sep 17 00:00:00 2001 From: "Tammi L. Coles" Date: Sat, 7 Oct 2023 14:49:26 +0200 Subject: [PATCH 02/44] edit section intro on understanding keys --- book/source/04-certificates.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/book/source/04-certificates.md b/book/source/04-certificates.md index 597704c..2d856d2 100644 --- a/book/source/04-certificates.md +++ b/book/source/04-certificates.md @@ -3,9 +3,9 @@ OpenPGP fundamentally hinges on the concept of "OpenPGP certificates," often referred to as "OpenPGP keys." These certificates are complex data structures essential for identity verification and data encryption. Understanding their structure and functionality is pivotal for effective application of the OpenPGP standard. -## Terminology: The various meanings of "key" +## Terminology: Understanding "keys" -The concept of "(cryptographic) keys" plays a central role, when looking at OpenPGP certificates. Confusingly, the term can be used to refer to a number of subtly different things. +The term "(cryptographic) keys" is central to grasping the concept of OpenPGP certificates. However, it can refer to different entities, making it a potentially confusing term. Let's clarify those differences. ### Private vs. public keys From f9d0c132ee8cb0221fadca06b925a97e52d31e07 Mon Sep 17 00:00:00 2001 From: "Tammi L. Coles" Date: Sat, 7 Oct 2023 15:03:43 +0200 Subject: [PATCH 03/44] clarify in section on public vs private keys --- book/source/04-certificates.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/book/source/04-certificates.md b/book/source/04-certificates.md index 2d856d2..667617d 100644 --- a/book/source/04-certificates.md +++ b/book/source/04-certificates.md @@ -7,9 +7,9 @@ OpenPGP fundamentally hinges on the concept of "OpenPGP certificates," often ref The term "(cryptographic) keys" is central to grasping the concept of OpenPGP certificates. However, it can refer to different entities, making it a potentially confusing term. Let's clarify those differences. -### Private vs. public keys +### Public vs. private keys -First, without additional context, the word "key" can refer either to public, or to private asymmetric key material (or even to symmetric keys, which can be used to encrypt private key material in OpenPGP keys). +The term "key," without additional context, can refer to either public or private asymmetric key material. In asymmetric cryptography, fundamental to the OpenPGP standard, a pair of keys is used: a public key for encryption and a corresponding private key for decryption. The public key is shared openly, allowing others to encrypt data meant for the individual who owns the key pair, while the private key is kept confidential by the key pair owner, ensuring only they can decrypt and access the encrypted data. Additionally, symmetric keys may be used in OpenPGP to encrypt private key material, adding a layer of security and complexity. ### Layers of "keys," in OpenPGP From 63c3a2c94a97bf59c86f077ef4b4ca741d8e4d85 Mon Sep 17 00:00:00 2001 From: "Tammi L. Coles" Date: Sat, 7 Oct 2023 15:13:58 +0200 Subject: [PATCH 04/44] edit section on layers of keys, integrating previoous Ch2 section --- book/source/04-certificates.md | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/book/source/04-certificates.md b/book/source/04-certificates.md index 667617d..a256b8e 100644 --- a/book/source/04-certificates.md +++ b/book/source/04-certificates.md @@ -11,16 +11,17 @@ The term "(cryptographic) keys" is central to grasping the concept of OpenPGP ce The term "key," without additional context, can refer to either public or private asymmetric key material. In asymmetric cryptography, fundamental to the OpenPGP standard, a pair of keys is used: a public key for encryption and a corresponding private key for decryption. The public key is shared openly, allowing others to encrypt data meant for the individual who owns the key pair, while the private key is kept confidential by the key pair owner, ensuring only they can decrypt and access the encrypted data. Additionally, symmetric keys may be used in OpenPGP to encrypt private key material, adding a layer of security and complexity. -### Layers of "keys," in OpenPGP +### Layers of keys in OpenPGP -Independent of the distinction between private and public keys, in OpenPGP, the term "key" is used to refer to three different layers, all related but distinct: +In OpenPGP, the term "key" is used to refer to three distinct layers, each serving a unique purpose: -1. A (bare) ["cryptographic key"](asymmetric_key_pair) (without additional metadata). Those might be the private and/or public parameters that form a key, e.g., in case of an RSA private key, the exponent `d` along with the prime numbers `p` and `q`. -2. An OpenPGP *component key*: Either an "OpenPGP primary key", or an "OpenPGP subkey". A component key is one building block of an OpenPGP certificate. It consists of a cryptographic keypair combined some invariant metadata (e.g. key creation time). -3. An "OpenPGP certificate" (or "OpenPGP key"): Consists of a number of component keys, identity components and additional elements. +1. A (bare) ["cryptographic key"](asymmetric_key_pair) comprises the private and/or public parameters forming a key. For instance, in the case of an RSA private key, the key consists of the exponent `d` along with the prime numbers `p` and `q`. +2. An OpenPGP *component key* includes either an "OpenPGP primary key" or an "OpenPGP subkey." It is a building block of an OpenPGP certificate, consisting of a cryptographic keypair coupled with some invariant metadata, such as key creation time. +3. An "OpenPGP certificate" (or "OpenPGP key") consists of several component keys, identity components, and other elements. These certificates are dynamic, evolving over time as components are added, expire, or are marked as invalid. -In the following section, we'll look at the two OpenPGP-specific layers (2 and 3). +The following section will delve into the OpenPGP-specific layers (2 and 3) to provide a clearer understanding of their roles within OpenPGP certificates. +For detailed insights on structure and handling, refer to our chapters on OpenPGP [certificates](certificates_chapter) and [private keys](private_key_chapter). Additionally, managing certificates, and understanding their authentication and trust models are vital topics. While this document briefly touches upon these aspects, they are integral to working proficiently with OpenPGP. ## Structure of OpenPGP certificates From 6130da92f3eabef80f5e925e1aa02f14b6be3aa3 Mon Sep 17 00:00:00 2001 From: "Tammi L. Coles" Date: Thu, 12 Oct 2023 13:42:38 +0200 Subject: [PATCH 05/44] add digital signatures --- book/source/04-certificates.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/book/source/04-certificates.md b/book/source/04-certificates.md index a256b8e..48f943a 100644 --- a/book/source/04-certificates.md +++ b/book/source/04-certificates.md @@ -1,7 +1,7 @@ (certificates_chapter)= # Certificates -OpenPGP fundamentally hinges on the concept of "OpenPGP certificates," often referred to as "OpenPGP keys." These certificates are complex data structures essential for identity verification and data encryption. Understanding their structure and functionality is pivotal for effective application of the OpenPGP standard. +OpenPGP fundamentally hinges on the concept of "OpenPGP certificates," often referred to as "OpenPGP keys." These certificates are complex data structures essential for identity verification, data encryption, and digital signatures. Understanding their structure and functionality is pivotal for effective application of the OpenPGP standard. ## Terminology: Understanding "keys" From 269608b39db5704e736157d7f7e6074d4695aa7a Mon Sep 17 00:00:00 2001 From: "Tammi L. Coles" Date: Thu, 12 Oct 2023 13:47:43 +0200 Subject: [PATCH 06/44] remove asysmmetric explainer, evaluste for ch3 --- book/source/04-certificates.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/book/source/04-certificates.md b/book/source/04-certificates.md index 48f943a..49d50f6 100644 --- a/book/source/04-certificates.md +++ b/book/source/04-certificates.md @@ -9,7 +9,7 @@ The term "(cryptographic) keys" is central to grasping the concept of OpenPGP ce ### Public vs. private keys -The term "key," without additional context, can refer to either public or private asymmetric key material. In asymmetric cryptography, fundamental to the OpenPGP standard, a pair of keys is used: a public key for encryption and a corresponding private key for decryption. The public key is shared openly, allowing others to encrypt data meant for the individual who owns the key pair, while the private key is kept confidential by the key pair owner, ensuring only they can decrypt and access the encrypted data. Additionally, symmetric keys may be used in OpenPGP to encrypt private key material, adding a layer of security and complexity. +The term "key," without additional context, can refer to either public or private asymmetric key material. Additionally, symmetric keys may be used in OpenPGP to encrypt private key material, adding a layer of security and complexity. ### Layers of keys in OpenPGP From 54a4f3457af380cf15bdd887f25c3547c96ccdaf Mon Sep 17 00:00:00 2001 From: "Tammi L. Coles" Date: Thu, 12 Oct 2023 13:47:43 +0200 Subject: [PATCH 07/44] remove asysmmetric explainer, evaluate for ch3 --- book/source/04-certificates.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/book/source/04-certificates.md b/book/source/04-certificates.md index 48f943a..49d50f6 100644 --- a/book/source/04-certificates.md +++ b/book/source/04-certificates.md @@ -9,7 +9,7 @@ The term "(cryptographic) keys" is central to grasping the concept of OpenPGP ce ### Public vs. private keys -The term "key," without additional context, can refer to either public or private asymmetric key material. In asymmetric cryptography, fundamental to the OpenPGP standard, a pair of keys is used: a public key for encryption and a corresponding private key for decryption. The public key is shared openly, allowing others to encrypt data meant for the individual who owns the key pair, while the private key is kept confidential by the key pair owner, ensuring only they can decrypt and access the encrypted data. Additionally, symmetric keys may be used in OpenPGP to encrypt private key material, adding a layer of security and complexity. +The term "key," without additional context, can refer to either public or private asymmetric key material. Additionally, symmetric keys may be used in OpenPGP to encrypt private key material, adding a layer of security and complexity. ### Layers of keys in OpenPGP From 1672ecc4c2fba384b5435bbcbf99037ed9228759 Mon Sep 17 00:00:00 2001 From: "Tammi L. Coles" Date: Thu, 12 Oct 2023 14:06:10 +0200 Subject: [PATCH 08/44] change to 'may refer to' --- book/source/04-certificates.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/book/source/04-certificates.md b/book/source/04-certificates.md index 49d50f6..29b2fef 100644 --- a/book/source/04-certificates.md +++ b/book/source/04-certificates.md @@ -13,7 +13,7 @@ The term "key," without additional context, can refer to either public or privat ### Layers of keys in OpenPGP -In OpenPGP, the term "key" is used to refer to three distinct layers, each serving a unique purpose: +In OpenPGP, the term "key" may refer to three distinct layers, each serving a unique purpose: 1. A (bare) ["cryptographic key"](asymmetric_key_pair) comprises the private and/or public parameters forming a key. For instance, in the case of an RSA private key, the key consists of the exponent `d` along with the prime numbers `p` and `q`. 2. An OpenPGP *component key* includes either an "OpenPGP primary key" or an "OpenPGP subkey." It is a building block of an OpenPGP certificate, consisting of a cryptographic keypair coupled with some invariant metadata, such as key creation time. From 4edf20da61f0834b1cd9ff3cfa341e6b15d55629 Mon Sep 17 00:00:00 2001 From: "Tammi L. Coles" Date: Thu, 19 Oct 2023 17:30:13 +0200 Subject: [PATCH 09/44] edit ch4 --- .DS_Store | Bin 0 -> 6148 bytes book/source/04-certificates.md | 40 ++-- book/source/diag/fingerprint.png | Bin 20270 -> 53192 bytes book/source/diag/fingerprint.svg | 397 ++++++++++++++++++++++--------- 4 files changed, 310 insertions(+), 127 deletions(-) create mode 100644 .DS_Store diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..eb788aa81b782b77aea7cc134c0e09cd6991f010 GIT binary patch literal 6148 zcmeHK%}T>S5T308EA`N$2PyjiBJ>SniBC|xOB!jV4GI3>(R~bk5f9#d3!g>&W_JkP zq|u9r$V{32lKI)4eEHc95t-S2F(n!k(GbcwIKZ$&*w5OLfmjZKhUeHUr}ITs)}2T- z{8a|{-X(NOOS-1J=>AO}Kel~km1X&+%3;I9;GSPsZ)dT;_|jjmww{fX6sa`Ax(`(0 zS5Qq?w4gP{o2Uv(F8U)|HND&}eN8>{mQ_^YH_=hO{`~+?xvzE|Rd~GrjtU!JtEQ)h zC&_J9(eX#?PAsNYQ3jL&W#Gpdz@E)A90k--8Bhk4frbJ8K3FJYD(C|GPX`9y0ss@3 zz2KO83C^*Csh|r855$C2U`RF6VwjK)yOp?9&;<S eZ^cJYFR)ua0H%U2AS@95Bj9P!K^gc}20j57l4oTA literal 0 HcmV?d00001 diff --git a/book/source/04-certificates.md b/book/source/04-certificates.md index 29b2fef..5984eef 100644 --- a/book/source/04-certificates.md +++ b/book/source/04-certificates.md @@ -1,7 +1,7 @@ (certificates_chapter)= # Certificates -OpenPGP fundamentally hinges on the concept of "OpenPGP certificates," often referred to as "OpenPGP keys." These certificates are complex data structures essential for identity verification, data encryption, and digital signatures. Understanding their structure and functionality is pivotal for effective application of the OpenPGP standard. +OpenPGP fundamentally hinges on the concept of "OpenPGP certificates," also known as "OpenPGP keys." These certificates are complex data structures essential for identity verification, data encryption, and digital signatures. Understanding their structure and function is pivotal to effectively applying the OpenPGP standard. ## Terminology: Understanding "keys" @@ -27,54 +27,58 @@ For detailed insights on structure and handling, refer to our chapters on OpenPG An OpenPGP certificate (or "OpenPGP key") is a collection of an arbitrary number of elements[^packets]: -[^packets]: In technical terms, the elements of an OpenPGP certificate are a collection "packets". Each component key and identity component is internally represented as one packet. The other common type of element is "signature" packets, which link the components of a certificate together. +[^packets]: In technical terms, the elements of an OpenPGP certificate are a collection of "packets." Each component key and identity component is internally represented as a packet. Another common type of packet is the "signature" packet, which connect the components of a certificate. -- Component OpenPGP keys, -- Identity components, -- Other metadata (this includes connections between the certificate's components). +- Component keys +- Identity components +- Additional metadata, including connections between the certificate's components We sometimes collectively refer to component keys and identity information as "the components of a certificate." +```{admonition} Warning +Please clarify who "we" is in this statement. +``` + ```{figure} diag/OpenPGP_Certificate.png Typical components in an OpenPGP certificate ``` -All elements in an OpenPGP certificate are structured around one central component: the *OpenPGP primary key*. The primary key acts as a personal CA for the certificate's owner: It can make cryptographic statements about subkeys, identities, expiration, revocation, ... +Every element in an OpenPGP certificate revolves around a central component: the *OpenPGP primary key*. The primary key acts as a personal CA (Certification Authority) for the certificate's owner, enabling cryptographic statements regarding subkeys, identities, expiration, revocation, and more. ```{note} -OpenPGP certificates are typically long-lived and may be changed (typically by their owner), over time. Components can be added and invalidated, over the lifetime of a certificate +OpenPGP certificates tend to have a long lifespan, with the potential for modifications (typically by their owner) over time. Components may be added or invalidated throughout a certificate's lifetime. ``` ### OpenPGP component keys -An OpenPGP certificate usually contains multiple OpenPGP component keys. +An OpenPGP certificate usually contains multiple component keys. -OpenPGP component keys consist of an [asymmetric cryptographic keypair](asymmetric_key_pair) and a creation timestamp. These attributes of a component key cannot be changed after creation (in the case of ECDH keys, two additional parameters are part of a component key's constituting data[^ecdh-paramters]). +OpenPGP component keys consist of an [asymmetric cryptographic keypair](asymmetric_key_pair) and a creation timestamp. Once created, these attributes of a component key remain fixed (for ECDH keys, two additional parameters are part of a component key's constitutive data[^ecdh-parameters]). -[^ecdh-paramters]: For [ECDH](https://www.ietf.org/archive/id/draft-ietf-openpgp-crypto-refresh-10.html#name-algorithm-specific-part-for-ecd) component keys, two additional algorithm parameters are part of the component key's constituting and immutable properties. Those parameters define a hash function and a symmetric encryption algorithm. +[^ecdh-parameters]: For [ECDH](https://www.ietf.org/archive/id/draft-ietf-openpgp-crypto-refresh-10.html#name-algorithm-specific-part-for-ecd) component keys, two additional algorithm parameters are integral to the component key's constitutive and immutable properties. Those parameters specify a hash function and a symmetric encryption algorithm. ```{figure} diag/Component_Key.svg An OpenPGP component key ``` -Component key representations that include private key material also contain metadata that specifies the password protection scheme for the private key material. +Component keys containing private key material also contain metadata that specifies the password protection scheme for the private key material. -For each OpenPGP component key, an *OpenPGP fingerprint* can be derived from the combination of the public key material and creation timestamp (and ECDH parameters, if applicable). +For each OpenPGP component key, an *OpenPGP fingerprint* can be generated. This fingerprint is derived from the combination of the public key material and creation timestamp (and ECDH parameters, if applicable). ```{figure} diag/Fingerprint.png -Every OpenPGP component key can be named by a fingerprint +Every OpenPGP component key is identifiable by a unique fingerprint. ``` -The fingerprint of our example component OpenPGP key is `AAA1 8CBB 2546 85C5 8358 3205 63FD 37B6 7F33 00F9 FB0E C457 378C D29F 1026 98B3` [^keyid]. +The fingerprint of our example OpenPGP component key is `AAA1 8CBB 2546 85C5 8358 3205 63FD 37B6 7F33 00F9 FB0E C457 378C D29F 1026 98B3` [^keyid]. -[^keyid]: In OpenPGP version 4, the rightmost 64 bit were sometimes used as a shorter identifier, called "Key ID". -E.g., an OpenPGP version 4 certificate with the fingerprint `B3D2 7B09 FBA4 1235 2B41 8972 C8B8 6AC4 2455 4239` might be referred to by the 64 bit Key ID `C8B8 6AC4 2455 4239` or styled as `0xC8B86AC424554239`. -Historically, even shorter 32 bit identifiers have sometimes been used, like this: `2455 4239`, or `0x24554239`. You may still see such identifiers in very old documents about PGP. However, 32 bit identifiers have [been unfit for purpose for a long time](https://evil32.com/). At some point, 32 bit identifiers were called "short Key ID", while 64 bit identifiers were called "long Key ID". +[^keyid]: In OpenPGP version 4, the rightmost 64 bits were sometimes used as a shorter identifier, called "Key ID." +For example, an OpenPGP version 4 certificate with the fingerprint `B3D2 7B09 FBA4 1235 2B41 8972 C8B8 6AC4 2455 4239` might be referenced by the 64-bit Key ID `C8B8 6AC4 2455 4239` or formatted as `0xC8B86AC424554239`. +Historically, even shorter 32-bit identifiers were used, like this: `2455 4239`, or `0x24554239`. Such identifiers still appear in very old documents about PGP. However, [32-bit identifiers have been long deemed unfit for purpose](https://evil32.com/). At one point, 32-bit identifiers were called "short Key ID," while 64-bit identifiers were referred to as "long Key ID." -Component keys are used in one of two roles: either as "OpenPGP primary key," or as an "OpenPGP subkey". +Component keys serve in one of two roles: either as an "OpenPGP primary key" or as an "OpenPGP subkey." #### Primary key diff --git a/book/source/diag/fingerprint.png b/book/source/diag/fingerprint.png index b462264b79f7fe5d9237b7fa769f76ad96878d96..dd54dc807a5f2a575827f9f62cbce51d1ee80053 100644 GIT binary patch literal 53192 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 Dj{BvR literal 20270 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 - - - - - - - - - Key creation time - Fingerprint:AAA1 8CBB 2546 85C5 8358 3205 63FD 37B67F33 00F9 FB0E C457 378C D29F 1026 98B3 - - - - + id="layer5" + inkscape:label="Chapter 4" + inkscape:highlight-color="#baa600" + transform="translate(-811.81226,-1223.9908)">Fingerprint of an OpenPGP component key - key creation timeComponent KeyC0A5 8384 A438 E5A1 4F73 7124 26A4 D45D BAEE F4A3 9E6B 30B0 9D55 13F9 78AC CA94Fingerprint From 4bcb73e5ec1e66df52e2e5fdd095f3f387b3951d Mon Sep 17 00:00:00 2001 From: "Tammi L. Coles" Date: Thu, 19 Oct 2023 17:35:17 +0200 Subject: [PATCH 10/44] edit ch4 primary key --- book/source/04-certificates.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/book/source/04-certificates.md b/book/source/04-certificates.md index 5984eef..86cdda2 100644 --- a/book/source/04-certificates.md +++ b/book/source/04-certificates.md @@ -82,15 +82,15 @@ Component keys serve in one of two roles: either as an "OpenPGP primary key" or #### Primary key -The "OpenPGP primary key" is a component key that serves a central role in an OpenPGP certificate: +The OpenPGP primary key is a distinct component key that serves a central role in an OpenPGP certificate: -- Its fingerprint is used as the unique identifier for the full OpenPGP certificate. -- It is used for lifecycle operations, such as adding or invalidating subkeys or identities in a certificate. +- Its fingerprint acts as the unique identifier for the entire OpenPGP certificate. +- It facilitates lifecycle operations, such as adding or invalidating subkeys or identities within a certificate. ```{admonition} Terminology :class: note -In the RFC, the OpenPGP primary key is also sometimes referred to as "top-level key." It has also sometimes informally been called "master key." +In the RFC, the OpenPGP primary key is occasionally referred to as "top-level key." Informally, it has also been termed the "master key." ``` #### Subkeys From 5eb49aee3e812049e347693d5d8bc50c8f5f077d Mon Sep 17 00:00:00 2001 From: "Tammi L. Coles" Date: Thu, 19 Oct 2023 17:40:57 +0200 Subject: [PATCH 11/44] edit ch4 subkeys --- book/source/04-certificates.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/book/source/04-certificates.md b/book/source/04-certificates.md index 86cdda2..c26f84c 100644 --- a/book/source/04-certificates.md +++ b/book/source/04-certificates.md @@ -95,15 +95,15 @@ In the RFC, the OpenPGP primary key is occasionally referred to as "top-level ke #### Subkeys -In addition to the primary key, modern OpenPGP certificates usually contain a number of "subkeys" (however, it's not technically necessary for a certificate to contain subkeys). +In addition to the primary key, modern OpenPGP certificates usually contain several subkeys, although they are not technically required. -Subkeys have the same structure as the primary key, but they are used in a different role. Subkeys are cryptographically linked with the primary key (more on this below). +Subkeys have the same structural attributes as the primary key but fulfill a different role. Subkeys are cryptographically linked with the primary key (elaborated below). ```{figure} diag/Subkeys.png -:name: Certificate with Subkeys -:alt: Three component keys. The primary key is shown at the top. It can be used for certification. Below it, linked with arrows, are two more component keys, used as subkeys. They are marked as "for encryption" and "for signing", respectively. +:name: Certificate with subkeys +:alt: Three component keys depicted. The primary key is positioned at the top, designated for certification. Below it, linked by arrows, are two more component keys, used as subkeys. They are labeled as "for encryption" and "for signing," respectively. -OpenPGP certificates can contain a number of subkeys +OpenPGP certificates can contain multiple subkeys. ``` #### Key Flags: defining which operations a component key can perform From 435b52593c3575af5a0ab4f303cdfd1d8d478244 Mon Sep 17 00:00:00 2001 From: "Tammi L. Coles" Date: Thu, 19 Oct 2023 17:44:47 +0200 Subject: [PATCH 12/44] add warning/task regarding capitalization --- book/source/04-certificates.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/book/source/04-certificates.md b/book/source/04-certificates.md index c26f84c..4ad0ff5 100644 --- a/book/source/04-certificates.md +++ b/book/source/04-certificates.md @@ -108,6 +108,10 @@ OpenPGP certificates can contain multiple subkeys. #### Key Flags: defining which operations a component key can perform +```{admonition} Warning +Let's decide whether the capitalization of F is necessary. +``` + Each component key has a set of ["Key Flags"](https://www.ietf.org/archive/id/draft-ietf-openpgp-crypto-refresh-10.html#key-flags) that specify which operations that key can perform. The commonly used key flags are: From 0b7ac3402f11a7838a2cba4bc0f5398b91c42fb4 Mon Sep 17 00:00:00 2001 From: "Tammi L. Coles" Date: Thu, 19 Oct 2023 19:16:11 +0200 Subject: [PATCH 13/44] edit key flags in part --- book/source/04-certificates.md | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/book/source/04-certificates.md b/book/source/04-certificates.md index 4ad0ff5..2fbb507 100644 --- a/book/source/04-certificates.md +++ b/book/source/04-certificates.md @@ -106,21 +106,25 @@ Subkeys have the same structural attributes as the primary key but fulfill a dif OpenPGP certificates can contain multiple subkeys. ``` -#### Key Flags: defining which operations a component key can perform +#### Defining operational capabilities with Key Flags ```{admonition} Warning Let's decide whether the capitalization of F is necessary. ``` -Each component key has a set of ["Key Flags"](https://www.ietf.org/archive/id/draft-ietf-openpgp-crypto-refresh-10.html#key-flags) that specify which operations that key can perform. +Each component key has a set of ["Key Flags"](https://www.ietf.org/archive/id/draft-ietf-openpgp-crypto-refresh-10.html#key-flags) that delineate the operations a key can perform. -The commonly used key flags are: +Commonly used key flags are: - **C**ertification (issuing third-party certifications) - **S**igning (signing data) - **E**ncryption (encrypting data) - **A**uthentication (commonly used for OpenPGP authentication) +```{admonition} Warning +Accessibility. Is the bolding of C, S, E, A compatible with screenreaders? Is it worth the effort? +``` + By convention, only the primary key is allowed to perform "certification" operations. All other operations can be configured on either the primary key or a subkey. ```{note} From 615ade4cfa8d234d0ada8920a3e946bd46ed0874 Mon Sep 17 00:00:00 2001 From: "Tammi L. Coles" Date: Thu, 19 Oct 2023 17:30:13 +0200 Subject: [PATCH 14/44] edit ch4 --- .DS_Store | Bin 0 -> 6148 bytes book/source/04-certificates.md | 38 +-- book/source/diag/fingerprint.png | Bin 20270 -> 53192 bytes book/source/diag/fingerprint.svg | 397 ++++++++++++++++++++++--------- 4 files changed, 309 insertions(+), 126 deletions(-) create mode 100644 .DS_Store diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..eb788aa81b782b77aea7cc134c0e09cd6991f010 GIT binary patch literal 6148 zcmeHK%}T>S5T308EA`N$2PyjiBJ>SniBC|xOB!jV4GI3>(R~bk5f9#d3!g>&W_JkP zq|u9r$V{32lKI)4eEHc95t-S2F(n!k(GbcwIKZ$&*w5OLfmjZKhUeHUr}ITs)}2T- z{8a|{-X(NOOS-1J=>AO}Kel~km1X&+%3;I9;GSPsZ)dT;_|jjmww{fX6sa`Ax(`(0 zS5Qq?w4gP{o2Uv(F8U)|HND&}eN8>{mQ_^YH_=hO{`~+?xvzE|Rd~GrjtU!JtEQ)h zC&_J9(eX#?PAsNYQ3jL&W#Gpdz@E)A90k--8Bhk4frbJ8K3FJYD(C|GPX`9y0ss@3 zz2KO83C^*Csh|r855$C2U`RF6VwjK)yOp?9&;<S eZ^cJYFR)ua0H%U2AS@95Bj9P!K^gc}20j57l4oTA literal 0 HcmV?d00001 diff --git a/book/source/04-certificates.md b/book/source/04-certificates.md index 644d1a5..0fe1785 100644 --- a/book/source/04-certificates.md +++ b/book/source/04-certificates.md @@ -1,7 +1,7 @@ (certificates_chapter)= # Certificates -OpenPGP fundamentally hinges on the concept of "OpenPGP certificates," often referred to as "OpenPGP keys." These certificates are complex data structures essential for identity verification, data encryption, and digital signatures. Understanding their structure and functionality is pivotal for effective application of the OpenPGP standard. +OpenPGP fundamentally hinges on the concept of "OpenPGP certificates," also known as "OpenPGP keys." These certificates are complex data structures essential for identity verification, data encryption, and digital signatures. Understanding their structure and function is pivotal to effectively applying the OpenPGP standard. ## Terminology: Understanding "keys" @@ -27,54 +27,58 @@ For detailed insights on structure and handling, refer to our chapters on OpenPG An OpenPGP certificate (or "OpenPGP key") is a collection of an arbitrary number of elements[^packets]: -[^packets]: In technical terms, the elements of an OpenPGP certificate are a collection "packets". Each component key and identity component is internally represented as one packet. The other common type of element is "signature" packets, which link the components of a certificate together. +[^packets]: In technical terms, the elements of an OpenPGP certificate are a collection of "packets." Each component key and identity component is internally represented as a packet. Another common type of packet is the "signature" packet, which connect the components of a certificate. -- Component OpenPGP keys, -- Identity components, -- Other metadata (this includes connections between the certificate's components). +- Component keys +- Identity components +- Additional metadata, including connections between the certificate's components We sometimes collectively refer to component keys and identity information as "the components of a certificate." +```{admonition} Warning +Please clarify who "we" is in this statement. +``` + ```{figure} diag/OpenPGP_Certificate.png Typical components in an OpenPGP certificate ``` -All elements in an OpenPGP certificate are structured around one central component: the *OpenPGP primary key*. The primary key acts as a personal {term}`CA` for the certificate's owner: It can make cryptographic statements about subkeys, identities, expiration, revocation, ... +Every element in an OpenPGP certificate revolves around a central component: the *OpenPGP primary key*. The primary key acts as a personal CA (Certification Authority) for the certificate's owner, enabling cryptographic statements regarding subkeys, identities, expiration, revocation, and more. ```{note} -OpenPGP certificates are typically long-lived and may be changed (typically by their owner), over time. Components can be added and invalidated, over the lifetime of a certificate +OpenPGP certificates tend to have a long lifespan, with the potential for modifications (typically by their owner) over time. Components may be added or invalidated throughout a certificate's lifetime. ``` ## Component keys -An OpenPGP certificate usually contains multiple OpenPGP component keys. Component keys are used in one of two roles: either as "OpenPGP primary key," or as an "OpenPGP subkey." +An OpenPGP certificate usually contains multiple component keys. Component keys serve in one of two roles: either as an "OpenPGP primary key" or as an "OpenPGP subkey." -OpenPGP component keys logically consist of an [asymmetric cryptographic keypair](asymmetric_key_pair) and a creation timestamp. These attributes of a component key cannot be changed after creation (in the case of ECDH keys, two additional parameters are part of a component key's constituting data[^ecdh-paramters]). +OpenPGP component keys logically consist of an [asymmetric cryptographic keypair](asymmetric_key_pair) and a creation timestamp. Once created, these attributes of a component key remain fixed (for ECDH keys, two additional parameters are part of a component key's constitutive data[^ecdh-parameters]). -[^ecdh-paramters]: For [ECDH](https://www.ietf.org/archive/id/draft-ietf-openpgp-crypto-refresh-10.html#name-algorithm-specific-part-for-ecd) component keys, two additional algorithm parameters are part of the component key's constituting and immutable properties. Those parameters define a hash function and a symmetric encryption algorithm. +[^ecdh-parameters]: For [ECDH](https://www.ietf.org/archive/id/draft-ietf-openpgp-crypto-refresh-10.html#name-algorithm-specific-part-for-ecd) component keys, two additional algorithm parameters are integral to the component key's constitutive and immutable properties. Those parameters specify a hash function and a symmetric encryption algorithm. ```{figure} diag/Component_Key.svg An OpenPGP component key ``` -Component key representations that include private key material also contain metadata that specifies the password protection scheme for the private key material. However, in this chapter, we're looking at *OpenPGP certificates*, which *don't* contain private key information. Each component key of such a certificate contains only the public part of its cryptographic key data. To read more about private keys in OpenPGP, see {numref}`private_key_chapter`. +Component keys containing private key material also contain metadata that specifies the password protection scheme for the private key material. However, in this chapter, we're looking at *OpenPGP certificates*, which *don't* contain private key information. Each component key of such a certificate contains only the public part of its cryptographic key data. To read more about private keys in OpenPGP, see {numref}`private_key_chapter`. ### Fingerprint -For each OpenPGP component key, an *OpenPGP fingerprint* can be derived from the combination of the public key material and creation timestamp (and ECDH parameters, if applicable). +For each OpenPGP component key, an *OpenPGP fingerprint* can be generated. This fingerprint is derived from the combination of the public key material and creation timestamp (and ECDH parameters, if applicable). ```{figure} diag/Fingerprint.png -Every OpenPGP component key can be named by a fingerprint +Every OpenPGP component key is identifiable by a unique fingerprint. ``` -The fingerprint of our example component OpenPGP key is `C0A5 8384 A438 E5A1 4F73 7124 26A4 D45D BAEE F4A3 9E6B 30B0 9D55 13F9 78AC CA94`[^keyid]. +The fingerprint of our example OpenPGP component key is `C0A5 8384 A438 E5A1 4F73 7124 26A4 D45D BAEE F4A3 9E6B 30B0 9D55 13F9 78AC CA94`[^keyid]. -[^keyid]: In OpenPGP version 4, the rightmost 64 bit were sometimes used as a shorter identifier, called "Key ID". -E.g., an OpenPGP version 4 certificate with the fingerprint `B3D2 7B09 FBA4 1235 2B41 8972 C8B8 6AC4 2455 4239` might be referred to by the 64 bit Key ID `C8B8 6AC4 2455 4239` or styled as `0xC8B86AC424554239`. -Historically, even shorter 32 bit identifiers have sometimes been used, like this: `2455 4239`, or `0x24554239`. You may still see such identifiers in very old documents about PGP. However, 32 bit identifiers have [been unfit for purpose for a long time](https://evil32.com/). At some point, 32 bit identifiers were called "short Key ID", while 64 bit identifiers were called "long Key ID". +[^keyid]: In OpenPGP version 4, the rightmost 64 bits were sometimes used as a shorter identifier, called "Key ID." +For example, an OpenPGP version 4 certificate with the fingerprint `B3D2 7B09 FBA4 1235 2B41 8972 C8B8 6AC4 2455 4239` might be referenced by the 64-bit Key ID `C8B8 6AC4 2455 4239` or formatted as `0xC8B86AC424554239`. +Historically, even shorter 32-bit identifiers were used, like this: `2455 4239`, or `0x24554239`. Such identifiers still appear in very old documents about PGP. However, [32-bit identifiers have been long deemed unfit for purpose](https://evil32.com/). At one point, 32-bit identifiers were called "short Key ID," while 64-bit identifiers were referred to as "long Key ID." ### Primary key diff --git a/book/source/diag/fingerprint.png b/book/source/diag/fingerprint.png index b462264b79f7fe5d9237b7fa769f76ad96878d96..dd54dc807a5f2a575827f9f62cbce51d1ee80053 100644 GIT binary patch literal 53192 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 Dj{BvR literal 20270 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 - - - - - - - - - Key creation time - Fingerprint:AAA1 8CBB 2546 85C5 8358 3205 63FD 37B67F33 00F9 FB0E C457 378C D29F 1026 98B3 - - - - + id="layer5" + inkscape:label="Chapter 4" + inkscape:highlight-color="#baa600" + transform="translate(-811.81226,-1223.9908)">Fingerprint of an OpenPGP component key - key creation timeComponent KeyC0A5 8384 A438 E5A1 4F73 7124 26A4 D45D BAEE F4A3 9E6B 30B0 9D55 13F9 78AC CA94Fingerprint From 9cfc933e86a25b5d128df02fffb3a39ce8bf4d80 Mon Sep 17 00:00:00 2001 From: "Tammi L. Coles" Date: Thu, 19 Oct 2023 17:35:17 +0200 Subject: [PATCH 15/44] edit ch4 primary key --- book/source/04-certificates.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/book/source/04-certificates.md b/book/source/04-certificates.md index 0fe1785..31bdede 100644 --- a/book/source/04-certificates.md +++ b/book/source/04-certificates.md @@ -82,17 +82,17 @@ Historically, even shorter 32-bit identifiers were used, like this: `2455 4239`, ### Primary key -The "OpenPGP primary key" is a component key that serves a central role in an OpenPGP certificate: +The OpenPGP primary key is a distinct component key that serves a central role in an OpenPGP certificate: -- Its fingerprint is used as the unique identifier for the full OpenPGP certificate. -- It is used for lifecycle operations, such as adding or invalidating subkeys or identities in a certificate. +- Its fingerprint acts as the unique identifier for the entire OpenPGP certificate. +- It facilitates lifecycle operations, such as adding or invalidating subkeys or identities within a certificate. The validity of the primary key limits its capacity to confer validity to other components. E.g.: The primary key cannot confer an expiration time beyond its own expiration to a subkey. It can also not confer validity to components after it has been revoked. ```{admonition} Terminology :class: note -In the RFC, the OpenPGP primary key is also sometimes referred to as "top-level key." It has also sometimes informally been called "master key." +In the RFC, the OpenPGP primary key is occasionally referred to as "top-level key." Informally, it has also been termed the "master key." ``` ### Subkeys From 23954ef803f27f1579495ef48039b0584a2c3276 Mon Sep 17 00:00:00 2001 From: "Tammi L. Coles" Date: Thu, 19 Oct 2023 17:40:57 +0200 Subject: [PATCH 16/44] edit ch4 subkeys --- book/source/04-certificates.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/book/source/04-certificates.md b/book/source/04-certificates.md index 31bdede..34c745e 100644 --- a/book/source/04-certificates.md +++ b/book/source/04-certificates.md @@ -97,15 +97,15 @@ In the RFC, the OpenPGP primary key is occasionally referred to as "top-level ke ### Subkeys -In addition to the primary key, modern OpenPGP certificates usually contain a number of "subkeys" (however, it's not technically necessary for a certificate to contain subkeys). +In addition to the primary key, modern OpenPGP certificates usually contain several subkeys, although they are not technically required. -Subkeys have the same structure as the primary key, but they are used in a different role. Subkeys are cryptographically linked with the primary key (more on this in {numref}`binding_subkeys`). +Subkeys have the same structural attributes as the primary key but fulfill a different role. Subkeys are cryptographically linked with the primary key (more on this in {numref}`binding_subkeys`). ```{figure} diag/Subkeys.png -:name: Certificate with Subkeys -:alt: Three component keys. The primary key is shown at the top. It can be used for certification. Below it, linked with arrows, are two more component keys, used as subkeys. They are marked as "for encryption" and "for signing", respectively. +:name: Certificate with subkeys +:alt: Three component keys depicted. The primary key is positioned at the top, designated for certification. Below it, linked by arrows, are two more component keys, used as subkeys. They are labeled as "for encryption" and "for signing," respectively. -OpenPGP certificates can contain a number of subkeys +OpenPGP certificates can contain multiple subkeys. ``` ### Key flags: defining which operations a component key can perform From e7bf063c92d74ead0fce37d4e0c36447e267de40 Mon Sep 17 00:00:00 2001 From: "Tammi L. Coles" Date: Thu, 19 Oct 2023 17:44:47 +0200 Subject: [PATCH 17/44] add warning/task regarding capitalization --- book/source/04-certificates.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/book/source/04-certificates.md b/book/source/04-certificates.md index 34c745e..795a741 100644 --- a/book/source/04-certificates.md +++ b/book/source/04-certificates.md @@ -110,6 +110,10 @@ OpenPGP certificates can contain multiple subkeys. ### Key flags: defining which operations a component key can perform +```{admonition} Warning +Let's decide whether the capitalization of F is necessary. +``` + Each component key has a set of ["Key Flags"](https://www.ietf.org/archive/id/draft-ietf-openpgp-crypto-refresh-10.html#key-flags) that specify which operations that key can perform. The commonly used key flags are: From bec23c73f79a646c36d42a5f5f49b2df9c06b60f Mon Sep 17 00:00:00 2001 From: "Tammi L. Coles" Date: Thu, 19 Oct 2023 19:16:11 +0200 Subject: [PATCH 18/44] edit key flags in part --- book/source/04-certificates.md | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/book/source/04-certificates.md b/book/source/04-certificates.md index 795a741..9b8eff3 100644 --- a/book/source/04-certificates.md +++ b/book/source/04-certificates.md @@ -108,21 +108,25 @@ Subkeys have the same structural attributes as the primary key but fulfill a dif OpenPGP certificates can contain multiple subkeys. ``` -### Key flags: defining which operations a component key can perform +#### Defining operational capabilities with Key Flags ```{admonition} Warning Let's decide whether the capitalization of F is necessary. ``` -Each component key has a set of ["Key Flags"](https://www.ietf.org/archive/id/draft-ietf-openpgp-crypto-refresh-10.html#key-flags) that specify which operations that key can perform. +Each component key has a set of ["Key Flags"](https://www.ietf.org/archive/id/draft-ietf-openpgp-crypto-refresh-10.html#key-flags) that delineate the operations a key can perform. -The commonly used key flags are: +Commonly used key flags are: - **C**ertification (issuing third-party certifications) - **S**igning (signing data) - **E**ncryption (encrypting data) - **A**uthentication (commonly used for OpenPGP authentication) +```{admonition} Warning +Accessibility. Is the bolding of C, S, E, A compatible with screenreaders? Is it worth the effort? +``` + By convention, only the primary key is allowed to perform "certification" operations. All other operations can be configured on either the primary key or a subkey. ```{note} From 6abd5336cf4377d9d7336c8ddced0e62a54a536a Mon Sep 17 00:00:00 2001 From: "Tammi L. Coles" Date: Thu, 19 Oct 2023 17:30:13 +0200 Subject: [PATCH 19/44] edit ch4 --- .DS_Store | Bin 0 -> 6148 bytes book/source/04-certificates.md | 38 ++++++++++++++++++--------------- 2 files changed, 21 insertions(+), 17 deletions(-) create mode 100644 .DS_Store diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..eb788aa81b782b77aea7cc134c0e09cd6991f010 GIT binary patch literal 6148 zcmeHK%}T>S5T308EA`N$2PyjiBJ>SniBC|xOB!jV4GI3>(R~bk5f9#d3!g>&W_JkP zq|u9r$V{32lKI)4eEHc95t-S2F(n!k(GbcwIKZ$&*w5OLfmjZKhUeHUr}ITs)}2T- z{8a|{-X(NOOS-1J=>AO}Kel~km1X&+%3;I9;GSPsZ)dT;_|jjmww{fX6sa`Ax(`(0 zS5Qq?w4gP{o2Uv(F8U)|HND&}eN8>{mQ_^YH_=hO{`~+?xvzE|Rd~GrjtU!JtEQ)h zC&_J9(eX#?PAsNYQ3jL&W#Gpdz@E)A90k--8Bhk4frbJ8K3FJYD(C|GPX`9y0ss@3 zz2KO83C^*Csh|r855$C2U`RF6VwjK)yOp?9&;<S eZ^cJYFR)ua0H%U2AS@95Bj9P!K^gc}20j57l4oTA literal 0 HcmV?d00001 diff --git a/book/source/04-certificates.md b/book/source/04-certificates.md index 644d1a5..0fe1785 100644 --- a/book/source/04-certificates.md +++ b/book/source/04-certificates.md @@ -1,7 +1,7 @@ (certificates_chapter)= # Certificates -OpenPGP fundamentally hinges on the concept of "OpenPGP certificates," often referred to as "OpenPGP keys." These certificates are complex data structures essential for identity verification, data encryption, and digital signatures. Understanding their structure and functionality is pivotal for effective application of the OpenPGP standard. +OpenPGP fundamentally hinges on the concept of "OpenPGP certificates," also known as "OpenPGP keys." These certificates are complex data structures essential for identity verification, data encryption, and digital signatures. Understanding their structure and function is pivotal to effectively applying the OpenPGP standard. ## Terminology: Understanding "keys" @@ -27,54 +27,58 @@ For detailed insights on structure and handling, refer to our chapters on OpenPG An OpenPGP certificate (or "OpenPGP key") is a collection of an arbitrary number of elements[^packets]: -[^packets]: In technical terms, the elements of an OpenPGP certificate are a collection "packets". Each component key and identity component is internally represented as one packet. The other common type of element is "signature" packets, which link the components of a certificate together. +[^packets]: In technical terms, the elements of an OpenPGP certificate are a collection of "packets." Each component key and identity component is internally represented as a packet. Another common type of packet is the "signature" packet, which connect the components of a certificate. -- Component OpenPGP keys, -- Identity components, -- Other metadata (this includes connections between the certificate's components). +- Component keys +- Identity components +- Additional metadata, including connections between the certificate's components We sometimes collectively refer to component keys and identity information as "the components of a certificate." +```{admonition} Warning +Please clarify who "we" is in this statement. +``` + ```{figure} diag/OpenPGP_Certificate.png Typical components in an OpenPGP certificate ``` -All elements in an OpenPGP certificate are structured around one central component: the *OpenPGP primary key*. The primary key acts as a personal {term}`CA` for the certificate's owner: It can make cryptographic statements about subkeys, identities, expiration, revocation, ... +Every element in an OpenPGP certificate revolves around a central component: the *OpenPGP primary key*. The primary key acts as a personal CA (Certification Authority) for the certificate's owner, enabling cryptographic statements regarding subkeys, identities, expiration, revocation, and more. ```{note} -OpenPGP certificates are typically long-lived and may be changed (typically by their owner), over time. Components can be added and invalidated, over the lifetime of a certificate +OpenPGP certificates tend to have a long lifespan, with the potential for modifications (typically by their owner) over time. Components may be added or invalidated throughout a certificate's lifetime. ``` ## Component keys -An OpenPGP certificate usually contains multiple OpenPGP component keys. Component keys are used in one of two roles: either as "OpenPGP primary key," or as an "OpenPGP subkey." +An OpenPGP certificate usually contains multiple component keys. Component keys serve in one of two roles: either as an "OpenPGP primary key" or as an "OpenPGP subkey." -OpenPGP component keys logically consist of an [asymmetric cryptographic keypair](asymmetric_key_pair) and a creation timestamp. These attributes of a component key cannot be changed after creation (in the case of ECDH keys, two additional parameters are part of a component key's constituting data[^ecdh-paramters]). +OpenPGP component keys logically consist of an [asymmetric cryptographic keypair](asymmetric_key_pair) and a creation timestamp. Once created, these attributes of a component key remain fixed (for ECDH keys, two additional parameters are part of a component key's constitutive data[^ecdh-parameters]). -[^ecdh-paramters]: For [ECDH](https://www.ietf.org/archive/id/draft-ietf-openpgp-crypto-refresh-10.html#name-algorithm-specific-part-for-ecd) component keys, two additional algorithm parameters are part of the component key's constituting and immutable properties. Those parameters define a hash function and a symmetric encryption algorithm. +[^ecdh-parameters]: For [ECDH](https://www.ietf.org/archive/id/draft-ietf-openpgp-crypto-refresh-10.html#name-algorithm-specific-part-for-ecd) component keys, two additional algorithm parameters are integral to the component key's constitutive and immutable properties. Those parameters specify a hash function and a symmetric encryption algorithm. ```{figure} diag/Component_Key.svg An OpenPGP component key ``` -Component key representations that include private key material also contain metadata that specifies the password protection scheme for the private key material. However, in this chapter, we're looking at *OpenPGP certificates*, which *don't* contain private key information. Each component key of such a certificate contains only the public part of its cryptographic key data. To read more about private keys in OpenPGP, see {numref}`private_key_chapter`. +Component keys containing private key material also contain metadata that specifies the password protection scheme for the private key material. However, in this chapter, we're looking at *OpenPGP certificates*, which *don't* contain private key information. Each component key of such a certificate contains only the public part of its cryptographic key data. To read more about private keys in OpenPGP, see {numref}`private_key_chapter`. ### Fingerprint -For each OpenPGP component key, an *OpenPGP fingerprint* can be derived from the combination of the public key material and creation timestamp (and ECDH parameters, if applicable). +For each OpenPGP component key, an *OpenPGP fingerprint* can be generated. This fingerprint is derived from the combination of the public key material and creation timestamp (and ECDH parameters, if applicable). ```{figure} diag/Fingerprint.png -Every OpenPGP component key can be named by a fingerprint +Every OpenPGP component key is identifiable by a unique fingerprint. ``` -The fingerprint of our example component OpenPGP key is `C0A5 8384 A438 E5A1 4F73 7124 26A4 D45D BAEE F4A3 9E6B 30B0 9D55 13F9 78AC CA94`[^keyid]. +The fingerprint of our example OpenPGP component key is `C0A5 8384 A438 E5A1 4F73 7124 26A4 D45D BAEE F4A3 9E6B 30B0 9D55 13F9 78AC CA94`[^keyid]. -[^keyid]: In OpenPGP version 4, the rightmost 64 bit were sometimes used as a shorter identifier, called "Key ID". -E.g., an OpenPGP version 4 certificate with the fingerprint `B3D2 7B09 FBA4 1235 2B41 8972 C8B8 6AC4 2455 4239` might be referred to by the 64 bit Key ID `C8B8 6AC4 2455 4239` or styled as `0xC8B86AC424554239`. -Historically, even shorter 32 bit identifiers have sometimes been used, like this: `2455 4239`, or `0x24554239`. You may still see such identifiers in very old documents about PGP. However, 32 bit identifiers have [been unfit for purpose for a long time](https://evil32.com/). At some point, 32 bit identifiers were called "short Key ID", while 64 bit identifiers were called "long Key ID". +[^keyid]: In OpenPGP version 4, the rightmost 64 bits were sometimes used as a shorter identifier, called "Key ID." +For example, an OpenPGP version 4 certificate with the fingerprint `B3D2 7B09 FBA4 1235 2B41 8972 C8B8 6AC4 2455 4239` might be referenced by the 64-bit Key ID `C8B8 6AC4 2455 4239` or formatted as `0xC8B86AC424554239`. +Historically, even shorter 32-bit identifiers were used, like this: `2455 4239`, or `0x24554239`. Such identifiers still appear in very old documents about PGP. However, [32-bit identifiers have been long deemed unfit for purpose](https://evil32.com/). At one point, 32-bit identifiers were called "short Key ID," while 64-bit identifiers were referred to as "long Key ID." ### Primary key From f98122526100e365faf9c1a744b43e9abc5a5e10 Mon Sep 17 00:00:00 2001 From: "Tammi L. Coles" Date: Thu, 19 Oct 2023 17:35:17 +0200 Subject: [PATCH 20/44] edit ch4 primary key --- book/source/04-certificates.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/book/source/04-certificates.md b/book/source/04-certificates.md index 0fe1785..31bdede 100644 --- a/book/source/04-certificates.md +++ b/book/source/04-certificates.md @@ -82,17 +82,17 @@ Historically, even shorter 32-bit identifiers were used, like this: `2455 4239`, ### Primary key -The "OpenPGP primary key" is a component key that serves a central role in an OpenPGP certificate: +The OpenPGP primary key is a distinct component key that serves a central role in an OpenPGP certificate: -- Its fingerprint is used as the unique identifier for the full OpenPGP certificate. -- It is used for lifecycle operations, such as adding or invalidating subkeys or identities in a certificate. +- Its fingerprint acts as the unique identifier for the entire OpenPGP certificate. +- It facilitates lifecycle operations, such as adding or invalidating subkeys or identities within a certificate. The validity of the primary key limits its capacity to confer validity to other components. E.g.: The primary key cannot confer an expiration time beyond its own expiration to a subkey. It can also not confer validity to components after it has been revoked. ```{admonition} Terminology :class: note -In the RFC, the OpenPGP primary key is also sometimes referred to as "top-level key." It has also sometimes informally been called "master key." +In the RFC, the OpenPGP primary key is occasionally referred to as "top-level key." Informally, it has also been termed the "master key." ``` ### Subkeys From 9a5ff9f2abc2b23504dd75d73f7945ce00788399 Mon Sep 17 00:00:00 2001 From: "Tammi L. Coles" Date: Thu, 19 Oct 2023 17:40:57 +0200 Subject: [PATCH 21/44] edit ch4 subkeys --- book/source/04-certificates.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/book/source/04-certificates.md b/book/source/04-certificates.md index 31bdede..34c745e 100644 --- a/book/source/04-certificates.md +++ b/book/source/04-certificates.md @@ -97,15 +97,15 @@ In the RFC, the OpenPGP primary key is occasionally referred to as "top-level ke ### Subkeys -In addition to the primary key, modern OpenPGP certificates usually contain a number of "subkeys" (however, it's not technically necessary for a certificate to contain subkeys). +In addition to the primary key, modern OpenPGP certificates usually contain several subkeys, although they are not technically required. -Subkeys have the same structure as the primary key, but they are used in a different role. Subkeys are cryptographically linked with the primary key (more on this in {numref}`binding_subkeys`). +Subkeys have the same structural attributes as the primary key but fulfill a different role. Subkeys are cryptographically linked with the primary key (more on this in {numref}`binding_subkeys`). ```{figure} diag/Subkeys.png -:name: Certificate with Subkeys -:alt: Three component keys. The primary key is shown at the top. It can be used for certification. Below it, linked with arrows, are two more component keys, used as subkeys. They are marked as "for encryption" and "for signing", respectively. +:name: Certificate with subkeys +:alt: Three component keys depicted. The primary key is positioned at the top, designated for certification. Below it, linked by arrows, are two more component keys, used as subkeys. They are labeled as "for encryption" and "for signing," respectively. -OpenPGP certificates can contain a number of subkeys +OpenPGP certificates can contain multiple subkeys. ``` ### Key flags: defining which operations a component key can perform From 17e0efb421943a989a67795aaa8e7481ec809b5d Mon Sep 17 00:00:00 2001 From: "Tammi L. Coles" Date: Thu, 19 Oct 2023 17:44:47 +0200 Subject: [PATCH 22/44] add warning/task regarding capitalization --- book/source/04-certificates.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/book/source/04-certificates.md b/book/source/04-certificates.md index 34c745e..795a741 100644 --- a/book/source/04-certificates.md +++ b/book/source/04-certificates.md @@ -110,6 +110,10 @@ OpenPGP certificates can contain multiple subkeys. ### Key flags: defining which operations a component key can perform +```{admonition} Warning +Let's decide whether the capitalization of F is necessary. +``` + Each component key has a set of ["Key Flags"](https://www.ietf.org/archive/id/draft-ietf-openpgp-crypto-refresh-10.html#key-flags) that specify which operations that key can perform. The commonly used key flags are: From b484018f41ac78d02ba3bb50f28c57e35ab19e4d Mon Sep 17 00:00:00 2001 From: "Tammi L. Coles" Date: Thu, 19 Oct 2023 19:16:11 +0200 Subject: [PATCH 23/44] edit key flags in part --- book/source/04-certificates.md | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/book/source/04-certificates.md b/book/source/04-certificates.md index 795a741..9b8eff3 100644 --- a/book/source/04-certificates.md +++ b/book/source/04-certificates.md @@ -108,21 +108,25 @@ Subkeys have the same structural attributes as the primary key but fulfill a dif OpenPGP certificates can contain multiple subkeys. ``` -### Key flags: defining which operations a component key can perform +#### Defining operational capabilities with Key Flags ```{admonition} Warning Let's decide whether the capitalization of F is necessary. ``` -Each component key has a set of ["Key Flags"](https://www.ietf.org/archive/id/draft-ietf-openpgp-crypto-refresh-10.html#key-flags) that specify which operations that key can perform. +Each component key has a set of ["Key Flags"](https://www.ietf.org/archive/id/draft-ietf-openpgp-crypto-refresh-10.html#key-flags) that delineate the operations a key can perform. -The commonly used key flags are: +Commonly used key flags are: - **C**ertification (issuing third-party certifications) - **S**igning (signing data) - **E**ncryption (encrypting data) - **A**uthentication (commonly used for OpenPGP authentication) +```{admonition} Warning +Accessibility. Is the bolding of C, S, E, A compatible with screenreaders? Is it worth the effort? +``` + By convention, only the primary key is allowed to perform "certification" operations. All other operations can be configured on either the primary key or a subkey. ```{note} From 525734b9a9acf524f18d022e0fddbbfd82ecfa81 Mon Sep 17 00:00:00 2001 From: "Tammi L. Coles" Date: Sat, 21 Oct 2023 12:58:19 +0200 Subject: [PATCH 24/44] ignore .DS_Store --- .DS_Store | Bin 6148 -> 6148 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/.DS_Store b/.DS_Store index eb788aa81b782b77aea7cc134c0e09cd6991f010..e681ef63831a233f939ff9273e30e69ce9307667 100644 GIT binary patch delta 112 zcmZoMXffEJ$`o(2wwZx}frUYjA)O(Up(Hoo#U&{xKM5$t!NAb4`$54`M^yO~yz&JZ bhQZ1CxdlKy3=HWP7$&b{lG;3vDNPgrThkpf delta 112 zcmZoMXffEJ$`mhG|Br!zfrUYjA)O(Up(Hoo#U&{xKM5$t!NAZkb63VuM^yO~yz&JZ bhQZ1CxdlKy3=BFB43pO}No}6TlqL!QL0cR4 From 25af6a907a960979db9341c6a40ea62439ffc1de Mon Sep 17 00:00:00 2001 From: "Tammi L. Coles" Date: Sat, 21 Oct 2023 12:58:44 +0200 Subject: [PATCH 25/44] continue edits to ch4 --- book/source/04-certificates.md | 119 ++++++++++++--------------------- 1 file changed, 44 insertions(+), 75 deletions(-) diff --git a/book/source/04-certificates.md b/book/source/04-certificates.md index 5a317e3..a60e256 100644 --- a/book/source/04-certificates.md +++ b/book/source/04-certificates.md @@ -32,11 +32,7 @@ An OpenPGP certificate (or "OpenPGP key") is a collection of an arbitrary number - Identity components - Additional metadata, including connections between the certificate's components -We sometimes collectively refer to component keys and identity information as "the components of a certificate." - -```{admonition} Warning -Please clarify who "we" is in this statement. -``` +This documentation collectively refers to component keys and identity information as "the components of a certificate." ```{figure} diag/OpenPGP_Certificate.png @@ -51,15 +47,9 @@ OpenPGP certificates tend to have a long lifespan, with the potential for modifi ## Component keys -<<<<<<< HEAD -An OpenPGP certificate usually contains multiple OpenPGP component keys. - -OpenPGP component keys consist of an [asymmetric cryptographic keypair](asymmetric_key_pair) and a creation timestamp. These attributes of a component key cannot be changed after creation (in the case of ECDH keys, two additional parameters are part of a component key's constituting data[^ecdh-paramters]). -======= An OpenPGP certificate usually contains multiple component keys. Component keys serve in one of two roles: either as an "OpenPGP primary key" or as an "OpenPGP subkey." OpenPGP component keys logically consist of an [asymmetric cryptographic keypair](asymmetric_key_pair) and a creation timestamp. Once created, these attributes of a component key remain fixed (for ECDH keys, two additional parameters are part of a component key's constitutive data[^ecdh-parameters]). ->>>>>>> refs/remotes/origin/tammi-ch4 [^ecdh-parameters]: For [ECDH](https://www.ietf.org/archive/id/draft-ietf-openpgp-crypto-refresh-10.html#name-algorithm-specific-part-for-ecd) component keys, two additional algorithm parameters are integral to the component key's constitutive and immutable properties. Those parameters specify a hash function and a symmetric encryption algorithm. @@ -68,39 +58,25 @@ OpenPGP component keys logically consist of an [asymmetric cryptographic keypair An OpenPGP component key ``` -<<<<<<< HEAD -Component key representations that include private key material also contain metadata that specifies the password protection scheme for the private key material. - -======= -Component keys containing private key material also contain metadata that specifies the password protection scheme for the private key material. However, in this chapter, we're looking at *OpenPGP certificates*, which *don't* contain private key information. Each component key of such a certificate contains only the public part of its cryptographic key data. To read more about private keys in OpenPGP, see {numref}`private_key_chapter`. +In OpenPGP, component keys containing private key material include metadata that specifies the password protection scheme. However, this chapter focuses on OpenPGP certificates. The component keys of these certificates contain only the public part of its cryptographic key data. For information on private keys in OpenPGP, see {numref}`private_key_chapter`. ### Fingerprint ->>>>>>> refs/remotes/origin/tammi-ch4 -For each OpenPGP component key, an *OpenPGP fingerprint* can be generated. This fingerprint is derived from the combination of the public key material and creation timestamp (and ECDH parameters, if applicable). +Each OpenPGP component key allows for the generation of an *OpenPGP fingerprint* . This fingerprint is produced based on the public key material, the creation timestamp, and, when relevant, the ECDH parameters. ```{figure} diag/Fingerprint.png Every OpenPGP component key is identifiable by a unique fingerprint. ``` -<<<<<<< HEAD -The fingerprint of our example component OpenPGP key is `AAA1 8CBB 2546 85C5 8358 3205 63FD 37B6 7F33 00F9 FB0E C457 378C D29F 1026 98B3` [^keyid]. -======= The fingerprint of our example OpenPGP component key is `C0A5 8384 A438 E5A1 4F73 7124 26A4 D45D BAEE F4A3 9E6B 30B0 9D55 13F9 78AC CA94`[^keyid]. ->>>>>>> refs/remotes/origin/tammi-ch4 [^keyid]: In OpenPGP version 4, the rightmost 64 bits were sometimes used as a shorter identifier, called "Key ID." For example, an OpenPGP version 4 certificate with the fingerprint `B3D2 7B09 FBA4 1235 2B41 8972 C8B8 6AC4 2455 4239` might be referenced by the 64-bit Key ID `C8B8 6AC4 2455 4239` or formatted as `0xC8B86AC424554239`. Historically, even shorter 32-bit identifiers were used, like this: `2455 4239`, or `0x24554239`. Such identifiers still appear in very old documents about PGP. However, [32-bit identifiers have been long deemed unfit for purpose](https://evil32.com/). At one point, 32-bit identifiers were called "short Key ID," while 64-bit identifiers were referred to as "long Key ID." -Component keys are used in one of two roles: either as "OpenPGP primary key," or as an "OpenPGP subkey". +Component keys are used in one of two roles: either as "OpenPGP primary key" or as an "OpenPGP subkey." -<<<<<<< HEAD -#### Primary key - -======= ->>>>>>> refs/remotes/origin/tammi-ch4 The OpenPGP primary key is a distinct component key that serves a central role in an OpenPGP certificate: - Its fingerprint acts as the unique identifier for the entire OpenPGP certificate. @@ -114,57 +90,43 @@ In the RFC, the OpenPGP primary key is occasionally referred to as "top-level ke ### Subkeys -In addition to the primary key, modern OpenPGP certificates usually contain several subkeys, although they are not technically required. +Modern OpenPGP certificates often include several subkeys in addition to the primary key, although these subkeys are optional. -<<<<<<< HEAD -Subkeys have the same structure as the primary key, but they are used in a different role. Subkeys are cryptographically linked with the primary key (more on this below). -======= -Subkeys have the same structural attributes as the primary key but fulfill a different role. Subkeys are cryptographically linked with the primary key (more on this in {numref}`binding_subkeys`). ->>>>>>> refs/remotes/origin/tammi-ch4 +While subkeys have the same structural attributes as the primary key, they fulfill different roles. Subkeys are cryptographically linked with the primary key, a relationship further discussed in {numref}`binding_subkeys`. ```{figure} diag/Subkeys.png :name: Certificate with subkeys -:alt: Three component keys depicted. The primary key is positioned at the top, designated for certification. Below it, linked by arrows, are two more component keys, used as subkeys. They are labeled as "for encryption" and "for signing," respectively. +:alt: Diagram depicting three component keys. The primary key is positioned at the top, designated for certification. Below it, connected by arrows, are two subkeys labeled as "for encryption" and "for signing," respectively. OpenPGP certificates can contain multiple subkeys. ``` -#### Defining operational capabilities with Key Flags +#### Defining operational capabilities with key flags -```{admonition} Warning -Let's decide whether the capitalization of F is necessary. -``` +Each component key has a set of ["key flags"](https://www.ietf.org/archive/id/draft-ietf-openpgp-crypto-refresh-10.html#key-flags) that delineate the operations a key can perform. -Each component key has a set of ["Key Flags"](https://www.ietf.org/archive/id/draft-ietf-openpgp-crypto-refresh-10.html#key-flags) that delineate the operations a key can perform. +Commonly used key flags include: -Commonly used key flags are: - -- **C**ertification (issuing third-party certifications) -- **S**igning (signing data) -- **E**ncryption (encrypting data) -- **A**uthentication (commonly used for OpenPGP authentication) - -```{admonition} Warning -Accessibility. Is the bolding of C, S, E, A compatible with screenreaders? Is it worth the effort? -``` - -By convention, only the primary key is allowed to perform "certification" operations. All other operations can be configured on either the primary key or a subkey. +- **Certification**: enables issuing third-party certifications +- **Signing**: allows the key to sign data +- **Encryption**: allows the key to encrypt data +- **Authentication**: primarily used for OpenPGP authentication ```{note} -It is considered good practice to have separate component keys for each type of operation: to allow only *Certification* operations with the primary key, and to use separate *Signing*, *Encryption* and *Authentication* subkeys (independently: with most algorithms, encryption can't be shared with the other capabilities[^key-flag-sharing]). +In line with best practices, distinct component keys should handle specific operations. The primary key should be reserved solely for certification, while separate subkeys should be used for signing, encryption, and authentication. Notably, in many algorithms, encryption capability is exclusive and cannot overlap with other operations[^key-flag-sharing]). ``` -[^key-flag-sharing]: With ECC algorithms, it's actually not possible to share encryption functionality with the signing-based functionalities, e.g.: ed25519 used for signing; cv25519 used for encryption. +[^key-flag-sharing]: With ECC algorithms, it's impossible to combine encryption functions with those intended for signing. For example, ed25519 is specifically used for signing; cv25519 is designated for encryption. ### Component key metadata, including key flags -The key flags for a component key are actually not defined *inside* that component key itself. +The key flags for a component key are not stored within the component key directly. -Instead, key flags, together with other metadata about that component key (such as the key expiration time), are stored using mechanisms that join components together as an OpenPGP certificate: +Instead, key flags, along with other metadata about that component key, such as the key expiration time, are stored using mechanisms that group components into an OpenPGP certificate: -- For the primary key, two different mechanisms can be used to define its key flags (as well as other metadata): That configuration can be associated with the [Primary User ID](primary_user_id), or via a [direct key signature](direct_key_signature). -- For subkeys, their key flags (and other metadata) are defined with the mechanism that connects the subkey with the certificate (via the primary key). More on that [below](binding_subkeys). +- For the primary key, its key flags and other metadata can be defined in two ways: they can be linked with the [Primary User ID](primary_user_id) or through a [direct key signature](direct_key_signature). +- For subkeys, the key flags and other metadata are set using the mechanism that ties the subkey to the certificate, specifically through the primary key. Further details on [binding subkeys](binding_subkeys) are below. (identity_components)= @@ -172,27 +134,35 @@ Instead, key flags, together with other metadata about that component key (such Identity components in an OpenPGP certificate are used by the certificate holder to state that they are known by a certain identifier (like a name, or an email address). -### User IDs +### User IDs in OpenPGP certificates -An OpenPGP certificate can contain any number of [User IDs](https://www.ietf.org/archive/id/draft-ietf-openpgp-crypto-refresh-10.html#name-user-id-packet-tag-13). Each User ID associates the certificate with an identity. +OpenPGP certificates can contain multiple [User IDs](https://www.ietf.org/archive/id/draft-ietf-openpgp-crypto-refresh-10.html#name-user-id-packet-tag-13). Each User ID associates the certificate with an identity. ```{figure} diag/user_ids.png OpenPGP certificates can contain any number of User IDs ``` -Often, identities in a User ID consist of a UTF-8 encoded string that is composed of a name and an email address. By convention, User IDs typically consist of an [RFC2822](https://www.rfc-editor.org/rfc/rfc2822) *name-addr*. +```{admonition} Warning +This image could be visually improved! The new image should have an alt tag +``` -Also see [draft-dkg-openpgp-userid-conventions-00](https://datatracker.ietf.org/doc/draft-dkg-openpgp-userid-conventions/), 25 August 2023. +A typical User ID identity is a UTF-8-encoded string composed of a name and an email address. By convention, User IDs align with the format described in [RFC2822](https://www.rfc-editor.org/rfc/rfc2822) as a *name-addr*. + +For further conventions on User IDs, refer to the document [draft-dkg-openpgp-userid-conventions-00](https://datatracker.ietf.org/doc/draft-dkg-openpgp-userid-conventions/), dated 25 August 2023. One proposed variant for encoding identities in User ID is to use ["split User IDs"](https://dkg.fifthhorseman.net/blog/2021-dkg-openpgp-transition.html#split-user-ids). +```{admonition} Warning +Heiko, please clarify what the value is of this proposal or remove it. +``` + (primary_user_id)= -### Primary User ID and its implications +### Implimations of the Primary User ID -One User ID in a certificate has the special property of being the [Primary User ID](https://www.ietf.org/archive/id/draft-ietf-openpgp-crypto-refresh-10.html#name-primary-user-id). +Within a certificate, a specific User ID is desginated as the [Primary User ID](https://www.ietf.org/archive/id/draft-ietf-openpgp-crypto-refresh-10.html#name-primary-user-id). -User IDs are associated with preference settings (such as preferred encryption algorithms, more on this in {numref}`zooming_in_user_id`). The preferences associated with the Primary User ID are used by default. +Each User ID carries associated preference settings, such as preferred encryption algorithms, which is detailed in {numref}`zooming_in_user_id`). The preferences associated with the Primary User ID take precedence by default. ```{admonition} TODO :class: warning @@ -201,23 +171,22 @@ i think crypto-refresh suggests that the direct key signature should hold the de we might need to write a more nuanced text here, about how DKS and primary user id interact in v6, and mention the differences to v4? ``` -### User attributes +### User attributes in OpenPGP +While +[user attributes](https://www.ietf.org/archive/id/draft-ietf-openpgp-crypto-refresh-10.html#name-user-attribute-packet-tag-1) are similar to User IDs, they are less commonly used. -[User attributes](https://www.ietf.org/archive/id/draft-ietf-openpgp-crypto-refresh-10.html#name-user-attribute-packet-tag-1) are similar to User IDs, but less commonly used. - -The OpenPGP standard currently only defines one format to store in User Attributes: an [image](https://www.ietf.org/archive/id/draft-ietf-openpgp-crypto-refresh-10.html#name-the-image-attribute-subpack), "presumably (but not required to be) that of the key owner". +Currently, the OpenPGP standard prescribes only one format for storing user attributes: an [image](https://www.ietf.org/archive/id/draft-ietf-openpgp-crypto-refresh-10.html#name-the-image-attribute-subpack). Typically, this image represents the key owner, but it is not required. ## Linking the components -To form an OpenPGP certificate out of a collection of components, the certificate holder links these components together (using their OpenPGP software). +To form an OpenPGP certificate, individual components are interconnected by the certificate holder using their OpenPGP software. Within OpenPGP, this process is termed "binding," as in "a subkey is bound to the primary key." These bindings are realized using cryptographic signatures. An in-depth discussion of this topic can be found in {ref}`certifications_chapter`). -The OpenPGP term for linking components is "binding," as in: "a subkey is bound to the primary key." The bindings are realized using cryptographic signatures (much more details about this are in {ref}`certifications_chapter`). +In very abstract terms, the primary key of a certificate acts as a root of trust or "certification authority." It is responsible for: -In very abstract terms, the primary key of a certificate acts as a root of trust for that certificate (as a kind of "certification authority"): +- issuing signatures that express the certificate holder's intent to use specific subkeys or identity components. +- conducting other lifecycle operations, including setting expiration dates and marking components as invalidated or "revoked." -The primary key issues signatures that express the certificate holder's intent to use subkeys or identity components. It also performs other lifecycle operations, such as setting expiration times, or marking components as invalidated ("revoked"). - -Binding components together with digital signatures means that recipients of an OpenPGP certificate only need to verify that the primary key is the correct one to use for their communication partner (traditionally, this has often been done by manually verifying the *fingerprint* of the primary key). Once the validity of the primary key is established, the validity of all other components can be automatically determined by the user's OpenPGP software. To a first estimation, components are valid parts of a certificate if there is a statement signed with the certificate's primary key that expresses this validity. +By binding components using digital signatures, recipients of an OpenPGP certificate need only validate the authenticity of the primary key to use for their communication partner. Traditionally, this is done by manually verifying the *fingerprint* of the primary key. Once the validity of the primary key is confirmed, the validity of the remaining components can be automatically assessed by the user's OpenPGP software. Generally, components are valid parts of a certificate if there is a statement signed by the certificate's primary key endorsing this validity. ## Revocations From 173d23bb65af6754837a2e596d981fc47abdf2bd Mon Sep 17 00:00:00 2001 From: "Tammi L. Coles" Date: Sat, 21 Oct 2023 15:01:50 +0200 Subject: [PATCH 26/44] edit ch4, rewrite 3rd-party certifications --- book/source/04-certificates.md | 25 ++++++++++++++++++++----- 1 file changed, 20 insertions(+), 5 deletions(-) diff --git a/book/source/04-certificates.md b/book/source/04-certificates.md index a60e256..88fe208 100644 --- a/book/source/04-certificates.md +++ b/book/source/04-certificates.md @@ -183,7 +183,7 @@ To form an OpenPGP certificate, individual components are interconnected by the In very abstract terms, the primary key of a certificate acts as a root of trust or "certification authority." It is responsible for: -- issuing signatures that express the certificate holder's intent to use specific subkeys or identity components. +- issuing signatures that express the certificate holder's intent to use specific subkeys or identity components; - conducting other lifecycle operations, including setting expiration dates and marking components as invalidated or "revoked." By binding components using digital signatures, recipients of an OpenPGP certificate need only validate the authenticity of the primary key to use for their communication partner. Traditionally, this is done by manually verifying the *fingerprint* of the primary key. Once the validity of the primary key is confirmed, the validity of the remaining components can be automatically assessed by the user's OpenPGP software. Generally, components are valid parts of a certificate if there is a statement signed by the certificate's primary key endorsing this validity. @@ -196,18 +196,33 @@ By binding components using digital signatures, recipients of an OpenPGP certifi This section needs to be written ``` -## Third party (identity) certifications +## Third-party (identity) certifications ```{admonition} TODO :class: warning -This section needs writing +This section needs to be written ``` +Third-party identity certifications have historically played a pivotal role in the OpenPGP ecosystem. -In the past, the SKS keyserver network has accepted third party signatures and added them to certificates without any limitations. This has caused problems: anyone can add a large number of certifications to some certificates, which opens the door to a type of "vandalism", by growing certificates unreasonably, and making them annoying to use[^flooding]. +### Security considerations -[^flooding]: Storing third-party identity certifications in the target OpenPGP certificate is convenient for consumers: it is easy to find all relevant certifications in one central location. However, when third parties can unilaterally add certifications, this opens an avenue for denial-of-service attacks by flooding. The SKS network of OpenPGP key servers [allowed and experienced this problem](https://dkg.fifthhorseman.net/blog/openpgp-certificate-flooding.html). +While a convenience for consumers, indiscriminately accepting and integrating third-party identity certifications comes with significant risks. + +Without any restrictions in place, malicious entities can flood a certificate with excessive certifications. Called "certificate flooding," this form of digital vandalism grossly expands the certificate size, making the certificate cumbersome and impractical for users. + +It also opens the door to potential denial-of-service attacks, rendering the certificate non-functional or significantly impeding its operation. + +The popular [SKS keyserver network experienced certificate flooding firsthand](https://dkg.fifthhorseman.net/blog/openpgp-certificate-flooding.html), causing it to shut down operations in 2019. + +### Improved mechanisms in OpenPGP v6 + +```{admonition} TODO +:class: warning + +This section needs to be written +``` ## Advanced topics From 7e709c6a0040af6b1867d8f783ae879cf8d98a4a Mon Sep 17 00:00:00 2001 From: "Tammi L. Coles" Date: Sun, 22 Oct 2023 11:49:41 +0200 Subject: [PATCH 27/44] manually add issue #73 --- book/source/04-certificates.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/book/source/04-certificates.md b/book/source/04-certificates.md index 88fe208..83105f4 100644 --- a/book/source/04-certificates.md +++ b/book/source/04-certificates.md @@ -19,7 +19,10 @@ In OpenPGP, the term "key" may refer to three distinct layers, each serving a un 2. An OpenPGP *component key* includes either an "OpenPGP primary key" or an "OpenPGP subkey." It is a building block of an OpenPGP certificate, consisting of a cryptographic keypair coupled with some invariant metadata, such as key creation time. 3. An "OpenPGP certificate" (or "OpenPGP key") consists of several component keys, identity components, and other elements. These certificates are dynamic, evolving over time as components are added, expire, or are marked as invalid. -In the following section, we'll look at the two OpenPGP-specific layers (2 and 3). +The following section will delve into the OpenPGP-specific layers (2 and 3) to provide a clearer understanding of their roles within OpenPGP certificates. + +For a discussion of private key material in OpenPGP, see the chapter {ref}`private_key_chapter`. Bindings that connect the components of a certificate are discussed in our chapter {ref}`certifications_chapter`. For much more detail on the internal (packet) structure of certificates and keys refer to our chapter {ref}`zoom_certificates`. Additionally, managing certificates, and understanding their authentication and trust models are vital topics. While this document briefly touches upon these aspects, they are integral to working proficiently with OpenPGP. + ## Structure of OpenPGP certificates From 27a43977cbfd6daae947235f8a1d094c1329b8f1 Mon Sep 17 00:00:00 2001 From: "Tammi L. Coles" Date: Sun, 22 Oct 2023 13:05:35 +0200 Subject: [PATCH 28/44] remove misplaced section --- book/source/04-certificates.md | 4 ---- 1 file changed, 4 deletions(-) diff --git a/book/source/04-certificates.md b/book/source/04-certificates.md index 83105f4..177acfc 100644 --- a/book/source/04-certificates.md +++ b/book/source/04-certificates.md @@ -21,10 +21,6 @@ In OpenPGP, the term "key" may refer to three distinct layers, each serving a un The following section will delve into the OpenPGP-specific layers (2 and 3) to provide a clearer understanding of their roles within OpenPGP certificates. -For a discussion of private key material in OpenPGP, see the chapter {ref}`private_key_chapter`. Bindings that connect the components of a certificate are discussed in our chapter {ref}`certifications_chapter`. For much more detail on the internal (packet) structure of certificates and keys refer to our chapter {ref}`zoom_certificates`. Additionally, managing certificates, and understanding their authentication and trust models are vital topics. While this document briefly touches upon these aspects, they are integral to working proficiently with OpenPGP. - - - ## Structure of OpenPGP certificates An OpenPGP certificate (or "OpenPGP key") is a collection of an arbitrary number of elements[^packets]: From 9e4944064c485ecc37472951b84e58aa59b52b95 Mon Sep 17 00:00:00 2001 From: "Tammi L. Coles" Date: Sun, 22 Oct 2023 13:10:10 +0200 Subject: [PATCH 29/44] manually add issue #73 again --- book/source/04-certificates.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/book/source/04-certificates.md b/book/source/04-certificates.md index 177acfc..aba4595 100644 --- a/book/source/04-certificates.md +++ b/book/source/04-certificates.md @@ -21,6 +21,8 @@ In OpenPGP, the term "key" may refer to three distinct layers, each serving a un The following section will delve into the OpenPGP-specific layers (2 and 3) to provide a clearer understanding of their roles within OpenPGP certificates. +For a discussion of private key material in OpenPGP, see the chapter {ref}`private_key_chapter`. Bindings that connect the components of a certificate are discussed in our chapter {ref}`certifications_chapter`. For much more detail on the internal (packet) structure of certificates and keys refer to our chapter {ref}`zoom_certificates`. Additionally, managing certificates, and understanding their authentication and trust models are vital topics. While this document briefly touches upon these aspects, they are integral to working proficiently with OpenPGP. + ## Structure of OpenPGP certificates An OpenPGP certificate (or "OpenPGP key") is a collection of an arbitrary number of elements[^packets]: From 4febf47bf053d083c0674850cc8fe561cdf6f72a Mon Sep 17 00:00:00 2001 From: Heiko Schaefer Date: Sat, 28 Oct 2023 00:58:26 +0200 Subject: [PATCH 30/44] add TODO note --- book/source/04-certificates.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/book/source/04-certificates.md b/book/source/04-certificates.md index aba4595..61350a9 100644 --- a/book/source/04-certificates.md +++ b/book/source/04-certificates.md @@ -170,6 +170,8 @@ Each User ID carries associated preference settings, such as preferred encryptio i think crypto-refresh suggests that the direct key signature should hold the default preferences? we might need to write a more nuanced text here, about how DKS and primary user id interact in v6, and mention the differences to v4? + +the primary User ID can also specify metadata about the primary key ``` ### User attributes in OpenPGP From 3e3b7477bb86f785309724fa749637d5496d26dc Mon Sep 17 00:00:00 2001 From: Heiko Schaefer Date: Sat, 28 Oct 2023 00:59:25 +0200 Subject: [PATCH 31/44] wording fix --- book/source/04-certificates.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/book/source/04-certificates.md b/book/source/04-certificates.md index 61350a9..42dff2e 100644 --- a/book/source/04-certificates.md +++ b/book/source/04-certificates.md @@ -33,7 +33,7 @@ An OpenPGP certificate (or "OpenPGP key") is a collection of an arbitrary number - Identity components - Additional metadata, including connections between the certificate's components -This documentation collectively refers to component keys and identity information as "the components of a certificate." +This documentation collectively refers to component keys and identity components as "the components of a certificate." ```{figure} diag/OpenPGP_Certificate.png From f0d240c5faa17693e08dae60d728d4cbbff5dcaf Mon Sep 17 00:00:00 2001 From: Heiko Schaefer Date: Sat, 28 Oct 2023 01:02:54 +0200 Subject: [PATCH 32/44] this fixes a git mixup i made --- book/source/04-certificates.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/book/source/04-certificates.md b/book/source/04-certificates.md index 42dff2e..986cc14 100644 --- a/book/source/04-certificates.md +++ b/book/source/04-certificates.md @@ -76,7 +76,7 @@ The fingerprint of our example OpenPGP component key is `C0A5 8384 A438 E5A1 4F7 For example, an OpenPGP version 4 certificate with the fingerprint `B3D2 7B09 FBA4 1235 2B41 8972 C8B8 6AC4 2455 4239` might be referenced by the 64-bit Key ID `C8B8 6AC4 2455 4239` or formatted as `0xC8B86AC424554239`. Historically, even shorter 32-bit identifiers were used, like this: `2455 4239`, or `0x24554239`. Such identifiers still appear in very old documents about PGP. However, [32-bit identifiers have been long deemed unfit for purpose](https://evil32.com/). At one point, 32-bit identifiers were called "short Key ID," while 64-bit identifiers were referred to as "long Key ID." -Component keys are used in one of two roles: either as "OpenPGP primary key" or as an "OpenPGP subkey." +### Primary key The OpenPGP primary key is a distinct component key that serves a central role in an OpenPGP certificate: From c3d7d5f8b5641b6ac32f987d36b5b6d5d2751830 Mon Sep 17 00:00:00 2001 From: Heiko Schaefer Date: Tue, 24 Oct 2023 00:23:30 +0200 Subject: [PATCH 33/44] ch4: updated user ids diagram --- book/source/diag/user_ids.png | Bin 46500 -> 46132 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/book/source/diag/user_ids.png b/book/source/diag/user_ids.png index e479b8c4d030f39811fc4e8128c272e160033528..1acf91b8701bc9a0fa5cc3c201c67ea8cc9dd873 100644 GIT binary patch literal 46132 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

W{tw|TT!XT!EL3c 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 literal 46500 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 G&;JiMJRV{I From e878c637b884a06f367587848a9a50decd0fd119 Mon Sep 17 00:00:00 2001 From: "Tammi L. Coles" Date: Thu, 2 Nov 2023 17:31:14 +0100 Subject: [PATCH 34/44] edit 118 to resolve https://codeberg.org/openpgp/notes/pulls/81#issuecomment-1291275 --- book/source/04-certificates.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/book/source/04-certificates.md b/book/source/04-certificates.md index 986cc14..0538595 100644 --- a/book/source/04-certificates.md +++ b/book/source/04-certificates.md @@ -114,8 +114,7 @@ Commonly used key flags include: - **Authentication**: primarily used for OpenPGP authentication ```{note} - -In line with best practices, distinct component keys should handle specific operations. The primary key should be reserved solely for certification, while separate subkeys should be used for signing, encryption, and authentication. Notably, in many algorithms, encryption capability is exclusive and cannot overlap with other operations[^key-flag-sharing]). +Distinct component keys handle specific operations. The primary key is reserved solely for certification, while separate subkeys are used for signing, encryption, and authentication. Subkeys lack certification capability. Notably, in many algorithms, encryption capability is exclusive and cannot overlap with other operations[^key-flag-sharing]). ``` [^key-flag-sharing]: With ECC algorithms, it's impossible to combine encryption functions with those intended for signing. For example, ed25519 is specifically used for signing; cv25519 is designated for encryption. From 4d695764d08a18055462e35cc2ca9536539da821 Mon Sep 17 00:00:00 2001 From: "Tammi L. Coles" Date: Thu, 2 Nov 2023 17:42:27 +0100 Subject: [PATCH 35/44] connect metadata paragraphs better to resolve https://codeberg.org/openpgp/notes/pulls/81#issuecomment-1291216 --- book/source/04-certificates.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/book/source/04-certificates.md b/book/source/04-certificates.md index 0538595..fe54b53 100644 --- a/book/source/04-certificates.md +++ b/book/source/04-certificates.md @@ -59,7 +59,7 @@ OpenPGP component keys logically consist of an [asymmetric cryptographic keypair An OpenPGP component key ``` -In OpenPGP, component keys containing private key material include metadata that specifies the password protection scheme. However, this chapter focuses on OpenPGP certificates. The component keys of these certificates contain only the public part of its cryptographic key data. For information on private keys in OpenPGP, see {numref}`private_key_chapter`. +In OpenPGP, component keys containing private key material also include metadata specifying the password protection scheme. This is another facet of metadata, akin to the aforementioned creation timestamp and additional parameters for certain algorithms. However, this discussion focuses on OpenPGP certificates, in which the component keys contain only the public part of its cryptographic key data. For information on private keys in OpenPGP, see {numref}`private_key_chapter`. ### Fingerprint From 6d9bf44ba50e9d8e26d4a0ffa06b47ec568b3bd0 Mon Sep 17 00:00:00 2001 From: "Tammi L. Coles" Date: Thu, 2 Nov 2023 17:46:55 +0100 Subject: [PATCH 36/44] change fingerprint language to resolve https://codeberg.org/openpgp/notes/pulls/81#issuecomment-1291232 --- book/source/04-certificates.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/book/source/04-certificates.md b/book/source/04-certificates.md index fe54b53..6b4f746 100644 --- a/book/source/04-certificates.md +++ b/book/source/04-certificates.md @@ -63,7 +63,7 @@ In OpenPGP, component keys containing private key material also include metadata ### Fingerprint -Each OpenPGP component key allows for the generation of an *OpenPGP fingerprint* . This fingerprint is produced based on the public key material, the creation timestamp, and, when relevant, the ECDH parameters. +Each OpenPGP component key possesses an *OpenPGP fingerprint*. This fingerprint is derived from the public key material, the creation timestamp, and, when relevant, the ECDH parameters. ```{figure} diag/Fingerprint.png From dde0eae9007a9850d034daad2915ea8a3837d168 Mon Sep 17 00:00:00 2001 From: "Tammi L. Coles" Date: Thu, 2 Nov 2023 17:52:35 +0100 Subject: [PATCH 37/44] spell out the "not unique" issue to resolve https://codeberg.org/openpgp/notes/pulls/81#issuecomment-1291244 --- book/source/04-certificates.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/book/source/04-certificates.md b/book/source/04-certificates.md index 6b4f746..806e492 100644 --- a/book/source/04-certificates.md +++ b/book/source/04-certificates.md @@ -67,7 +67,7 @@ Each OpenPGP component key possesses an *OpenPGP fingerprint*. This fingerprint ```{figure} diag/Fingerprint.png -Every OpenPGP component key is identifiable by a unique fingerprint. +Every OpenPGP component key is identifiable by a fingerprint. Although it's technically possible for different keys to share a fingerprint, cryptographic mechanisms make it exceedingly difficult, if not practically impossible with current technology, to find keys that share a fingerprint. ``` The fingerprint of our example OpenPGP component key is `C0A5 8384 A438 E5A1 4F73 7124 26A4 D45D BAEE F4A3 9E6B 30B0 9D55 13F9 78AC CA94`[^keyid]. From accdb483013baeebb6d8dcf9d34335dd505dc6cc Mon Sep 17 00:00:00 2001 From: "Tammi L. Coles" Date: Fri, 3 Nov 2023 10:08:55 +0100 Subject: [PATCH 38/44] clarify distinct role of primary key to resolve https://codeberg.org/openpgp/notes/pulls/81#issuecomment-1291268 --- book/source/04-certificates.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/book/source/04-certificates.md b/book/source/04-certificates.md index 806e492..4532011 100644 --- a/book/source/04-certificates.md +++ b/book/source/04-certificates.md @@ -78,7 +78,7 @@ Historically, even shorter 32-bit identifiers were used, like this: `2455 4239`, ### Primary key -The OpenPGP primary key is a distinct component key that serves a central role in an OpenPGP certificate: +The OpenPGP primary key is a component key that serves a distinct, central role in an OpenPGP certificate: - Its fingerprint acts as the unique identifier for the entire OpenPGP certificate. - It facilitates lifecycle operations, such as adding or invalidating subkeys or identities within a certificate. From 0febf20d240987bcc7d07ec5b6f2d291e970efd1 Mon Sep 17 00:00:00 2001 From: "Tammi L. Coles" Date: Fri, 3 Nov 2023 10:10:36 +0100 Subject: [PATCH 39/44] correct that fingerprint is not unique to resolve https://codeberg.org/openpgp/notes/pulls/81#issuecomment-1291270 --- book/source/04-certificates.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/book/source/04-certificates.md b/book/source/04-certificates.md index 4532011..6021318 100644 --- a/book/source/04-certificates.md +++ b/book/source/04-certificates.md @@ -80,7 +80,7 @@ Historically, even shorter 32-bit identifiers were used, like this: `2455 4239`, The OpenPGP primary key is a component key that serves a distinct, central role in an OpenPGP certificate: -- Its fingerprint acts as the unique identifier for the entire OpenPGP certificate. +- Its fingerprint acts as an identifier for the entire OpenPGP certificate. - It facilitates lifecycle operations, such as adding or invalidating subkeys or identities within a certificate. ```{admonition} Terminology From 969fde83b2e6dcc65de088d7d1b62b1ebba0d88c Mon Sep 17 00:00:00 2001 From: "Tammi L. Coles" Date: Fri, 3 Nov 2023 10:14:19 +0100 Subject: [PATCH 40/44] change often to typically to resolve https://codeberg.org/openpgp/notes/pulls/81#issuecomment-1291271 --- book/source/04-certificates.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/book/source/04-certificates.md b/book/source/04-certificates.md index 6021318..9d16d96 100644 --- a/book/source/04-certificates.md +++ b/book/source/04-certificates.md @@ -91,7 +91,7 @@ In the RFC, the OpenPGP primary key is occasionally referred to as "top-level ke ### Subkeys -Modern OpenPGP certificates often include several subkeys in addition to the primary key, although these subkeys are optional. +Modern OpenPGP certificates typically include several subkeys in addition to the primary key, although these subkeys are optional. While subkeys have the same structural attributes as the primary key, they fulfill different roles. Subkeys are cryptographically linked with the primary key, a relationship further discussed in {numref}`binding_subkeys`. From 86ce3d8ce21e63d744922f1f3eec48396cf690a0 Mon Sep 17 00:00:00 2001 From: "Tammi L. Coles" Date: Fri, 3 Nov 2023 10:15:16 +0100 Subject: [PATCH 41/44] change to bind to resolve https://codeberg.org/openpgp/notes/pulls/81#issuecomment-1291278 --- book/source/04-certificates.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/book/source/04-certificates.md b/book/source/04-certificates.md index 9d16d96..45abec7 100644 --- a/book/source/04-certificates.md +++ b/book/source/04-certificates.md @@ -123,7 +123,7 @@ Distinct component keys handle specific operations. The primary key is reserved The key flags for a component key are not stored within the component key directly. -Instead, key flags, along with other metadata about that component key, such as the key expiration time, are stored using mechanisms that group components into an OpenPGP certificate: +Instead, key flags, along with other metadata about that component key, such as the key expiration time, are stored using mechanisms that bind components into an OpenPGP certificate: - For the primary key, its key flags and other metadata can be defined in two ways: they can be linked with the [Primary User ID](primary_user_id) or through a [direct key signature](direct_key_signature). - For subkeys, the key flags and other metadata are set using the mechanism that ties the subkey to the certificate, specifically through the primary key. Further details on [binding subkeys](binding_subkeys) are below. From acb1d9f7e1210895e409daea9f91ca08e8864e24 Mon Sep 17 00:00:00 2001 From: "Tammi L. Coles" Date: Fri, 3 Nov 2023 10:16:00 +0100 Subject: [PATCH 42/44] Resolve https://codeberg.org/openpgp/notes/pulls/81#issuecomment-1291281 --- book/source/04-certificates.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/book/source/04-certificates.md b/book/source/04-certificates.md index 45abec7..dc75cf4 100644 --- a/book/source/04-certificates.md +++ b/book/source/04-certificates.md @@ -126,7 +126,7 @@ The key flags for a component key are not stored within the component key direc Instead, key flags, along with other metadata about that component key, such as the key expiration time, are stored using mechanisms that bind components into an OpenPGP certificate: - For the primary key, its key flags and other metadata can be defined in two ways: they can be linked with the [Primary User ID](primary_user_id) or through a [direct key signature](direct_key_signature). -- For subkeys, the key flags and other metadata are set using the mechanism that ties the subkey to the certificate, specifically through the primary key. Further details on [binding subkeys](binding_subkeys) are below. +- For subkeys, the key flags and other metadata are set using the mechanism that binds the subkey to the certificate, specifically through the primary key. Further details on [binding subkeys](binding_subkeys) are below. (identity_components)= From 783b151af6b7cab4e1c5eb5f54a91d606578d17a Mon Sep 17 00:00:00 2001 From: "Tammi L. Coles" Date: Fri, 3 Nov 2023 10:20:20 +0100 Subject: [PATCH 43/44] Resolve https://codeberg.org/openpgp/notes/pulls/81#issuecomment-1291286 --- book/source/04-certificates.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/book/source/04-certificates.md b/book/source/04-certificates.md index dc75cf4..b53e461 100644 --- a/book/source/04-certificates.md +++ b/book/source/04-certificates.md @@ -177,7 +177,7 @@ the primary User ID can also specify metadata about the primary key While [user attributes](https://www.ietf.org/archive/id/draft-ietf-openpgp-crypto-refresh-10.html#name-user-attribute-packet-tag-1) are similar to User IDs, they are less commonly used. -Currently, the OpenPGP standard prescribes only one format for storing user attributes: an [image](https://www.ietf.org/archive/id/draft-ietf-openpgp-crypto-refresh-10.html#name-the-image-attribute-subpack). Typically, this image represents the key owner, but it is not required. +Currently, the OpenPGP standard prescribes only one format to be stored in user attributes: an [image](https://www.ietf.org/archive/id/draft-ietf-openpgp-crypto-refresh-10.html#name-the-image-attribute-subpack). Typically, this image represents the key owner, although it is not required. ## Linking the components From 8fc4302338c5e1542b95678e9b319124152318a4 Mon Sep 17 00:00:00 2001 From: "Tammi L. Coles" Date: Fri, 3 Nov 2023 10:35:36 +0100 Subject: [PATCH 44/44] resolve https://codeberg.org/openpgp/notes/pulls/81#issuecomment-1317436 --- book/source/04-certificates.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/book/source/04-certificates.md b/book/source/04-certificates.md index b53e461..5cac7d8 100644 --- a/book/source/04-certificates.md +++ b/book/source/04-certificates.md @@ -114,7 +114,9 @@ Commonly used key flags include: - **Authentication**: primarily used for OpenPGP authentication ```{note} -Distinct component keys handle specific operations. The primary key is reserved solely for certification, while separate subkeys are used for signing, encryption, and authentication. Subkeys lack certification capability. Notably, in many algorithms, encryption capability is exclusive and cannot overlap with other operations[^key-flag-sharing]). +Distinct component keys handle specific operations. Only the primary key can be used for certification, although it can have additional capabilities. Subkeys can be used for signing, encryption, and authentication but cannot have the certification capability. It is considered good practice, however, to [use separate keys for each capability](https://www.ietf.org/archive/id/draft-ietf-openpgp-crypto-refresh-12.html#section-10.1.5-7). + +Notably, in many algorithms, encryption and signing-related functionalities (i.e., certification, signing, authentication) are mutually exclusive, because the algorithms only support one of those two families of operations[^key-flag-sharing]). ``` [^key-flag-sharing]: With ECC algorithms, it's impossible to combine encryption functions with those intended for signing. For example, ed25519 is specifically used for signing; cv25519 is designated for encryption.