Authentication

OpenPGP/X.509 網橋:如何驗證公鑰?

  • November 13, 2013

我想通過 TLS 使用 OpenPGP 身份驗證,但由於缺乏實現,我使用了一個臨時解決方案: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 證書,其中包含 X.509 證書的公鑰中使用的 PGP 公鑰參數,但沒有使用者 ID 和公鑰簽名,因此無法用於身份驗證。

這裡缺少的部分是伺服器身份驗證。伺服器之前已經簽署了使用者的 PGP 公鑰,但是我如何通過 X.509 橋接證書來驗證呢?

即使我使用我的 PGP 使用者 ID 作為我的 CN(通用名稱),我如何證明它與原始 OpenPGP 密鑰中使用的使用者 ID 相同?

X.509 網橋證書上沒有公鑰簽名,只有相同的密鑰參數。我可以安全地檢查這些嗎?

如果您可以將整個 PGP 證書放在專有的非關鍵擴展中,那麼您不需要在商店中查找 PGP 證書。此解決方案取決於您能夠創建自己的 OID 並在擴展中插入 PGP 證書的條件。此外,伺服器應該接受這樣的證書並包含驗證 PGP 證書的方法。

CA 可以接受或拒絕包含 PGP 證書的請求。它至少應該檢查 PGP 證書中的密鑰是否與簽名請求中的密鑰匹配。這樣做的一種方法是驗證 PGP 的模數和 X5.09 公鑰匹配。

引用自:https://crypto.stackexchange.com/questions/11582