Il bit critico
OpenPGP in RFC4880 allow to tag signature sub packets as "critical" by setting the high bit 7 in the packet type. I checked a few keys generated with GnuPG2 and all the sub packets are not critical, even for things like "9 - key expiration time".
OpenPGP, RFC 4880, 5.2.3.1. La specifica del sottoprogramma della firma definisce il bit critico. Può essere impostato per informare le implementazioni precedenti di OpenPGP che, se non comprendono un sotto pacchetto, dovrebbero considerare l'intera firma come non valida.
Bit 7 of the subpacket type is the "critical" bit. If set, it
denotes that the subpacket is one that is critical for the evaluator
of the signature to recognize. If a subpacket is encountered that is
marked critical but is unknown to the evaluating software, the
evaluator SHOULD consider the signature to be in error.
Quindi, se una nuova versione di OpenPGP definisce nuovi tipi di firme e una firma è limitata in qualche modo che le implementazioni precedenti non comprenderanno, potresti avere la nuova implementazione OpenPGP che ha il bit critico impostato per denotare "Se non lo fai" t comprendere il subpacket della firma, considerare l'intera firma come non valida ".
Poiché tutti quei sottopackets sono stati definiti nello stesso momento in cui è stato definito il bit critico, le implementazioni a pieno titolo dovrebbero comunque supportarli.
Is there an agreement to not use critical for well known (i.e. specified in the RFC) packets?
Le RFC rilevanti per OpenPGP (specialmente 4880) non menzionano dettagli su quando non per usarlo.
Impostazione del bit critico in GnuPG
Can I control which packet is marked critical when using GnuPG CLI to create a key signature?
man gpg2
mostra alcuni casi d'uso, in cui puoi impostare il bit critico per le notazioni e gli URI del server / chiave della chiave prefissando !
:
--sig-keyserver-url string
Use string as a preferred keyserver URL for data signatures. If you prefix it with an exclamation mark (!), the keyserver URL packet will be flagged as critical.
Interoperabilità
Are the interoperability issues expected?
Bene, il bit critico è inteso per l'interoperabilità impedisce "interrotta", quando un'implementazione precedente non implementa nuove importanti funzionalità. Quindi, in una certa misura, impedisce l'operabilità , ma allo stesso tempo è per questo che è stato impostato dopo tutto.