我有一个用 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]