OpenPGP in RFC4880允许通过设置数据包类型中的高位7将签名子数据包标记为“关键”。我检查了用GnuPG2生成的几个密钥,所有的子包都不是关键的,即使是"9键过期时间“。
所以我想知道:
发布于 2016-03-13 13:57:46
OpenPGP in RFC4880允许通过设置数据包类型中的高位7将签名子数据包标记为“关键”。我检查了用GnuPG2生成的几个密钥,所有的子包都不是关键的,即使是"9键过期时间“。
OpenPGP,RFC 4880,5.2.3.1。签名子分组规范定义了关键位。可以将其设置为通知OpenPGP的旧实现,如果它们不理解子包,则应将整个签名视为无效。
第7位的子包类型是“关键”位。如果设置了,则表示子数据包对于签名的评估器识别至关重要。如果遇到标记为关键但评估软件不知道的子数据包,评估者应该认为签名是错误的。
因此,如果OpenPGP的新版本定义了新类型的签名,并且某个签名受到了旧实现无法理解的某种限制,那么您可以让更新的OpenPGP实现设置关键位来表示“如果您不理解签名子包,则将整个签名视为无效”。
由于所有这些子包都是在定义关键位的同时定义的,所以成熟的实现无论如何都应该支持这些子包。
是否有协议不对众所周知的(即在RFC中指定的)数据包使用关键?
与OpenPGP相关的RFCs (特别是4880)没有提到何时不使用它的细节。
中设置关键位
在使用GnuPG CLI创建密钥签名时,我可以控制哪个数据包被标记为关键数据包吗?
man gpg2展示了一些用例,在这些用例中,您可以通过前缀!来设置符号和密钥服务器/策略URI的关键位:
--sig-keyserver-url string使用字符串作为数据签名的首选密钥服务器URL。如果在其前缀加上感叹号(!),则键服务器URL数据包将被标记为“关键”。
是否期望出现互操作性问题?
当旧的实现没有实现重要的新特性时,关键的bit是为了防止“损坏”的互操作性。因此,在某种程度上,它阻碍了可操作性,但同时,这也是为什么它被设定下来。
https://security.stackexchange.com/questions/117303
复制相似问题