El bit crítico
OpenPGP en RFC4880 permite etiquetar los subpaquetes de firma como "críticos" al establecer el bit alto 7 en el tipo de paquete. Revisé algunas claves generadas con GnuPG2 y todos los subpaquetes no son críticos, incluso para cosas como "tiempo de expiración de 9 claves".
OpenPGP, RFC 4880, 5.2.3.1. La especificación del subpaquete de firma define el bit crítico. Se puede configurar para informar a las implementaciones anteriores de OpenPGP que, si no comprenden un subpaquete, deben considerar que la firma completa no es válida.
El bit 7 del tipo de subpaquete es el bit "crítico". Si se establece,
denota que el subpaquete es crítico para el evaluador
De la firma a reconocer. Si se encuentra un subpaquete que es
marcado crítico pero es desconocido para el software de evaluación, el
El evaluador DEBE considerar que la firma está en error.
Entonces, si una nueva versión de OpenPGP define nuevos tipos de firmas, y la firma está restringida de alguna manera que las implementaciones anteriores no entenderán, podría tener la nueva implementación de OpenPGP tener el bit crítico establecido para denotar "Si no" No entiendo el subpaquete de firma, considere la firma completa como no válida ".
Como todos esos subpaquetes se definieron al mismo tiempo que se definió el bit crítico, las implementaciones completas deberían admitirlas de todos modos.
¿Existe un acuerdo para no usar el servicio crítico para paquetes bien conocidos (es decir, especificados en el RFC)?
Los RFC relevantes para OpenPGP (especialmente 4880) no mencionan detalles sobre cuándo no para usarlo.
Configuración del bit crítico en GnuPG
¿Puedo controlar qué paquete está marcado como crítico cuando utilizo GnuPG CLI para crear una firma de clave?
man gpg2
muestra algunos casos de uso, en los que puede configurar el bit crítico para notaciones y URI de servidor / política clave con el prefijo !
:
--sig-keyserver-url string
Utilice la cadena como una URL de servidor de claves preferida para las firmas de datos. Si lo prefieres con un signo de exclamación (!), El paquete de URL del servidor de claves se marcará como crítico.
Interoperabilidad
¿Se esperan los problemas de interoperabilidad?
Bueno, el bit crítico está destinado a evitar la interoperabilidad "rota", cuando una implementación anterior no implementa nuevas funciones importantes. Entonces, hasta cierto punto, evita la operabilidad, pero al mismo tiempo es por eso que se configuró después de todo.