Меню Рубрики

Gnupg linux как пользоваться

Шифрование в Linux: использование GnuPG

В Linux универсальным инструментом шифрования является пакет Вернера Коха [Werner Koch] Gnu Privacy Guard (GnuPG). Команда его основного приложения (gpg) воскрешает память о Pretty Good Privacy (PGP), инструменте шифрования, выпущенном в 1991 г. Филом Циммерманом [Phil Zimmermann]. Более подробнее о GPG вы узнаете в статье «Шифрование GPG».

Ныне OpenPGP является стандартом, определяющим способы хранения шифрованных сообщений и связанных с ними битов, и GnuPG в полной мере реализует этот стандарт.

GnuPG работает из командной строки и имеет репутацию сложного и неудобного инструмента. Он предоставляет пользователю все современные алгоритмы приватного и публичного ключа, а также разнообразные рычажки управления, которые вы можете крутить как угодно.

В результате у вас имеется огромное количество опций командной строки и man-страниц для долгого чтения. В большинстве дистрибутивов GnuPG установлен по умолчанию, так что в рамках этой инструкции нам не придется заниматься установкой.

Как пользоваться GnuPG в Linux

Традиционное симметричное шифрование (когда две стороны делят секретный ключ или пароль) — это хорошо, но оно предполагает, что общающиеся стороны сперва поделились ключом через безопасный канал. Как правило, это предполагает крамольную встречу на темной парковке, возможно, обмен портфелями, и в идеале — уничтожение любой записи с ключом или паролем. Никто не знает, что или кто скрывается во мраке в подобных местах, и лучше бы вообще избегать подобных ситуаций. Поэтому давайте создадим пару ключей и посмотрим, как работает шифрование с публичным ключом.

Создание ключей в GnuPG

На первые три вопроса примите настройки по умолчанию. Мы создадим 2048-битный RSA-ключ с RSA-подключом, и этот ключ не будет иметь срока годности.

Затем на вопрос «Верно ли это [Is this correct?]?» надо ответить «Да [Yes]».

Как пользоваться GnuPG

У вас спросят имя и адрес электронной почты. Эта информация будет храниться с публичным ключом, и хорошей практикой является сделать этот ключ как можно шире известным — поэтому не используйте своего настоящего имении основного адреса электронной почты, если не хотите сделать эти данные общественным достоянием. Используемый здесь адрес электронной почты не должен обязательно совпадать с тем адресом, с которого вы будете отправлять свои зашифрованные сообщения.

Затем у вас спросят парольную фразу для защиты ключа. Создание ключа требует энтропии (случайных данных), поэтому во время создания ключа вас попросят понажимать на клавиатуру и пошаркать мышью.

После этого можете проверить, что все сделано, с помощью

GnuPG надежно хранит все сгенерированные ключи в наборе ключей. При необходимости их можно импортировать и экспортировать; но, перемещая приватный ключ, следует соблюдать крайнюю осторожность.

Поскольку своим публичным ключом вам надо делиться, экспортируйте ключ с помощью

$ gpg —output lxfpublic.key —armor —export

заменив на адрес электронной почты, использованный при создании ключа.

Полученный в результате файл можно отправить вашим товарищам по конспирации, и они смогут импортировать его с помощью

$ gpg —import lxfpublic.key

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

Использование GnuPG

Чтобы отправить вам шифрованное сообщение, скажем, instructions.txt, ваш коллега должен ввести

$ gpg —recipient —encrypt instructions.txt

и отправить вам полученный файл instructions.txt.gpg.

Ему также следует удалить исходный файл (например, с помощью shred) — как и вам после его получения.

И это было очень краткое введение в GPG на Linux, не такое уж мучительное. Однако если вы предпочитаете графический интерфейс, для вас есть GPA (Gnu Privacy Assistant), а также отличный плагин Enigmail для Thunderbird.

Как пользоваться GnuPG: GPA

Сеть Доверия и стороны, подписывающие ключ

Ранее мы упомянули загрузку вашего ключа на сервер ключей. Если у вас есть чей-то публичный ключ, то вы знаете, что только владелец соответствующего приватного ключа может прочитать шифрованные сообщения, отправленные им.

Проблема в том, что если только вы не обменивались ключами лично, то нет никакой гарантии, что публичный ключ взаправду принадлежит тому, кому он, по вашему мнению, должен принадлежать: с тем же успехом он может принадлежать и самозванцу. Поэтому стоит как можно больше рекламировать свой ключ: разместите его на нескольких серверах ключей, на вашем сайте, в вашей подписи электронной почты. И наоборот: прежде чем поверить случайному публичному ключу, сделайте фоновую проверку. Все эти вещи потенциально можно взломать, так что есть и другой путь. Если вы встречали человека лично или по иной причине уверены в подлинности его публичного ключа, можете его подписать.

Можно создать эти отношения для создания централизованной структуры, известной как Сеть Доверия. Со временем люди увидят, чьи ключи вы подписали, и если они доверяют вам, то станут доверять и этим ключам.

Чтобы положить некое начало этому процессу, можно устроить вечеринку подписи ключей, где участники — помимо прочего веселья — встретятся лично, удостоверят ID фото и подпишут ключи и сертификаты. Вымышленная вечеринка подписи ключей в романе Кори Доктороу «Младший брат» проходит на пляже в Калифорнии — а где будет проходить ваша?

Источник

Как пользоваться gpg — большой мануал

gpg — это инструмент шифрования и электронного подписывания. В его работе используется ассиметричное шифрование, основанное на двух ключах: приватный и публичный. Приватный ключ иногда называют секретным. А публичный ключ называют открытым.

Суть работы в общих чертах следующая: любой желающий может сгенерировать себе пару ключей. Публичный ключ (как это можно понять из названия), не является секретным — этот ключ может находиться в открытом доступе. С помощью этого ключа можно шифровать сообщения и файлы. Причём сообщения и файлы шифруются только «в одну сторону» — расшифровать их, даже используя этот самый публичный ключ, уже невозможно. Их расшифровка возможна только при использовании соответствующего приватного ключа.

Таким образом, если вы хотите отправить секретное сообщение или зашифрованный файл определённому лицу, то вы берёте публичный ключ этого лица (который может быть в свободном доступе), зашифровываете информацию и отправляете ему эту зашифрованную информацию — кроме владельца соответствующего приватного ключа её уже никто не сможет узнать.

Если обменяться публичными ключами, то вы с этим лицом можете вести зашифрованную беседу:

  • вы шифруете свои сообщения публичным ключом вашего собеседника и отправляете ему
  • он с помощью своего приватного ключа читаете эти сообщения
  • ваш собеседник шифрует свои сообщения вашим публичным ключом и отправляет вам
  • вы с помощью своего приватного ключа читаете свои сообщения
  • и так далее

Приватный ключ умеет делать ещё один интересный фокус: он умеет подписывать файлы. Причём, как можно уже догадаться, проверять подпись можно соответствующим публичным ключом.

Итак, gpg — это OpenPGP часть GNU Privacy Guard (GnuPG). Этот инструмент обеспечивает цифровое шифрование и службы подписи используя стандарт OpenPGP. gpg имеет функции полного управления ключами, а также все приблуды, которые вы можете ожидать от реализации OpenPGP.

Предупреждение по использованию GPG

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

Для использования в скриптах, у gpg есть хорошо документированная реализация API, чтобы активировать этот интерфейс используйте опции —with-colons и —status-fd . Также для определённых операция может пригодиться опция —command-fd .

Каким публичным GPG ключам можно доверять?

Создать пару публичный-приватный ключ можно у себя на компьютере для любого имени. Это примерно как SSL сертификаты: можно создать для любого сайта, но такой самоподписанный сертификат не будет вызывать доверие у браузеров. Поэтому привлекается третья сторона — корневой центр сертификации (root certification authority, CA) (там чуть сложнее, также имеются промежуточные доверенные центры авторизации (trusted certificate authority)). Собственно, эта услуга и является платной при покупке SSL сертификата для сайта — сгенерировать сертификат можно самому за секунду на любом Linux.

Аналогичная ситуация и с GPG ключами: они могут быть созданы на любое имя. Поэтому когда вы скачиваете публичный GPG ключ для проверки цифровой подписи, вы должны быть полностью уверены, что он именно от того лица, от кого вы думаете. Иначе вся процедура теряет смысл.

После самого первого обмена публичными ключами, дальнейший обмен более надёжен: другая сторона, чтобы подтвердить, что новый публичный ключ исходит от неё, подпишет этот самый новый публичный ключ своим предыдущим приватным ключом. Таким образом, получив новый публичный ключ от вашего собеседника, вы можете проверить подпись предыдущим публичным ключом, и если подпись верна, то, следовательно, можно доверять и новому ключу, который должен заменить предыдущий публичный ключ.

Как сгенерировать пару публичный-приватный ключ в GPG

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

Для генерирования пары ключей запустите команду:

Вам нужно будет ввести:

  • Ваше полное имя
  • Адрес электронной почты

Затем программа покажет выбранный вами идентификатор пользователя и спросит, всё ли правильно? Если всё правильно, вам нужно будет ввести O .

Затем программа попросит ввести пароль.

Вы можете задать вопрос: какой ещё пароль, если для зашифровки и расшифровки используется ассиметричный алгоритм с файлами ключей? Да, всё верно, вводимый пароль не будет участвовать в процессе шифрования и расшифровки, он нужен для защиты вашего ключа, поскольку он храниться у вас на компьютере в домашней папке. На тот случай, если злоумышленник получит физический доступ к вашему компьютеру, он не сможет просто воспользоваться вашим приватным ключом — ему сначала нужно будет подобрать пароль. Поэтому пароль придумайте надёжный. Кстати, если вы экспортируете приватный ключ в файл (команды для этого будут показаны ниже) чтобы, например, перенести его на другой компьютер, то при импорте этого ключа на другой компьютер нужно будет ввести пароль от этого приватного ключа.

Затем программа покажет совет:

Необходимо получить много случайных чисел. Желательно, чтобы Вы в процессе генерации выполняли какие-то другие действия (печать на клавиатуре, движения мыши, обращения к дискам); это даст генератору случайных чисел больше возможностей получить достаточное количество энтропии.

Вместо —gen-key можно использовать опцию —full-generate-key , которая также сгенерирует пару ключей, но покажет больше опций. При использовании —gen-key некоторые значений опций используются по умолчанию.

Как посмотреть или сохранить свой публичный (открытый) ключ в GPG

У меня плохо с фантазией, поэтому далее в командах в качестве имени пользователя (точнее, идентификаторая пользователя) я использую Alexey Miloserdov — замените эту строку на ваше значение.

Чтобы посмотреть публичный ключ используйте опцию —export , а также опцию -a , которая означает, что выводимые данные должны быть не в бинарном формате, а в ASCII (то есть текстовом, пригодном для копирования-вставки в сообщение мессенджера или электронной почты), в конце укажите имя пользователя:

gpg —export -a «Alexey Miloserdov»

Для сохранения публичного ключа в файл используйте перенаправление вывода:

gpg —export -a «Alexey Miloserdov» > public.key

В результате публичный ключ будет сохранён в файл public.key .

Или используйте опцию -o , после которой укажите имя файла:

gpg —export -a -o public.key «Alexey Miloserdov»

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

Как посмотреть или сохранить свой приватный (секретный) ключ в GPG

Для этого используется опция —export-secret-key :

gpg —export-secret-key -a «Alexey Miloserdov»

Для сохранения в файл:

gpg —export-secret-key -a «Alexey Miloserdov» > private.key

gpg —export-secret-key -a -o private.key «Alexey Miloserdov»

Как импортировать ключи GPG

Для импорта публичного ключа выполните:

gpg —import public.key

Эта команда добавит публичный ключ, который находится в файле » public.key «.

Для добавления приватного ключа из файла private.key выполните команду:

gpg —import private.key

Как просмотреть список ключей GPG

Для просмотра всех публичных ключей в вашей системе выполните:

Для просмотра всех приватных ключей в вашей системе выполните:

Как удалить ключи GPG

Для удаления публичного ключа выполните:

gpg —delete-key «Alexey Miloserdov»

Помните: если на компьютере имеется приватный ключ, ассоциированный с этим публичным ключом, то вы получите ошибку! Вы должны удалить приватный ключ этой пары, а затем можно удалять публичный ключ.

Для удаления приватного ключа:

gpg —delete-secret-key «Alexey Miloserdov»

Для чего нужны fingerprint (отпечатки) в GPG

Fingerprint (отпечатки) ключей в gpg имеют примерно следующий вид:

D743 875D 1BB6 095A 366B B81F 3BFD 8738 3926 AC69

Отпечаток может выполнять функцию идентификатора ключа — то есть вместо указания имени пользователя (в моём примере это Alexey Miloserdov) можно использовать отпечаток.

Например для удаления секретного ключа, используя в качестве идентификатора отпечаток:

gpg —delete-secret-key ‘D743 875D 1BB6 095A 366B B81F 3BFD 8738 3926 AC69’

Вторая функция применения отпечатка — это верификация публичного ключа. В качестве примера приводится следующая история: Алиса передала Бобу клочок бумаги, на котором записан отпечаток (ну или позвонила по телефону и продиктовала отпечаток). Затем Алиса переслала Бобу свой публичный ключ. Но так как ключ пришёл из Интернета — то непонятно, от кого он именно? Не был ли этот ключ подменён по пути? После импорта ключа, можно просмотреть его отпечаток. Поскольку у Боба есть отпечаток, который он получил из доверенного источника (Алиса продиктовала его своим голосом или лично передала записку с отпечатком), то Боб теперь может сравнить эти два отпечатка — если отпечатки идентичные, значит публичный ключ действительно отправлен Алисой и значит ему можно доверять.

Посмотреть опечаток для ключа определённого пользователя можно командой:

gpg —fingerprint ‘Alexey Miloserdov’

Это отпечаток на компьютере, где была создана пара ключей:

А это отпечаток на другом компьютере, где был импортирован публичный ключ:

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

Шифрование файлов и данных с GPG

Про шифрование в gpg нужно знать, что оно может быть:

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

Второе, что нужно знать: шифрование можно совмещать с подписыванием файла. Подписывание файла и проверку подписи мы рассмотрим далее. Также далее мы рассмотрим одновременное шифрование и подпись файла.

Третье: зашифровать можно одним или более публичными ключами.

Для шифрования файла используя симметричный метод с паролем используйте опцию -c (либо её длинный аналог —symmetric ):

Следующая команда для шифрования файла test.php паролем в gpg:

В результате шифрования будет создан файл с расширением .gpg (в данном случае это будет файл test.php.gpg).

Для того, чтобы зашифровать файл симметричным шифрованием с возможностью расшифровки приватным ключом (в этом случае его можно будет расшифровать приватным ключом, либо паролем) нужно использовать сразу несколько опций:

  • -e — означает шифрование данных
  • -c — означает симметричное шифрование
  • -r ‘id’ — означает зашифровать данные для пользователя с определённым id

Пример команды симметричного шифрования файла test.php для пользователя Alexey Miloserdov с возможностью его расшифровки приватным ключом ЛИБО для расшифровки паролем:

gpg -e -c -r ‘Alexey Miloserdov’ test.php

Точнее говоря, комбинирование двух опций -e и -c шифрует ключ сессии публичным ключом и симметричным шифром, поэтому для расшифровки может использоваться И приватный ключ, И пароль (на выбор). Если на другом компьютере, где вы расшифровываете файл, имеется ваш приватный ключ, то при расшифровке будет запрошен пароль приватного ключа. Если приватный ключ отсутствует, то будет запрошен пароль, который использовался при шифровании файла.

Для шифрования публичным ключом (-e) , чтобы файл (test.php) мог расшифровать только владелец соответствующего парного приватного ключа (-r ‘Alexey Miloserdov’) :

gpg -e -r ‘Alexey Miloserdov’ test.php

Вместо опции -r ‘Имя Адресата’ можно использовать опцию -R ‘Имя Адресата ‘ или её длинный аналог —hidden-recipient ‘Имя Адресата’ . Она также шифрует файл для указанного адресата, но имя этого адресата шифруется. Кстати, следует упомянуть, что даже в зашифрованном файле имя адресата может посмотреть кто угодно — о том, как это сделать, будет сказано ниже.

Пример шифрования файла test.php публичным ключом пользователя Alexey Miloserdov, но с зашифрованным именем адресата.

gpg -e -R ‘Alexey Miloserdov’ test.php

Обратите внимание, что во всех случаях шифрования оригинальный файл остаётся . Вам самим нужно решать, что с ним делать, например, удалить его.

Чтобы каждый раз не вводить имя получателя, можно установить значение по умолчанию опцией —default-recipient . Также с ней в комплекте идут опции —default-recipient-self и —no-default-recipient .

Как в GPG шифровать файлы, чтобы их можно было отправить в виде сообщения

По умолчанию файлы сохраняются в бинарный формат OpenPGP. Кстати, в этом формате файл может занимать значительно меньше места (в разы!) чем исходный файл до шифрования. Если вы откроете зашифрованный файл, то убедитесь, что это бинарные данные, которые невозможно передать копированием-вставкой без потери их функциональности.

Но иногда может возникнуть необходимость переслать зашифрованный файл или сообщение по почте или в мессенджере в виде обычного текста. Это возможно с помощью опции -a , которая создаёт зашифрованный файл в формате ASCII.

gpg -e -a -r ‘Alexey Miloserdov’ test.php

В результате будет создан файл с расширением .asc (в данном случае это файл test.php.asc).

Как в GPG зашифровать сообщение

Для зашифровки сообщения используйте следующую конструкцию:

echo ‘ТЕКСТ СООБЩЕНИЯ’ | gpg -e -a -r ‘ПОЛУЧАТЕЛЬ СООБЩЕНИЯ’

Обратите внимание, что я добавил опцию -a — для того, чтобы зашифрованное сообщение можно было скопировать и вставить в мессенджер или в email (или распечатать на принтере). Без этой опции будут выведены бинарные данные.

Зашифрованное сообщение будет выведено в стандартный вывод, то есть в терминал. Если вы хотите сохранить зашифрованное сообщение в файл, то используйте конструкцию:

echo ‘ТЕКСТ СООБЩЕНИЯ’ | gpg -e -a -r ‘ПОЛУЧАТЕЛЬ СООБЩЕНИЯ’ > ФАЙЛ_С_ШИФРОМ

echo ‘Я нашёл клад’ | gpg -e -a -r ‘Alexey Miloserdov’

Как расшифровать файлы в GPG

Для расшифровки используется опция -d :

Причём данные будут выведены прямо в стандартный вывод! То есть в терминал. Чтобы сохранить данные в файл используйте опцию -o , после которой укажите имя нового расшифрованного файла:

gpg -d -o test.php test.php.gpg

Либо используйте конструкцию вида:

gpg -d ЗАШИФРОВАННЫЙ_ФАЙЛ > РАСШИФРОВАННЫЙ_ФАЙЛ

gpg -d test.php.gpg > test.php

Вроде это тоже нормально работает (для текстовых файлов уж точно).

GPG: Невозможно ввести пароль после неправильной попытки

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

gpg: decryption failed: Недопустимый алгоритм симметричного шифрования

Чтобы побороть эту ситуацию, нужно явно указать не использовать кэш, для этого имеется опция —no-symkey-cache , пример использования:

gpg -d —no-symkey-cache test.php.gpg

Как посмотреть получателей зашифрованного в GPG файла

Если вы не хотите расшифровывать файл (а может быть просто не можете из-за отсутствия приватного ключа), но хотите посмотреть, кому он предназначен (это можно сделать даже для зашифрованных файлов, если специально не зашифрованы получатели как это показано выше), то для этого имеется опция —list-only .

Вместе с этой опцией нужно использовать опцию -d , а также указать проверяемый файл, пример:

gpg —list-only -d test.php.gpg

Может быть выведено:

gpg: зашифровано 2048-битным ключом RSA с идентификатором 0E5137A9EF8E8F15, созданным 2019-02-22
«Alexey Miloserdov

Или без локализации:

gpg: encrypted with 2048-bit RSA key, ID 0x0E5137A9EF8E8F15, created 2019-02-22
«Alexey Miloserdov

Это сообщение означает, что выполнено ассиметричное шифрование для пользователя Alexey Miloserdov

При симметричном шифровании сообщение будет таким:

gpg: сеансовый ключ зашифрован по AES
gpg: зашифровано одной фразой-паролем
gpg: зашифровано 2048-битным ключом RSA с идентификатором 0E5137A9EF8E8F15, созданным 2019-02-22
«Alexey Miloserdov

Или без локализации:

gpg: AES encrypted session key
gpg: encrypted with 1 passphrase
gpg: encrypted with 2048-bit RSA key, ID 0x0E5137A9EF8E8F15, created 2019-02-22
«Alexey Miloserdov

Причём вплоть до 2019 года, почти до самых последних версий gpg, у опции —list-only есть интересный баг: если на компьютере, где выполняется проверка, имеется приватный ключ пользователя, кому предназначен данный файл, то не выводиться ничего. Это может запутать, поскольку также ничего не выводиться в случае, если получатель зашифрован. Я нашёл упоминание об этой ошибке в 2013 году (смотрите список источников), и она до сих присутствует в 2019 в самой последней версии Tails. Чтобы обойти этот баг, используйте опцию -v , получается примерно следующая команда:

gpg —list-only -v -d test.php.gpg

Будет выведено что-то вроде:

gpg: public key is 0x0E5137A9EF8E8F15

И уже по идентификатору публичного ключа можно найти пользователя.

В самых последних версиях gpg (например в Arch Linux и BlackArch) эта ошибка уже исправлена. То есть —list-only работает именно так, как это интуитивно ожидается и костыля в виде опции -v больше не требуется.

Выбор приватного ключа для расшифровки

Как мы уже выяснили, даже зашифрованная информация в GPG содержит имя получателя (если оно специально не удалено). Поэтому процедура расшифровки файлов понятна: GPG смотрит получателя и использует его приватный ключ для извлечения данных.

А как это происходит в случае, если получатель зашифрован? В этом случае GPG просто перебирает все имеющиеся в системе приватные ключи и смотрит, какой из них подойдёт (такой своеобразный брут-форсинг).

Вы можете помочь программе используя опцию —try-secret-key ИМЯ , вместо ИМЕНИ нужно указать идентификатор пользователя с закрытым ключом, для которого зашифрован файл.

Думаю, вы уже понимаете, что зашифрованная информация содержит как минимум такие части как: 1) идентификатор получателя, 2) «полезная нагрузка» — сами зашифрованные данные. Идентификатор получателя может быть поддельным — то есть для шифрования использовались публичные ключи одного лица, а в качестве получателя указано другое лицо. Это приведёт к тому, что попытка расшифровки в GPG завершиться неудачей.

Для расшифровки таких файлов с поддельным ключевым ID, используется опция —try-all-secrets . Как можно понять из названия самой опции, она не будет смотреть на ключевой идентификатор в сообщении, а будет пробовать все секретные ключи, пока не найдёт правильный для расшифровки. То есть поведение будет в точности таким же, как если бы получатель (или получатели) не были указаны вовсе. То есть как если бы данные шифровались с использованием опций —throw-keyids или —hidden-recipient .

Как в GPG проверить подпись файла

Для проверки подписи используется опция —verify .

Как мы только что узнали, цифровая подпись может быть интегрирована в файл, а может содержаться в отдельном файле. От этого зависит запуск команды gpg , если цифровая подпись интегрирована в файл, то достаточно указать опцию —verify , а затем проверяемый файл:

gpg —verify test.php.gpg

Если цифровая подпись отделена от файла, то после опции —verify нужно указать два аргумента: вначале идёт файл с подписью, а затем подписанные данные :

gpg —verify test.php.sig test.php

Кстати, для проверки подписи есть специальная программа gpgv , которая заменяет собой конструкцию gpg —verify , то есть предыдущие команды можно записать так:

gpgv test.php.sig test.php

Пример вывода при проверке подписи (проверка выполнялась на компьютере, где была создана соответствующая пара ключей, поэтому к подписи полное доверие):

gpg: Подпись сделана Сб 23 фев 2019 04:40:40 MSK
gpg: ключом RSA с идентификатором D743875D1BB6095A366BB81F3BFD87383926AC69
gpg: издатель «proghoster@gmail.com»
gpg: Действительная подпись пользователя «Alexey Miloserdov

Без локализации (на этом компьютере публичный ключ был импортирован, поэтому, с одной стороны, подтверждено, что подпись хорошая и принадлежит Alexey Miloserdov

, но, с другой стороны, выведено предупреждение, что сам открытый ключ, которым проверялась подпись, не сертифицирован доверенной подписью — то есть программа хочет нам сказать, что таких ключей от имени Alexey Miloserdov

может наделать кто угодно в любом количестве):

gpg: Signature made Сб 23 фев 2019 01:40:40 UTC
gpg: using RSA key D743875D1BB6095A366BB81F3BFD87383926AC69
gpg: issuer «proghoster@gmail.com»
gpg: Good signature from «Alexey Miloserdov

» [unknown]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: D743 875D 1BB6 095A 366B B81F 3BFD 8738 3926 AC69

Как извлечь файл из подписанного файла GPG

После проверки подписи может возникнуть интересный вопрос — а как, собственно, использовать этот файл в .gpg формате? Чтобы получить подписанные данные нужно использовать опцию -d , которую мы уже рассматривали — она используется для расшифровки данных. Но в дополнении к данной опции нужно ещё использовать опцию -o , после которой нужно указать имя файла, куда будут извлечены подписанные данные — обычный редирект вывода, как это было рассмотрено выше, может не подойти, поскольку для подписанного файла опцией -d не только извлекаются исходные данные, но и происходит проверка подписи и результаты проверки тоже выводятся на экран, то есть если вы будете использовать редирект вывода, то в создаваемый файл попадут и подписанные данные, и информация о проверке подписи.

gpg -d -o test.php test.php.gpg

Как в GPG одновременно подписать и зашифровать файл

Для этого достаточно совмещать уже известные нам опции.

Чтобы зашифровать файл публичным ключом другого лица, и подписать его своим приватным ключом, нужно выполнить команду вида:

gpg -e -u ‘ОТ КОГО ФАЙЛ’ -r ‘КОМУ ФАЙЛ’ ФАЙЛ_ДЛЯ_ШИФРОВАНИЯ

Чтобы использовалось симметричное шифрование, то к предыдущей конструкции достаточно добавить соответствующую опцию -c :

gpg -e -c -u ‘ОТ КОГО ФАЙЛ’ -r ‘КОМУ ФАЙЛ’ ФАЙЛ_ДЛЯ_ШИФРОВАНИЯ

Редактирования ключей GPG

Для редактирования ключа определённого пользователя выполните команду (замените ‘Alexey Miloserdov’ на желаемый идентификатор пользователя):

gpg —edit-key ‘Alexey Miloserdov’

Вы попадёте в интерактивный интерфейс командной строки, там будут работать следующие команды:

quit выйти из этого меню
save сохранить и выйти
help показать данную справку
fpr показать отпечаток ключа
grip показать код ключа
list вывести список ключей и идентификаторов пользователя
uid выбрать идентификатор пользователя N
key выбрать подключ N
check проверка подписей
sign подписать выбранные идентификаторы пользователя [* описание команд см. ниже]lsign локально подписать выбранные идентификаторы пользователя
tsign подписать выбранные идентификаторы пользователя подписью доверия
nrsign подписать выбранные идентификаторы пользователя без возможности отзыва
adduid добавить идентификатор пользователя
addphoto добавить фотоидентификатор
deluid удалить выбранные идентификаторы пользователя
addkey добавить подключ
addcardkey добавить ключ на криптографическую карту
keytocard переместить ключ на криптографическую карту
bkuptocard переместить архивный ключ на криптографическую карту
delkey удалить выбранные подключи
addrevoker добавить ключ отзыва
delsig удалить подписи с выбранных идентификаторов пользователя
expire сменить срок действия ключа или выбранных подключей
primary пометить выбранный идентификатор пользователя как первичный
pref список предпочтений (экспертам)
showpref список предпочтений (подробный)
setpref установить список предпочтений для выбранных идентификаторов пользователя
keyserver установить URL предпочтительного сервера ключей для выбранных идентификаторов пользователя
notation установить замечание для выбранных идентификаторов пользователя
passwd сменить фразу-пароль
trust изменить уровень доверия владельцу
revsig отозвать подписи у выбранных идентификаторов пользователя
revuid отозвать выбранные идентификаторы пользователя
revkey отозвать ключ или выбранные подключи
enable подключить ключ
disable отключить ключ
showphoto показать выбранные фотоидентификаторы
clean сжать непригодные идентификаторы пользователей и удалить непригодные подписи из ключа
minimize сжать непригодные идентификаторы пользователей и удалить все подписи из ключа
У команды ‘sign’ может быть приставка ‘l’ (локальные подписи, lsign),
‘t’ (подписи доверия, tsign), ‘nr’ (неотзываемые,
nrsign) или любое их сочетание (ltsign, tnrsign и т.д.).

Чтобы окончательно отозвать свой собственный ключ, выдав сертификат о компрометации ключей (вместо USERID введите идентификатор пользователя):

gpg —gen-revoke USERID

Ключ —gen-revoke создаёт сертификат отзыва (кстати, сертификат отзыва генерируется с самого начала, при создании пары ключей), который при распространении среди людей и серверов ключей говорит им, что ваш ключ больше не является валидным.

Для отключения или включения публичного ключа в своём собственном public key ring:

gpg —batch —edit-key USERID disable

gpg —batch —edit-key USERID enable

Для смены пароля приватного ключа (замените ‘Alexey Miloserdov’ на ваш идентификатор пользователя):

gpg —batch —edit-key ‘Alexey Miloserdov’ passwd

Изменить уровень доверия владельцу:

gpg —edit-key ‘Alexey Miloserdov’ trust

Будет выведено сообщение:

Укажите, насколько Вы доверяете данному пользователю в вопросах проверки достоверности ключей других пользователей (проверяет паспорт, сверяет отпечатки ключей из разных источников и т.п.)

И вам нужно будет сделать выбор, введя одну из следующих цифр:

1 = Не знаю или не буду отвечать
2 = НЕ доверяю
3 = Доверяю ограниченно
4 = Полностью доверяю
5 = Абсолютно доверяю

Как указать идентификатор пользователя в GPG

Идентификатор пользователя можно указать различными способами:

  • полное имя и фамилия
  • полный адрес электронной почты
  • отпечаток ключа
  • полный идентификатор пользователя (имя и фамилия, а также адрес электронной почты, например Heinrich Heine )
  • частичное указание имени пользователя или адреса электронной почты
  • другие способы (в целом их довольно много, причём, поддерживается множество операторов сравнения и тестирования условий)

Файлы GPG

Имеется несколько конфигурационных файлов для контроля определённых аспектов операций gpg. Если не сказано другое, ожидается что они размещены в домашней директории текущего пользователя.

Стандартный конфигурационный файл, который gpg считывает при запуске. Он может содержать любое количество валидных длинных опций; можно не вводить начальные две чёрточки, нельзя использовать короткую запись опции. В командной строке можно изменить значение по умолчанию. Следует делать резервную копию этого файла.

Это домашняя папка по умолчанию, которая используется если не установлено другое в переменной окружения GNUPGHOME или опцией —homedir .

Публичный киринг (public keyring). Следует иметь резервную копию этого файла

Файл блокировки для публичного киринга.

Публичный киринг использует различные форматы. Этот файл поделён с gpgsm. Следует иметь резервную копию этого файла. Фактически, это база данных, где хранятся все ключи. Структуру этого файла можно посмотреть командой:

Файл блокировки для ‘pubring.kbx’.

Секретный киринг используемой GnuPG версией до 2.1. Он не используется GnuPG 2.1 и более поздними.

Файл блокировки для секретного киринга.

Файл, показывающий, что сделан переход на GnuPG 2.1.

Доверенная база данных. Нет нужды делать резервную копию этого файла; лучше делать резервную копию значений ownertrust, смотрите опцию —export-ownertrust .

Файл блокировки для доверенной базы данных.

Файл, используемый для сохранения состояния внутреннего пула случайных чисел.

Директория, где хранятся предварительно сгенерированные сертификаты отзыва. Имя файла соответствует отпечатку OpenPGP ключа, для которого этот сертификат. У каждого, у кого есть доступ к этим файлам, может отозвать ваши ключи. Поэтому эти файлы нужно хранить в секрете и иметь их резервные копии.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

  • Mac os disk utility partition not active
  • Mac os disk repair
  • Mac os disk recovery
  • Mac os disk maker
  • Mac os disk imager