驗證 GPG 加密檔案是否由特定使用者簽名

驗證 GPG 加密檔案是否由特定使用者簽名

我有一個由 GPG 加密和簽署的檔案。

在裡面gpg 的手冊頁,對於該--decrypt選項,它說:

如果解密的檔案已簽名,則簽名也會被驗證。

我想做的不僅僅是驗證簽名是否有效“如果文件已簽名” - 我想做:

  • 檢查該文件是否
  • 檢查簽名是否來自我的金鑰環中的特定使用者或使用者子集

可以使用什麼 gpg 指令來執行此操作?

答案1

--decrypt選項已經完成了大部分工作。

$gpg --decrypt < 測試.gpg
gpg:使用4096位元RSA金鑰加密,ID CE7B5510340F19EF,建立於2009-10-31
      “重力<[電子郵件受保護]>”
WELL(或稱「全球電子連結」)是前沿領域最新事物的一個例子
村莊,電腦公告牌。在這樣的小鎮裡,主街是一條
中央小型計算機(在 WELL 的情況下)多達 64 台微型計算機
可以透過電話線和稱為數據機的閃爍小盒子同時連接。
gpg:簽名於 2015-05-15T07:52:55 EEST 製作
gpg:使用 RSA 金鑰 D24F6CB2C1B52632
gpg:來自“grawity <的好簽名”[電子郵件受保護]>”[終極]
gpg:又稱「重力<[電子郵件受保護]>”[終極]

對於機器可讀的信息,您可以使用--status-fd

[GNUPG:] ENC_TO CE7B5510340F19EF 1 0
[GNUPG:] BEGIN_DECRYPTION
[GNUPG:] DECRYPTION_INFO 2 9
[GNUPG:] 明文 62 1431665575
[GNUPG:] 新聞資訊格
[GNUPG:] SIG_ID 8AaWsnfpINFLIVjEqk665x7fuKA 2015-05-15 1431665575
[GNUPG:] GOODSIG D24F6CB2C1B52632 重力 <[電子郵件受保護]>
[GNUPG:] NOTATION_NAME[電子郵件受保護]
[GNUPG:] NOTATION_DATA 2357E10CEF4F7ED27E233AD5D24F6CB2C1B52632
[GNUPG:] VALIDSIG 2357E10CEF4F7ED27E233AD5D24F6CB2C1B52632 2015-05-15 1431665575 0 4 0 1 10 00 2357EED65575 0 4 0 1 10 00 2357EED05575 10F23625FFJC
[GNUPG:] TRUST_ULTIMATE
[GNUPG:] 解密_好的
[GNUPG:] GOODDMDC
[GNUPG:] END_DECRYPTION

此處GOODSIGVALIDSIG都表示已檢查簽名,並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]

相關內容