mirror of
https://codeberg.org/openpgp/notes.git
synced 2025-09-10 11:49:40 +02:00
Align styling of "User ID" with RFC
This commit is contained in:
parent
bc25296cec
commit
f211c7b00d
1 changed files with 10 additions and 10 deletions
|
@ -50,7 +50,7 @@ The same reference time must be used when verifying additional qualifying signat
|
||||||
|
|
||||||
Some signatures can be verified on their own, while others require the verification of additional signatures on the issuer certificate. We will call the former category *self-qualifying* signatures.
|
Some signatures can be verified on their own, while others require the verification of additional signatures on the issuer certificate. We will call the former category *self-qualifying* signatures.
|
||||||
Typically, self-qualifying signatures are self-signatures, meaning signatures issued by an OpenPGP key over its own components.
|
Typically, self-qualifying signatures are self-signatures, meaning signatures issued by an OpenPGP key over its own components.
|
||||||
Examples for self-qualifying signatures are direct-key self-signatures (0x1F), User-ID self-certifications (0x10-0x13), key-revocation self-signatures (0x20), certification revocation self-signatures (0x30) or signatures used to bind or revoke subkeys (0x18, 0x19, 0x28).
|
Examples for self-qualifying signatures are direct-key self-signatures (0x1F), User ID self-certifications (0x10-0x13), key-revocation self-signatures (0x20), certification revocation self-signatures (0x30) or signatures used to bind or revoke subkeys (0x18, 0x19, 0x28).
|
||||||
|
|
||||||
Examples for signatures which are not self-qualifying are data signatures (0x00, 0x01) and signatures issued over third-party certificates, such as third-party direct-key signatures (0x1F) or key-revocations (0x20), third-party certification or revocation signatures (0x10-0x13, 0x30).
|
Examples for signatures which are not self-qualifying are data signatures (0x00, 0x01) and signatures issued over third-party certificates, such as third-party direct-key signatures (0x1F) or key-revocations (0x20), third-party certification or revocation signatures (0x10-0x13, 0x30).
|
||||||
|
|
||||||
|
@ -128,15 +128,15 @@ There might be more than one candidate for such a signature.
|
||||||
For example, there might be multiple subkey binding signatures for the same subkey.
|
For example, there might be multiple subkey binding signatures for the same subkey.
|
||||||
In general, for each category of signatures, only that with the latest signature creation time is considered and takes precendence.
|
In general, for each category of signatures, only that with the latest signature creation time is considered and takes precendence.
|
||||||
|
|
||||||
Alternatively, there might be competing qualifying signatures of different types, e.g. a direct-key signature and a self-certification signature on a primary User-ID.
|
Alternatively, there might be competing qualifying signatures of different types, e.g. a direct-key signature and a self-certification signature on a primary User ID.
|
||||||
In this case, depending on how a key is "addressed", different attributes from both candidates "shadow" another.
|
In this case, depending on how a key is "addressed", different attributes from both candidates "shadow" another.
|
||||||
|
|
||||||
```
|
```
|
||||||
TODO: Replace hash algorithm preferences with AEAD preferences for a more realistic example.
|
TODO: Replace hash algorithm preferences with AEAD preferences for a more realistic example.
|
||||||
```
|
```
|
||||||
|
|
||||||
For example, the latest direct-key signature could list "SHA512, SHA384" as hash algorithm preferences, while the latest self-certification of User-ID "Bob" could list "SHA256" only.
|
For example, the latest direct-key signature could list "SHA512, SHA384" as hash algorithm preferences, while the latest self-certification of User ID "Bob" could list "SHA256" only.
|
||||||
For yet another User-ID "Bobby", the self-signature could list no hash algorithm preferences at all.
|
For yet another User ID "Bobby", the self-signature could list no hash algorithm preferences at all.
|
||||||
If the user wants to compose a signed message using the associated OpenPGP key, they need to figure out, which preferences to use.
|
If the user wants to compose a signed message using the associated OpenPGP key, they need to figure out, which preferences to use.
|
||||||
The specification recommends, that implementations decide which signature takes precendence by the way the certificate is "addressed".
|
The specification recommends, that implementations decide which signature takes precendence by the way the certificate is "addressed".
|
||||||
|
|
||||||
|
@ -148,26 +148,26 @@ Preferrences are sourced from different component signatures, depending on how t
|
||||||
If the user wants to write an email as "Bob", it should consider the signature on "Bob", so SHA256 should be used as hash algorithm.
|
If the user wants to write an email as "Bob", it should consider the signature on "Bob", so SHA256 should be used as hash algorithm.
|
||||||
If instead the user wants to write as "Bobby", the impementation should inspect the self-certification on "Bobby" instead.
|
If instead the user wants to write as "Bobby", the impementation should inspect the self-certification on "Bobby" instead.
|
||||||
However, since this signature does not carry any hash algorithm preferences subpacket, the implementation must fall back to the direct-key signature instead.
|
However, since this signature does not carry any hash algorithm preferences subpacket, the implementation must fall back to the direct-key signature instead.
|
||||||
The same is true, if the certificate is used without any User-ID as sender.
|
The same is true, if the certificate is used without any User ID as sender.
|
||||||
|
|
||||||
But it gets more complicated still.
|
But it gets more complicated still.
|
||||||
Algorithm preferences can also "live" on subkey binding signatures, so if the certificate has a dedicated signing subkey, there is yet another signature which could take precendence.
|
Algorithm preferences can also "live" on subkey binding signatures, so if the certificate has a dedicated signing subkey, there is yet another signature which could take precendence.
|
||||||
Preferences from the subkey binding signature take precendence over the direct-key signature, but not over self-certifications on the User-ID.
|
Preferences from the subkey binding signature take precendence over the direct-key signature, but not over self-certifications on the User ID.
|
||||||
|
|
||||||
TODO: Have a table that lists which signatures take precendence in which cases.
|
TODO: Have a table that lists which signatures take precendence in which cases.
|
||||||
|
|
||||||
There can be more than one signature on a component. For example, there could be 3 direct-key signatures, e.g. because the user extended the lifespan of their key 2 times already.
|
There can be more than one signature on a component. For example, there could be 3 direct-key signatures, e.g. because the user extended the lifespan of their key 2 times already.
|
||||||
In general, for each component, only the newest self-signature is "in effect", and older signatures are "shadowed".
|
In general, for each component, only the newest self-signature is "in effect", and older signatures are "shadowed".
|
||||||
For each certificate, there is at most one "active" direct-key signature, for each User-ID at most one active self-certification and for each subkey exactly one subkey binding.
|
For each certificate, there is at most one "active" direct-key signature, for each User ID at most one active self-certification and for each subkey exactly one subkey binding.
|
||||||
TODO: Direct-Key Signaures can be revoked, canceling them, meaning an older one might get active?
|
TODO: Direct-Key Signaures can be revoked, canceling them, meaning an older one might get active?
|
||||||
|
|
||||||
## Complexity of the packet format
|
## Complexity of the packet format
|
||||||
|
|
||||||
Unfortunately, the OpenPGP packet format allows for quite a lot of flexibility when composing certificates.
|
Unfortunately, the OpenPGP packet format allows for quite a lot of flexibility when composing certificates.
|
||||||
User-ID packets for example, are not fixed with regards to their position, which means that an attacker (or canonicalizer) can change the order in which User-IDs appear in the certificates packet sequence.
|
User ID packets for example, are not fixed with regards to their position, which means that an attacker (or canonicalizer) can change the order in which User IDs appear in the certificates packet sequence.
|
||||||
|
|
||||||
As a concrete example, consider a certificate with multiple User-IDs, all marked as primary. Or equaly, a certificate with multiple User-IDs of which none is marked as primary.
|
As a concrete example, consider a certificate with multiple User IDs, all marked as primary. Or equaly, a certificate with multiple User IDs of which none is marked as primary.
|
||||||
Clients might apply different heuristics to figure out, which User-ID actually qualifies as the primary User-ID here.
|
Clients might apply different heuristics to figure out, which User ID actually qualifies as the primary User ID here.
|
||||||
|
|
||||||
You might wonder, which signature on the primary key takes precendence in case of multiple signature candidates with conflicting signature subpackets.
|
You might wonder, which signature on the primary key takes precendence in case of multiple signature candidates with conflicting signature subpackets.
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue