Вы здесь

Выжимки из инструкции по GnuPG

На данной странице описаны базовые команды GnuPG 2.x.

Обобщённый формат вызова GnuPG:

gpg --опция ... --команда [имя ключа]

Команды указывают желаемое действие, а опции - параметры для выполнения этого действия. Опции указываются до команд. Некоторые команды переводя gpg в интерактивный режим.

В качестве имени ключа может использоваться цифровой отпечаток (fingerprint), идентификатор ключа (key ID) или e-mail владельца. В дальнейшем имя ключа будет заменяться на mykey .

Общие опции

  • --homedir /the-secret-place - каталог, в котором хранятся данные gpg. Опция имеет более высокий приоритет, чем переменная окружения GNUPGHOME. По умолчанию в Linux используется каталог ~/.gnupg, в Windows %AppData%\Roaming\gnupg
  • --output file - имя файла для сохранения результата. По умолчанию результат выдаётся на stdout
  • --armor результат выводится в текстовой кодировке (Radix64=Base64+CRC). По умолчанию - результат двоичный

Генерация новой пары ключей

gpg --gen-key

В GnuPG версии 2.1.x* и старше --gen-key предлагает ввести только имя, e-mail и пароль для секретного ключа, подставляя остальные параметры по умолчанию. Для полного диалога в этих версиях необходимо использовать команду --full-gen-key, возможно с опцией --expert, которая добавляет расширенный выбор алгоритмов шифрования.

В результате выполнения команды --gen-key генерируется два ключа: мастер-ключ, он же ключ подписи, и ключ шифрования. Оба ключа используют алгоритм шифрования rsa2048 и имеют срок жизни два года. Кроме того автоматически формируется сертификат отзыва.

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

Немного о вводимых параметрах:

  • Идентификатор владельца ключа (UID) в OpenPGP имеет формат "Полное имя (комментарий) <адрес e-mail>". Идентификатор связывает ключ с определенным человеком. Поскольку OpenPGP в значительной мере ориентирован на использование совместно электронной почтой, то основным идентификатором является e-mail, а полное имя, это лишь вспомогательный элемент.

  • Пароль для шифрования секретного ключа должен быть достаточно сложным для взлома. Утеря секретного ключа сводит на нет всю систему шифровальной защиты и потому ключ хранится на диске в зашифрованном виде. В идеальном случае ключ должен храниться на съемном носителе (флешке) в физически защищенном месте. Если злоумышленник получит доступ к файлу секретного ключа, то пароль к нему будет последней линией обороны.

Создание отзывающего сертификата

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

gpg --output revoke.asc --gen-revoke mykey

Сертификат отзыва сохраняется в текстовой кодировке.

Добавление/удаление/отзыв идентификаторов

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

gpg --edit-key mykey

В диалоговом режиме ввести команду adduid

gpg> adduid
Real Name: My work email
E-mail: my@example.com

После создания нового идентификатора следует отметить степень доверия к нему и назначить, какой UID будет основным. Команда uid помечает/снимает отметку с UIDов, к которым будет применена следующая команда

gpg> uid <number>
gpg> trust
     (5 = ultimate trust)
gpg> uid <number>
gpg> primary
gpg> save

Удаление идентификатора

gpg> uid <number>
gpg> deluid

Отзыв идентификатора

gpg> uid <number>
gpg> revuid

Экспорт открытого ключа

Перед тем как послать кому-либо открытый ключ необходимо экспортировать его командой --export:

gpg --armor --output alice.gpg --export my@example.com

Опция --armor указывает, что ключ будет сохранён в формате ASCII.

Импорт открытого ключа

После обмена ключами открытый ключ партнера может быть добавлен к связке открытых ключей при помощи команды --import:

gpg --import blake.asc

Просмотр ключей

gpg --list-keys

/home/alice/.gnupg/pubring.gpg
pub 1024R/B115BDB6 2002–05–01 Alice (test key) <alice@wonderland.uk>
pub 1024R/01A1FE63 2002–05–01 Blake (dumb) <blake@anywhere.ru>
sub 1024R/526C7F7F 2002–05–01 [expires: 2003–05–01]

Установка степени доверия к ключу

Для того, чтобы проверить достоверность ключа используется цифровой отпечаток (fingerprint) ключа. После проверки ключ заверяется подписью, для подтверждения того, что он достоверен. Ожидаемый отпечаток ключа передается через надёжный канал связи, например зачитывается владельцем по телефону.

Отпечаток ключа можно просмотреть командой --fingerprint.

gpg --fingerprint alice@wonderland.uk
pub 1024R/B115BDB6 2002–05–01 Alice (test key) <alice@wonderland.uk>
Key fingerprint = DE49 CDEF 12A3 8B7B 272B A572 C73A 9987 B115 BDB6

Или

gpg --fingerprint
/home/test/.gnupg/pubring.gpg
pub 1024R/B115BDB6 2002–05–01 Alice (test key) <alice@wonderland.uk>
Key fingerprint = DE49 CDEF 12A3 8B7B 272B A572 C73A 9987 B115 BDB6
pub 1024R/01A1FE63 2002–05–01 Blake (dumb) <blake@anywhere.ru>
Key fingerprint = 80B8 1955 7D68 FE4F D882 DAD1 D85C 124A 01A1 FE63
sub 1024R/526C7F7F 2002–05–01 [expires: 2003–05–01]

Подпись доверенного ключа

Для подписи ключа необходимо перейти в режим редактирования ключа при помощи команды --edit-key:

gpg --edit-key blake@anywhere.ru

В диалоговом режиме ввести команду sign:

gpg> sign

Подтвердить желание подписать ключ и ввести пароль секретного ключа

Указать, с какой степенью достоверности проверен ключ

gpg> trust

 Укажите, насколько Вы доверяете данному пользователю в вопросах проверки
достоверности ключей других пользователей (проверяет паспорт,
сверяет отпечатки ключей из разных источников и т.п.)
 1 = Не знаю или не буду отвечать
 2 = НЕ доверяю
 3 = Доверяю ограниченно
 4 = Полностью доверяю
 5 = Абсолютно доверяю

Выход из режима редактирования и сохранение изменений

gpg> quit

Шифрование

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

gpg --output message.gpg --encrypt --recipient blake@anywhere.ru message.txt

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

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

Дешифрование

Для расшифровки сообщения используется команда --decrypt. Зашифрованный документ может быть расшифрован только тем, чей секретный ключ соответствует одному из указанных открытых ключей. В частности, отправитель не можете расшифровать зашифрованный им документ, если он не включил свой открытый ключ в список получателей.

gpg --output message.txt --decrypt message.gpg

Для доступа к секретному ключу необходимо ввести пароль

You need a passphrase to unlock the secret key for
user: «Blake (dumb) <blake@anywhere.ru>"
1024-bit RSA key, ID 526C7F7F, created 2002–05–01 (main key ID 01A1FE63)

Enter passphrase:

Симметричное шифрование

Документы можно шифровать и без открытого ключа. Вместо этого используется симметричный алгоритм для шифрования документа. Ключ, используемый при шифровании, образуется из ключевой фразы. Для большей безопасности эта ключевая фраза не должна совпадать с той, которая используется для защиты секретного ключа. Симметричный шифр применим, когда есть возможность обменяться ключевой фразой. Для использования симметричного шифра применяется команда --symmetric.

gpg --output message.gpg --symmetric message.txt
Enter passphrase:

Цифровые подписи

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

Для подписи документов используется команда --sign.

gpg --output file.sig --sign file.bin

You need a passphrase to unlock the secret key for
user: «Alice (test key) <alice@wonderland.uk>"
1024-bit RSA key, ID B115BDB6, created 2002–05–01

Enter passphrase:

Перед подписью документ сжимается. Подписанный документ выводится в двоичном формате.

У подписанный документ можно либо просто проверить подпись, либо проверить подпись и восстановить исходный документ. Для проверки подписи используется команда --verify. Для проверки подписи и извлечения документа используется команда --decrypt.

gpg --output file.bin --decrypt file.sig
gpg: Signature made Sat May 4 19:04:21 2002 MSD using RSA key ID B115BDB6
gpg: Good signature from «Alice (test key) <alice@wonderland.uk>"

Прозрачно подписанные (сlearsigned) документы

Обычно цифровые подписи применяются для отправки электронной почты. При этом нежелательно сжимать подписываемые документы. Команда --clearsign добавляет к документу цифровую подпись в формате ASCII, не изменяя при этом сам документ.

gpg --output doc.asc --clearsign doc.txt

Можно получить подпись, хранящуюся отдельно от документа

gpg --output doc.sig --detach-sign doc.txt

Для проверки подписи необходимы и подпись, и сам документ. Для проверки используется команда --verify.

gpg --verify doc.sig doc.txt
gpg: Signature made Sat May 4 19:34:08 2002 MSD using RSA key ID B115BDB6
gpg: Good signature from «Alice (test key) <alice@wonderland.uk>"
Яндекс.Метрика