Командная строка GnuPG - проверка подписи KeePass

7869
Stisfa

Я пытаюсь проверить подпись 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; одно это сделало вещи намного более логичными!

Итак, вот мой список команд и где я нахожусь:

  1. proto@type:~$ cd Desktop/
  2. proto@type:~/Desktop$ gpg --import KeePass-2.14-Setup.exe.asc gpg: no valid OpenPGP data found. gpg: Total number processed: 0
  3. 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
  4. 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.
  5. 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
  6. 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
Честно, что за штука! Почему разработчики KeepassX просто не опубликовали MD5, чтобы можно было использовать ExactFile для проверки загруженного установщика. therobyouknow 8 лет назад 0

5 ответов на вопрос

4
Mike Fitzpatrick

В первой предоставленной вами команде вы должны ссылаться на файл подписи .asc, а не на файл .exe. Файл .exe также должен находиться в том же каталоге, что и файл .asc.

Со страницы руководства gpg:

--verify Предположим, что первый аргумент представляет собой подписанный файл или отдельную подпись, и проверьте его без генерации в любом выходе. Без аргументов пакет подписи читается из STDIN. Если дан только сигфайл, это может быть полная подпись или отдельная подпись, и в этом случае подписанный материал ожидается в файл без расширения ".sig" или ".asc". При наличии более 1 аргумента первый должен быть отдельным подпись и остальные файлы являются подписанным материалом. Чтобы прочитать подписанный материал из STDIN, используйте '-' ' как второе имя файла. По соображениям безопасности отдельная подпись не может прочитать подписанный материал с STDIN, не обозначая это вышеупомянутым способом. 
Woops! Я пропустил важные детали. При [загрузке] (http://keepass.info/download.html) KeePass 2.14 я получаю только этот EXE-файл. Там не было ни папки, ни архива, ни другой, которую я скачал. Если вы загрузите, используя верхнюю правую ссылку «KeePass 2.14 (Installer EXE для Windows)», вы увидите это. Вот почему я предполагал, что запусту команду --verify для EXE-файла, и она выдаст файл .asc / .sig. Так зачем им иметь подпись GnuPG для .asc [file] (http://keepass.info/integrity_sig.html), но не предоставлять ее при загрузке? Это в папке _after_ KeePass установлен? Stisfa 13 лет назад 0
Файл .exe.asc является подписью для файла .exe. Вам нужно оба файла в одной папке, когда вы пытаетесь проверить. Когда вы передаете файл .exe.asc в gpg --verify, он ищет соответствующий файл (.exe) в той же папке. Это все до того, как вы запустите / установите файл .exe. Когда я проверяю, он говорит мне, что подписывающим идентификатором открытого ключа является 0xFEB7C7BC, что соответствует [открытому ключу] (http://keepass.info/integrity/Dominik_Reichl.asc), опубликованному на [странице подписей] (http: // keepass. info / целостность_sig.html), но это на самом деле мало что подтверждает, поскольку sig и открытый ключ поступают из одного источника. Mike Fitzpatrick 13 лет назад 1
Где взять файл .exe.asc? Я понимаю, что мне нужно проверить этот файл, но он никогда не загружается при загрузке с [SourceForge] (http://sourceforge.net/projects/keepass/files/KeePass%202.x/2.14/KeePass-2.14- Setup.exe / скачать). Stisfa 13 лет назад 0
Ладно, похоже, тебе придется сделать меня немного глупее немного дольше: я зашел на страницу с подписями и попробовал что-то еще. Я щелкнул правой кнопкой мыши (в Chrome) ссылку на файл exe.asc, затем нажал «Сохранить ссылку как ...». Оттуда я сохранил его на рабочем столе, затем снова запустил gpg.exe. На этот раз я получаю такой вывод: `C: \ Program Files (x86) \ GNU \ GnuPG> gpg.exe --verify" C: \ Users \ Пользователь \ Desktop \ KeePass-2.14-Setup.exe.asc "gpg: Подпись сделано 01.02.11 05:25:24 с использованием идентификатора ключа DSA FEB7C7BC gpg: не удается проверить подпись: открытый ключ не найден` Stisfa 13 лет назад 0
«... это на самом деле мало что подтверждает, поскольку sig и открытый ключ поступают из одного и того же источника». - это то место, где меня ловят, когда я думаю о PGP / GPG. Я думаю, что часть проблемы, возможно, связана с тем фактом, что я имею в виду сигпы PGP с точки зрения хэшей MD5SUM / SHA1SUM. В этих случаях я запускаю проверки MD5 и SHA1 для любого данного файла и сравниваю полученные значения с опубликованными значениями, например [здесь] (http://keepass.info/integrity.html). Так было бы правильно, что мне нужно перестать думать из парадигмы хэш-суммы? Если так, то как я должен увидеть сигпы PGP? Stisfa 13 лет назад 0
Вот ссылки: [.exe] (http://downloads.sourceforge.net/keepass/KeePass-2.14-Setup.exe), [.exe.asc] (http://keepass.info/integrity/v2/ KeePass-2.14-Setup.exe.asc) и [открытый ключ] автора (http://keepass.info/integrity/Dominik_Reichl.asc). Вы должны ** импортировать открытый ключ автора в вашу цепочку ключей ** и оставить два других файла в одном каталоге. Вы должны также сделать этот каталог текущим рабочим каталогом, а не каталогом gpg, просто чтобы быть уверенным. Процесс проверки зависит от того, доверяете ли вы действительности открытого ключа автора ... Mike Fitzpatrick 13 лет назад 2
Насколько я понимаю, успешная проверка файла с его файлом сигнатуры ** поможет ** обнаружить любые ошибки загрузки (или человека, находящегося в середине атаки), но не поможет вам убедиться, что файл действительно был получен от того человека, которому принадлежит публичная подпись. Если у вас уже есть доверенная копия открытого ключа автора на вашем кольце для ключей gpg, то вы можете убедиться, что файл .exe действительно был подписан ими, но получение открытого ключа и подписи из того же источника ничего не доказывает о подписавшем. идентичность. Mike Fitzpatrick 13 лет назад 1
@Stisfa: В глубине души подпись PGP * является * хешем, но она находится за слоем асимметричного шифрования, так что вы можете проверить его подлинность. grawity 13 лет назад 0
@Mike: s / владеет публичной подписью / владеет парой ключей / grawity 13 лет назад 1
@ Grawity: у меня вроде есть идея (Майк, кажется, направил меня в правильном направлении), но мне все еще нужно потратить больше времени на изучение PGP. Прямо сейчас я прохожу [GPG Mini HowTo] (http://www.dewinter.com/gnupg_howto/english/GPGMiniHowto.html) перед тем, как делать какие-либо дальнейшие публикации. По сути, заставляя себя работать с RTM, так как Майк смог немного упростить его для меня. Если бы только было антропоморфизированное, но в то же время сжатое объяснение для n00bs, как я ... Я должен попросить больше терпения у всех, так как у меня есть еще много вопросов = D Stisfa 13 лет назад 0
@grawity: "s/owns the public signature/owns the keypair/" I'm embarrassed to ask, what's that mean? I'm assuming it's a reference to IRC commands? If so, the meaning is lost on me...sorry. Stisfa 13 лет назад 0
@Stisfa: @grawity правильно означает, что я должен был написать «владеет парой ключей» вместо «владеет публичной подписью». Mike Fitzpatrick 13 лет назад 2
@Stisfa: `s / from / to /` обычно означает "заменить регулярное выражение` from` на текст `to`"; это обычно видно на IRC, но происходит от текстовых редакторов Unix * ed *, * sed * и * vi *. Первоначально из [QED] (http://cm.bell-labs.com/cm/cs/who/dmr/qedman.pdf) на GE-635. grawity 13 лет назад 1
+1 guys; thanks. By the by, I've updated the question, so I was wondering if I could get just a little more feedback, please? Thanks in advance ^.^ Stisfa 13 лет назад 0
@Stisfa: ** 1) ** `Dominik_Reichl.asc` содержит открытый ключ, который вы можете импортировать (но не проверять); KeePass-2.14-Setup.exe.asc содержит отдельную подпись, которую можно проверить (но не импортировать); KeePass-2.14-Setup.exe является исполняемым файлом и не содержит данных PGP. Вывод всех 6 команд правильный. grawity 13 лет назад 1
@Stisfa: ** 2) ** Это не совсем эквивалентно. При проверке действительно используется хеш (более вероятно, что это SHA1 или SHA256, поскольку MD5 считается небезопасным). Но он делает больше, чем просто md5sum: вычисленный хэш не отображается, а сравнивается с записанным в KeePass ... exe.asc. (В вашем случае они совпадают.) И это не простой хеш в файле, а цифровая подпись - хеш, зашифрованный с помощью закрытого ключа подписавшего, чтобы убедиться, что именно Доминик Рейхл подписал файл. * (Я плохо объясняю вещи. Посмотрите "Цифровая подпись" в Википедии.) * grawity 13 лет назад 1
@Stisfa: ** 3) ** Отпечаток ключа - это не что иное, как хэш открытого ключа. "` 2171 BEEA D0DD ... `" - это просто части длинного шестнадцатеричного числа (например, выходные данные `md5sum`), и они разделены пробелом для удобства чтения; `2171beead0dd ...` будет означать точно то же самое. grawity 13 лет назад 1
@ Grawity: Спасибо за пункт № 3. Я видел разницу в случае, когда результат MD5 был в верхнем регистре, а проверка на веб-сайте источника была в нижнем регистре; это вызвало у меня некоторые сомнения, но вы их очистили! Спасибо! Я все еще пытаюсь разобраться, как работает PGP / GPG, поэтому вам придется продолжать демонстрировать многострадальные мои недостатки. Stisfa 13 лет назад 0
@Stisfa: Если у вас есть вопросы о PGP в целом, было бы проще, если бы вы отправляли отдельные [посты] (http://superuser.com/questions/ask) вместо того, чтобы задавать их в комментариях. grawity 13 лет назад 0
@grawity: Apologies; I'm just afraid that I'd spam SuperUser with all my inquiries, so I thought it would be better to clutter this post. After more reading (Man Pages/Tutorials/Wiki/ETC), I'll make a single post with several questions. In this instance, though, my main concerns are these: **Did the 5th Command successfully verify the validity of my copy of KeePass? Was it even necessary, since my MD5 & SHA1 verifications were good? No such thing as 100% secure, but is there anything else I can/should do to ensure my KeePass copy is untampered/clean?** Sorry, I have OCD-fueled paranoia... Stisfa 13 лет назад 0
@Stisfa: ** Да **, хэш вашей копии соответствует опубликованному хешу. («Хорошая подпись от ...») ** Но **, как я уже сказал, цифровая подпись * больше *, чем просто хэш - она ​​также предназначена для обеспечения подлинности файла. В случае простых хэшей SHA1 / MD5 кто-то мог взломать серверы веб-сайта KeePass, загрузить фальшивый файл `.exe`, опубликовать свой хэш SHA1, и это выглядело бы * совершенно нормально *. С другой стороны, если злоумышленнику нужно будет опубликовать подпись PGP, вы сразу увидите, что это сделал другой человек. grawity 13 лет назад 1
@Stisfa: (продолжение) Хотя вы должны быть осторожны и заметить ключевые изменения; не полагайтесь только на то, чтобы увидеть «Хорошую подпись от Доминика Рейхла». Вы должны на самом деле проверить этот ключ. В данном конкретном случае вы сравнили отпечаток ключа с отпечатком с веб-сайта. (К сожалению, это не намного безопаснее, чем просто сравнение SHA-хешей KeePass.) Однако теперь, когда у вас есть это в вашем кольце ключей GPG, вы можете подписать ключ DR (`gpg --lsign-key FEB7C7BC`, чтобы добавить подпись _local_) и все будущие проверки KeePass покажут, что ключ является доверенным. grawity 13 лет назад 1
@Stisfa: (продолжение) См. [Сеть доверия] (http://en.wikipedia.org/wiki/Web_of_trust) для получения дополнительной информации о том, как работает весь беспорядок. grawity 13 лет назад 1
@ Grawity: +1 по всем направлениям. Спасибо за ответ. Меня начинает понимать, что эта тема не имеет реального «прямого» ответа; Я думаю, это можно сравнить с тем, чтобы попросить инженера-электрика упростить работу процессора, а затем попросить его научить меня, как его создать самому. Я проведу еще несколько личных исследований, и это заставляет меня задуматься: кто-нибудь еще удосужился зайти так далеко, чтобы удостовериться, что их копия KeePass является законной, смеется? Stisfa 13 лет назад 0
1
Jan Ivar Beddari

Кажется, вы слишком усложняете ситуацию :-) Попробуйте выполнить поиск идентификатора ключа DSA FEB7C7BC по адресу https://keyserver.pgp.com/vkd/GetWelcomeScreen.event, и я думаю, вы его получите!

Ну, я не "понял" сначала. После того, как у меня появилась возможность поработать с GPG, переписаться с Майком Фитцпатриком и Гравити, прочитать о концепции «Сети доверия» из Википедии и, наконец, воспользоваться ссылкой, которую вы разместили, думаю, я понял идею. Если я могу получить идентификатор ключа DSA из другого источника (указанную вами ссылку) и загрузить KeePass вместе с соответствующей подписью из отдельного источника (домашней страницы KeePass), то подтвердите его, у меня есть правильная проверка. Я думаю. Stisfa 13 лет назад 0
0
Stisfa

Этот пост предназначен главным образом для разбивки «от А до Я», так что любой, кто застрял в этом, может получить ответ, не просматривая все комментарии. Пожалуйста, не голосуйте за это; как заслуга участников (Майк Фицпатрик, Гравити и Ян Ивар Беддари).

Другое дело: не верьте этому посту! Противоречивое утверждение, но я публикую это с ошибочным / ограниченным пониманием того, как работает GPG. Я буду обновлять это, поскольку я получаю лучшее понимание этого; сейчас у меня есть туманное представление о том, как это работает.

  1. Загрузите нужную копию KeePass, соответствующую подпись и открытый ключ в тот же каталог на вашем любимом дистрибутиве Linux (в моем случае я использовал Ubuntu и сделал рабочий стол рабочим каталогом)
    • Это важно! Public Key на веб - сайте KeePass не должны быть загружены! Вам необходимо загрузить открытый ключ, которому доверяют другие пользователи, и, надеюсь, эти пользователи будут людьми, которым вы доверяете. Как ты это делаешь? Попросите друга, у которого есть открытый ключ, которому вы доверяете, дать вам копию; но вы не обязательно иметь друга, который имеет это. Что ж, благодаря сообщению Яна Ивара Беддари, вы можете скачать отсюда открытый ключ, изданный Домиником Рейхлом, и использовать там Импортировать открытый ключ.
  2. Откройте терминал («CTRL + ALT + T» в Ubuntu)
  3. Бежать cd Desktop/
  4. Бежать gpg --import %KEYNAME%.asc
  5. Бежать gpg --verify %SIGNATURE%.asc
  6. Сравните полученный отпечаток ключа с отпечатком с веб-сайта KeePass

Вот мои результаты при использовании открытого ключа от 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.

0
the_midget_17

Вы пытались запустить это?

gpg --verify KeePass-2.14-Setup.exe.asc KeePass-2.14-Setup.exe 

Попробуйте это на Ubuntu, конечно. Windows, как правило, боль, если вы понимаете мой смысл ...

0
Milan

ВАЖНЫЙ ! Это просто к вашему сведению. Если вы переходите с одной платформы на другую (например, с Win. На Linux) и переустанавливаете KeepAss, убедитесь, что вы устанавливаете правильный пакет. KeepAssX сначала доступен в репозиториях, но если вы используете базу данных KeepAss2 вместе с ней, она выдаст вышеупомянутую ошибку. Пожалуйста, используйте пакет KeepAss2 для базы данных .kbdx.

Похожие вопросы