我正在尝试验证我下载的 GPG4win 文件是否合法。我可以访问已验证 GnuPG 安装的计算机。我运行了
> gpg --recv EC70B1B8
> gpg -v --verify gpg4win-2.3.3.exe.sig gpg4win-2.3.3.exe
Version: GnuPG v1.4.12 (GNU/Linux)
gpg: armor header:
gpg: Signature made Thu 18 Aug 2016 05:20:50 AM EDT using DSA key ID EC70B1B8
gpg: using PGP trust model
gpg: Good signature from "Intevation File Distribution Key <[email protected]>"
gpg: WARNING: This key is not certified with a trusted signature!
gpg: There is no indication that the signature belongs to the owner.
Primary key fingerprint: 61AC 3F5E E4BE 593C 13D6 8B1E 7CBD 620B EC70 B1B8
gpg: binary signature, digest algorithm SHA1
我担心的是主密钥指纹与他们网站上的代码签名证书不匹配:
代码签名证书 自 2016 年 4 月以来,所有 Gpg4win exe 安装程序文件均使用以下代码签名证书进行签名:
S/N: 1121A3D67EAB28AA86FD85728B57FA62630D Issuer: CN=GlobalSign CodeSigning CA - SHA256 - G2,O=GlobalSign nv-sa,C=BE Subject: 1.2.840.113549.1.9.1=#636F64657369676E696E6740696E7465766174696F6E2E6465,CN=Intevation
GmbH,O=Intevation GmbH,L=奥斯纳布吕克,ST=下萨克森,C=DE sha1_fpr:DE:16:D5:97:2F:0B:73:95:F7:D9:1E:DC:1F:21:9B:0F:FE:89:FA:B3 md5_fpr:C0:98:08:94:D4:E7:97:3E:9D:F4:18:E4:5E:0A:2E:D7 notBefore:2016-03-30 16:54:41 notAfter:2019-03-31 16:54:41
我正在将其sha1_fpr
与主键指纹进行比较。难道这不是正确的做法吗?
答案1
您正在比较不同类型的签名。 中的签名gpg4win-2.3.3.exe.sig
是 OpenPGP 签名,您可以通过 GnuPG 进行验证(但 Windows 不支持 OpenPGP)。另一方面,代码签名证书(例如,由 Windows 进行验证)是 X.509 证书。此签名嵌入在文件中gpg4win-2.3.3.exe
。如果我没记错的话,您应该能够通过SignTool verify gpg4win-2.3.3.exe
。
尽管 OpenPGP 和 X.509 证书基本上都依赖于相同的加密原理(即 RSA 密钥),但它们的密钥和证书并不兼容。虽然您可以使用相同的 RSA 密钥对创建证书,但它们仍然不同并且具有不同的指纹:其中包含不同的信息。
一个重要的区别还在于底层的信任系统:OpenPGP 依赖于信任网络(您正在从您自己的或其他受信任和验证的密钥开始搜索信任路径;您还没有这样做,因此消息在不受信任的签名上),X.509 使用分层方法:所谓的证书颁发机构受到信任并被允许为其他人颁发证书(这里是 Global Sign)。