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

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

我有一个用 GPG 加密并签名的文件。

在里面gpg 的手册页对于--decrypt选项,它说:

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

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

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

可以使用什么 gpg 命令来执行此操作?

答案1

--decrypt选项已经完成大部分功能。

$gpg --decrypt < test.gpg
gpg:使用 4096 位 RSA 密钥加密,ID CE7B5510340F19EF,创建于 2009-10-31
      “重力<[电子邮件保护]>”
WELL(全地球电子链接)是前沿领域最新事物的一个例子
村庄,电脑公告板。在这种小镇里,主街是
中央小型计算机,其中(就 WELL 而言)有多达 64 台微型计算机
可以通过电话线和称为调制解调器的小闪烁盒子同时连接。
gpg:签名于 2015-05-15T07:52:55 EEST 完成
gpg:使用 RSA 密钥 D24F6CB2C1B52632
gpg: 来自“gravity <[电子邮件保护]>“[终极]
gpg:又名“grawity<[电子邮件保护]>“[终极]

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

[GNUPG:] ENC_TO CE7B5510340F19EF 1 0
[GNUPG:] BEGIN_解密
[GNUPG:] 解密信息 2 9
[GNUPG:] 明文 62 1431665575
[GNUPG:] 新闻人物
[GNUPG:] SIG_ID 8AaWsnfpINFLIVjEqk665x7fuKA 2015-05-15 1431665575
[GNUPG:] GOODSIG D24F6CB2C1B52632 重力 <[电子邮件保护]>
[GNUPG:] 注释_名称[电子邮件保护]
[GNUPG:] 注释_数据 2357E10CEF4F7ED27E233AD5D24F6CB2C1B52632
[GNUPG:] VALIDSIG 2357E10CEF4F7ED27E233AD5D24F6CB2C1B52632 2015-05-15 1431665575 0 4 0 1 10 00 2357E10CEF4F7ED27E233AD5D24F6CB2C1B52632
[GNUPG:] TRUST_ULTIMATE
[GNUPG:] 解密成功
[GNUPG:] GOODMDC
[GNUPG:] 解密结束

GOODSIG此处的和均VALIDSIG表示已检查签名,并TRUST_*对应于该密钥的认证级别。例如,您直接签名(或 lsigned)的密钥将具有 TRUST_FULL。

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

请注意不能检查文件是否已签名而无需先解密,因为 PGP 使用先签名后加密的方式。

答案2

gpg --decrypt < data.pgp > /dev/null

这将导致以下输出:

gpg: encrypted with 4096-bit RSA key, ID B91FFCCDDEE362261A, created 2015-05-21
      "Shubham Chaudhary <[email protected]>"
gpg: Signature made Mon Aug 21 23:13:03 2017 IST
gpg:                using RSA key 71B6BEEFEED2DCA
gpg:                issuer "Shubham Chaudhary <[email protected]>"
gpg: Good signature from "Shubham Chaudhary <[email protected]>" [ultimate]

相关内容