LINUX.ORG.RU

Логика работы gpg при подписании файлов

 , ,


0

2
gpg 2.2.40
libgcrypt 1.8.9

Спойлер: здесь будет много вопросов «это как?».

Для меня тема подписания (не шифрования, а именно подписания) файлов с gpg новая, может я, конечно, чего-то не понял. Вот три ситуации:

  1. Файл А. Подписываю его подписью 1. Подписываю подпись 1 подписью 2. При верификации подписи я вижу обе подписи как подпись 2. Если удалить/переместить подпись 2 в другое место или переименовать, то опять вижу подпись 1. Это как?

  2. Та же ситуация с двумя подписями. Подписал файл А подписью 1, а потом подпись 1 подписал подписью 2. Изменил файл. Верифицирую файл и получаю ОК, подпись файла валидна, файл в порядке. Это как? Убираю/удаляю подпись 2 и вижу, что файл не бьется. Это как?

  3. Подписываю файл А подписью 1. Меняю файл А. Проверяю - подпись не бьется. Подписываю уже измененный файл А подписью 2, проверяю подпись 2 - не бьется. Это как?

не бьется

Крайне загадочное выражение, ничего не понятно. Ну а вообще да, и другие проблемы в описании есть, лучше покажи команды и их логи.

firkax ★★★★★
()
Ответ на: комментарий от TeopeTuK
gpg2 --list-key
gpg: checking the trustdb
gpg: marginals needed: 3  completes needed: 1  trust model: pgp
gpg: depth: 0  valid:   2  signed:   0  trust: 0-, 0q, 0n, 0m, 0f, 2u
/home/user/.gnupg/pubring.gpg
-----------------------------
pub   rsa3072 2022-10-27 [SC]
      CE6A0AB04C3940F4FB0E219E3B4A3703BB241B92
uid           [ultimate] sign 1
sub   rsa3072 2022-10-27 [E]

pub   rsa3072 2022-10-27 [SC]
      D1397780AEBDCABE4189892E449AB87F888945D0
uid           [ultimate] sign 2
sub   rsa3072 2022-10-27 [E]
echo 000 > testfile.txt

gpg2 --default-key 'sign 1' --sign testfile.txt 
gpg: using "sign 1" as default secret key for signing

gpg2 --default-key 'sign 2' --sign testfile.txt 
gpg: using "sign 2" as default secret key for signing
File 'testfile.txt.gpg' exists. Overwrite? (y/N) N
Enter new filename: testfile.txt.gpg2

gpg2 --verify testfile.txt.gpg2
gpg: Signature made Thu 27 Oct 2022 11:09:26 AM MSK
gpg:                using RSA key D1397780AEBDCABE4189892E449AB87F888945D0
gpg: Good signature from "sign 2" [ultimate]

gpg2 --verify testfile.txt.gpg
gpg: Signature made Thu 27 Oct 2022 11:09:26 AM MSK
gpg:                using RSA key D1397780AEBDCABE4189892E449AB87F888945D0
gpg: Good signature from "sign 2" [ultimate]
echo 123 > testfile.txt

gpg2 --verify testfile.txt.gpg2 
gpg: Signature made Thu 27 Oct 2022 11:09:26 AM MSK
gpg:                using RSA key D1397780AEBDCABE4189892E449AB87F888945D0
gpg: Good signature from "sign 2" [ultimate]

rm -f testfile.txt.gpg2
removed 'testfile.txt.gpg2'

gpg2 --verify testfile.txt.gpg
gpg: Signature made Thu 27 Oct 2022 11:09:11 AM MSK
gpg:                using RSA key CE6A0AB04C3940F4FB0E219E3B4A3703BB241B92
gpg: Good signature from "sign 1" [ultimate]
Entmatix
() автор топика
Ответ на: комментарий от Entmatix

Начнем с того, что --sign подписывает не сам исходный файл testfile.txt, а его содержимое, и включает это содержимое в testfile.txt.gpg, соответственно, исходный файл можно хоть удалить, проверке подписи это не мешает. Если нужна отдельная подпись, нужен ключ --detach-sign. По поводу первой проблемы, у меня не воспроизвелось. Проверка testfile.txt.gpg и testfile.txt.gpg2 показывает разные подписи.

TeopeTuK ★★★★
()
Последнее исправление: TeopeTuK (всего исправлений: 1)