5

У меня есть файл, зашифрованный и подписанный GPG.

На странице руководства для gpg, для опции --decrypt , написано:

Если расшифрованный файл подписан, подпись также проверяется.

Я хотел бы сделать больше, чем просто проверить, является ли подпись действительной, "если файл подписан" - я хотел бы:

  • Убедитесь , что файл подписан
  • Убедитесь, что подпись принадлежит конкретному пользователю или подмножеству пользователей в моем наборе ключей

Какая команда gpg может быть использована для этого?

2 ответа2

5

Опция --decrypt уже делает большую часть этого.

$ gpg --decrypt < test.gpg
gpg: encrypted with 4096-bit RSA key, ID CE7B5510340F19EF, created 2009-10-31
      "grawity <grawity@gmail.com>"
The WELL (or Whole Earth 'Lectronic Link) is an example of the latest thing in frontier
villages, the computer bulletin board. In this kind of small town, Main Street is a
central minicomputer to which (in the case of the WELL) as many as 64 microcomputers
may be connected at one time by phone lines and little blinking boxes called modems.
gpg: Signature made 2015-05-15T07:52:55 EEST
gpg:                using RSA key D24F6CB2C1B52632
gpg: Good signature from "grawity <grawity@gmail.com>" [ultimate]
gpg:                 aka "grawity <grawity@example.org>" [ultimate]

Для получения машиночитаемой информации вы можете использовать --status-fd.

[GNUPG:] ENC_TO CE7B5510340F19EF 1 0
[GNUPG:] BEGIN_DECRYPTION
[GNUPG:] DECRYPTION_INFO 2 9
[GNUPG:] PLAINTEXT 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 2357E10CEF4F7ED27E233AD5D24F6CB2C1B52632
[GNUPG:] TRUST_ULTIMATE
[GNUPG:] DECRYPTION_OKAY
[GNUPG:] GOODMDC
[GNUPG:] END_DECRYPTION

И GOODSIG и VALIDSIG здесь означают, что подпись была проверена, и TRUST_* соответствуют уровням сертификации этого ключа. Например, ключи, которые вы подписали (или подписали) напрямую, будут иметь TRUST_FULL.

Вы можете обернуть это в скрипт, который будет проверять отпечаток в VALIDSIG по ключевому белому списку или просто полагаться на модель доверия ключей.

Обратите внимание, что вы не можете проверить, подписан ли файл, не расшифровав его сначала, так как PGP использует sign-before-encrypt.

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

Это приведет к следующему выводу:

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .