OpenPGP/X.509桥接器: 如何验证公钥?

4
我想使用OpenPGP身份验证通过TLS,但缺乏实现使我使用了一个临时解决方案:OpenPGP / X.509桥接证书。
这种方法与Foaf中使用的方法非常相似:
https://svn.java.net/svn/sommer~svn/trunk/misc/FoafServer/pgpx509/src/net/java/dev/sommer/foafserver/utils/PgpX509Bridge.java 基本上,您可以从转换后的PGP私钥开始创建证书请求,将转换后的PGP公钥包含在证书请求中。然后,您使用转换后的PGP私钥签署请求。
我使用“converted”一词,因为OpenPGP和OpenSSL密钥格式不兼容:我必须从OpenPGP密钥中提取密钥参数,并使用它们形成新的X.509兼容(OpenSSL)密钥。尽管如此,它的表现符合预期。
结果是一个X.509证书,其中包含公钥的PGP公钥参数,但没有用户ID和公钥签名,因此无法用于身份验证目的。
缺失的部分是服务器身份验证。服务器先前已签署了用户的PGP公钥,但是如何通过X.509桥接证书进行验证?
即使我将我的PGP用户ID用作CN(通用名称),我如何证明它是源OpenPGP密钥中使用的相同用户ID? X.509桥接证书上没有公钥签名,只有相同的密钥参数。我可以安全地根据这些检查吗?
虽然我必须在Python中执行此操作,但一般而言如何继续进行的任何建议都将非常有帮助。
1个回答

1

我在密码学方面得到了答案: https://crypto.stackexchange.com/a/11709/9284

如果您可以将整个PGP证书放入专有的非关键扩展中,那么您就不需要在存储库中找到PGP证书。这种解决方案取决于您能否创建自己的OID并将PGP证书插入扩展中。此外,服务器应接受这样的证书并包含验证PGP证书的方法。

CA可以接受或拒绝包含PGP证书的请求。它至少应检查PGP证书中的密钥是否与已签名请求中的密钥匹配。一种验证方法是验证PGP和X5.09公钥的模数是否匹配。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接