Командная строка GnuPG - проверка подписи KeePass
Я пытаюсь проверить подпись PGP последней версии установочного файла KeePass 2.14 по этой подписи, но я получаю вывод:
C:\Program Files (x86)\GNU\GnuPG>gpg.exe --verify C:\Users\User\Desktop\KeePass-2.14-Setup.exe
gpg: no valid OpenPGP data found.
gpg: the signature could not be verified.
Please remember that the signature file (.sig or .asc)
should be the first file given on the command line.
C:\Program Files (x86)\GNU\GnuPG>
Я нашел эту команду здесь, но она не упоминала о файлах ".sig" или ".asc", поэтому решил, что сделал что-то не так. Читая справочные страницы, я также попробовал следующее:
C:\Program Files (x86)\GNU\GnuPG>gpg.exe --pgpfile C:\Users\User\Desktop\KeePass-2.14-Setup.exe
gpg: Invalid option "--pgpfile"
C:\Program Files (x86)\GNU\GnuPG>
Как видите, результаты довольно запутанные...
Я взглянул на это в SuperUser, но ни одна из ссылок, похоже, не отвечала на мой вопрос, по крайней мере, не настолько, чтобы я мог понять, как двигаться дальше в этом вопросе.
Может ли кто-нибудь здесь помочь мне с эзотерической технической спецификой OpenPGP и связанным с этим использованием программы GnuPG? Я чувствовал себя довольно глупо, изучая VBS, но это не просто унизительно: это абсолютно истощает и подрывает доверие, которое я испытывал к своим ИТ-навыкам (опять же, у меня нет никаких оснований для того, чтобы хвастаться, так как я еще не получил свой A+ Cert, LOL).
ОБНОВЛЕНИЕ 04-04-2011
Итак, я устал от дурачения с Windows и решил, что правильно сделаю, загрузив Ubuntu; одно это сделало вещи намного более логичными!
Итак, вот мой список команд и где я нахожусь:
proto@type:~$ cd Desktop/
proto@type:~/Desktop$ gpg --import KeePass-2.14-Setup.exe.asc gpg: no valid OpenPGP data found. gpg: Total number processed: 0
proto@type:~/Desktop$ gpg --import Dominik_Reichl.asc gpg: /home/proto/.gnupg/trustdb.gpg: trustdb created gpg: key FEB7C7BC: public key "Dominik Reichl " imported gpg: Total number processed: 1 gpg: imported: 1
proto@type:~/Desktop$ gpg --verify KeePass-2.14-Setup.exe gpg: no valid OpenPGP data found. gpg: the signature could not be verified. Please remember that the signature file (.sig or .asc) should be the first file given on the command line.
proto@type:~/Desktop$ gpg --verify KeePass-2.14-Setup.exe.asc gpg: Signature made Sun 02 Jan 2011 05:25:24 AM MST using DSA key ID FEB7C7BC gpg: Good signature from "Dominik Reichl " gpg: WARNING: This key is not certified with a trusted signature! gpg: There is no indication that the signature belongs to the owner. Primary key fingerprint: 2171 BEEA D0DD 92A1 8065 5626 DCCA A5B3 FEB7 C7BC
proto@type:~/Desktop$ gpg --verify Dominik_Reichl.asc gpg: verify signatures failed: unexpected data
Как и велел Майк, я поместил файлы ".exe" и ".asc" в тот же каталог, где находится рабочий стол. Как вы можете видеть из кода, я также поместил открытый ключ "Dominik_Reichl.asc" в каталог Desktop.
Пожалуйста, будьте терпеливы со мной, так как я был полностью испорчен MD5; Я предполагаю, что шаг 5 сверху - это GPG, эквивалентный следующему:
C:\Users\user\>CD Desktop
C:\Users\user\Desktop>MD5Sum KeePass-2.14-Setup.exe
bae59065b24f0a6f2ed4bb9e0d6fc65f *KeePass-2.14-Setup.exe
Я говорю об этом, потому что поведение меняется, когда я перемещаю файл "KeePass-2.14-Setup.exe" в папку "temp" на рабочем столе. Когда я запускаю команду, это результат, который я получаю:
proto@type:~/Desktop$ gpg --verify KeePass-2.14-Setup.exe.asc
gpg: no signed data
gpg: can't hash datafile: file open error
Эти результаты привели меня к мысли, что я должен извлечь "идентификатор ключа DSA" и "отпечаток первичного ключа" из шага 5 и сравнить их со значениями в верхней части страницы подписи. Итак, где же сходство с проверкой MD5? Это все, что нужно? Или есть еще один шаг? Есть ли команда, которую я использую для проверки этих двух строк? Это те строки, которые мне действительно нужно проверить? Что это за строки?
Теперь есть еще одна проблема, с которой мне приходится сталкиваться. В результатах "Отпечаток первичного ключа" у меня есть 2 пробела между "8065" и "5626". Когда я использую электронную таблицу для проверки своих результатов со строкой на странице подписи, я получаю результат "ЛОЖЬ" из-за лишних пробелов в моих результатах. Я проверил источник страницы подписи, чтобы увидеть, игнорирует ли браузер лишние пробелы, но это не так.
2171 BEEA D0DD 92A1 8065 5626 DCCA A5B3 FEB7 C7BC # From Source of Signature Page
2171 BEEA D0DD 92A1 8065 5626 DCCA A5B3 FEB7 C7BC # From My Results
Пока я удаляю этот лишний пробел, мои результаты совпадают с результатами со страницы подписи, но разве они не должны совпадать без какого-либо вмешательства с моей стороны? Должна ли разница в пробелах вызывать тревогу?
К сожалению, страницы руководства GPG для меня все еще неясны, или, как некоторые могут сказать, что они "враждебны пользователю" (поиск "user hostile gpg"), так что мне понадобится пара дополнительных морковок. Я признаю это: я тупой. На самом деле, когда я все еще учился использовать проверку MD5, я с ней почти так же, как и с ней, возился с ней.
5 ответов
При первой введенной вами команде вы должны ссылаться на файл подписи.asc, а не на файл.exe. Файл.exe также должен находиться в том же каталоге, что и файл.asc.
Со страницы руководства gpg:
--verify Предположим, что первый аргумент представляет собой подписанный файл или отдельную подпись, и проверьте его без генерации в любом выходе. Без аргументов пакет подписи читается из STDIN. Если дан только сигфайл, это может быть полная подпись или отдельная подпись, и в этом случае подписанный материал ожидается в файл без расширения ".sig" или ".asc". При наличии более 1 аргумента первый должен быть отдельным подпись и остальные файлы являются подписанным материалом. Чтобы прочитать подписанный материал из STDIN, используйте '-'' в качестве второго имени файла. По соображениям безопасности отдельная подпись не может прочитать подписанный материал с STDIN, не обозначая это вышеупомянутым способом.
Кажется, вы слишком усложняете ситуацию:-) Попробуйте выполнить поиск идентификатора ключа DSA FEB7C7BC по адресу https://keyserver.pgp.com/vkd/GetWelcomeScreen.event и я думаю, вы его получите!
Этот пост предназначен главным образом для разбивки "от А до Я", так что любой, кто застрял в этом, может получить ответ, не просматривая все комментарии. Пожалуйста, не голосуйте за это; как заслуга участников (Майк Фицпатрик, Гравити и Ян Ивар Беддари).
Другое дело: не верьте этому посту! Противоречивое утверждение, но я публикую это с ошибочным / ограниченным пониманием того, как работает GPG. Я буду обновлять это, поскольку я получаю лучшее понимание этого; сейчас у меня есть туманное понимание того, как это работает.
- Загрузите желаемую копию KeePass, соответствующую подпись и открытый ключ в тот же каталог на вашем любимом дистрибутиве Linux (в моем случае я использовал Ubuntu и сделал рабочий стол рабочим каталогом)
- Это важно! Открытый ключ на веб-сайте KeePass не следует загружать! Вам необходимо загрузить открытый ключ, которому доверяют другие пользователи, и, надеюсь, эти пользователи будут людьми, которым вы доверяете. Как ты это делаешь? Попросите друга, у которого есть открытый ключ, которому вы доверяете, дать вам копию; но вы не обязательно иметь друга, который имеет это. Что ж, благодаря сообщению Яна Ивара Беддари, можно скачать отсюда открытый ключ, изданный Домиником Рейхлом, и использовать там Импортировать открытый ключ.
cd Desktop/
gpg --import %KEYNAME%.asc
gpg --verify %SIGNATURE%.asc
Вот мои результаты при использовании открытого ключа от keyserver.pgp.com:
proto@type:~$ cd Desktop/
proto@type:~/Desktop$ gpg --import key0xDCCAA5B3FEB7C7BC.asc
gpg: key FEB7C7BC: public key "Dominik Reichl " imported
gpg: Total number processed: 1
gpg: imported: 1
gpg: no ultimately trusted keys found
proto@type:~/Desktop$ gpg --verify KeePass-2.14-Setup.exe.asc
gpg: Signature made Sun 02 Jan 2011 05:25:24 AM MST using DSA key ID FEB7C7BC
gpg: Good signature from "Dominik Reichl "
gpg: WARNING: This key is not certified with a trusted signature!
gpg: There is no indication that the signature belongs to the owner.
Primary key fingerprint: 2171 BEEA D0DD 92A1 8065 5626 DCCA A5B3 FEB7 C7BC
Тогда вот мои результаты при использовании открытого ключа с веб-сайта KeePass:
proto@type:~$ cd Desktop
proto@type:~/Desktop$ gpg --import Dominik_Reichl.asc
gpg: key FEB7C7BC: public key "Dominik Reichl " imported
gpg: Total number processed: 1
gpg: imported: 1
proto@type:~/Desktop$ gpg --verify KeePass-2.14-Setup.exe.asc
gpg: Signature made Sun 02 Jan 2011 05:25:24 AM MST using DSA key ID FEB7C7BC
gpg: Good signature from "Dominik Reichl "
gpg: WARNING: This key is not certified with a trusted signature!
gpg: There is no indication that the signature belongs to the owner.
Primary key fingerprint: 2171 BEEA D0DD 92A1 8065 5626 DCCA A5B3 FEB7 C7BC
Как вы можете видеть, результаты все одинаковы, за исключением части "gpg: в конечном итоге ключи не найдены". Я не уверен, что с этим делать, но ключевые отпечатки совпадают с отпечатками на веб-сайте KeePass, что важно при проверке файла. Это сильно отличается от проверки того, что открытый ключ заслуживает доверия. Открытый ключ - это то, что вы доверяете, чтобы использовать или не использовать, например, доверяете ли вы незнакомому человеку. Один из способов, которым они могут показаться заслуживающими доверия, - это если у них есть несколько человек, которые могут поручиться за них, что то же самое для Открытого ключа. Опять же, это из моей ограниченной области, поэтому с вашей стороны требуется должная осмотрительность!
Хотя, если вы можете подождать, я буду медленно редактировать свои посты, чтобы сделать лаконичное, простое и, надеюсь, точное представление о правильном использовании GPG при проверке своей копии KeePass.
Вы пытались запустить это?
gpg --verify KeePass-2.14-Setup.exe.asc KeePass-2.14-Setup.exe
Попробуйте это на Ubuntu, конечно. Windows, как правило, боль, если вы понимаете мой смысл...
ВАЖНЫЙ! Это просто к вашему сведению. Если вы переходите с одной платформы на другую (например, с Win. На Linux) и переустанавливаете KeepAss, убедитесь, что вы устанавливаете правильный пакет. KeepAssX сначала доступен в репозиториях, но если вы используете базу данных KeepAss2 вместе с ней, она выдаст вышеупомянутую ошибку. Пожалуйста, используйте пакет KeepAss2 для базы данных.kbdx.