验证 GPG 加密文件是否由特定用户签名

Cra*_*een 9 digital-signature gnupg

我有一个由 GPG 加密和签名的文件。

gpg手册页中,对于该--decrypt选项,它说:

如果解密的文件被签名,则签名也被验证。

我想做的不仅仅是验证签名是否有效“如果文件已签名”——我想:

  • 检查文件是否已签名
  • 检查签名是否来自我的密钥环中的特定用户或用户子集

什么 gpg 命令可用于执行此操作?

use*_*686 6

--decrypt选项已经完成了大部分工作。

$ gpg --decrypt < test.gpg
gpg:使用 4096 位 RSA 密钥加密,ID CE7B5510340F19EF,创建于 2009-10-31
      “grawity <grawity@gmail.com>”
WELL(或 Whole Earth 'Lectronic Link)是前沿最新事物的一个例子
村里,电脑布告栏。在这样的小镇,大街是一条
中央微型计算机(在 WELL 的情况下)多达 64 台微型计算机
可以通过电话线和称为调制解调器的小闪烁盒子一次连接。
gpg:签名制作 2015-05-15T07:52:55 EEST
gpg:使用 RSA 密钥 D24F6CB2C1B52632
gpg:来自“grawity <grawity@gmail.com>”的好签名 [ultimate]
gpg:又名“grawity <grawity@example.org>”[终极]

对于机器可读的信息,您可以使用--status-fd.

[GNUPG:] ENC_TO CE7B5510340F19EF 1 0
[GNUPG:] BEGIN_DECRYPTION
[GNUPG:] DECRYPTION_INFO 2 9
[GNUPG:] 明文 62 1431665575 
[GNUPG:] NEWSIG
[GNUPG:] SIG_ID 8AaWsnfpINFLIVjEqk665x7fuKA 2015-05-15 1431665575
[GNUPG:] GOODSIG D24F6CB2C1B52632 grawity <grawity@gmail.com>
[GNUPG:] NOTATION_NAME issuer-fpr@notations.openpgp.fifthhorseman.net
[GNUPG:] NOTATION_DATA 2357E10CEF4F7ED27E233AD5D24F6CB2C1B52632
[GNUPG:] VALIDSIG 2357E10CEF4F7ED27E233AD5D24F6CB2C1B52632 2015-05-15 1431665575 0 4 0 1 10 00 2357E10CEF4F335D6D3CEF2C1B52632ECB2C1B52632D2
[GNUPG:] TRUST_ULTIMATE
[GNUPG:] DECRYPTION_OKAY
[GNUPG:] GOODMDC
[GNUPG:] END_DECRYPTION

双方GOODSIGVALIDSIG在此意味着签名进行检查,TRUST_*对应于该密钥的认证级别。例如,您直接签名(或 lsigned)的密钥将具有 TRUST_FULL。

您可以将其包装在一个脚本中,该脚本将根据密钥白名单检查 VALIDSIG 中的指纹,或者仅依赖于密钥信任模型。

请注意,您无法在不先解密文件的情况下检查文件是否已签名,因为 PGP 使用先签名后加密。