Содержание

Как пользоваться gpg: шифрование, расшифровка файлов и сообщений, подпись файлов и проверка подписи, управление ключами.

Часть 4. Шифрование

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

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

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

Например, команда для шифрования файла test.php паролем в gpg:

gpg -c test.php

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

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

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

gpg -e -c -r 'Ivan Ivanov' test.php

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

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

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

gpg -e -r 'Ivan Ivanov' test.php

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

Cледует упомянуть, что при использовании опции -r даже в зашифрованном файле имя адресата может посмотреть кто угодно.

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

gpg -e -R 'Ivan Ivanov' test.php

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

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

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

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

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

gpg -e -a -r 'Ivan Ivanov' test.php

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

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

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

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

В результате зашифрованное сообщение будет выведено в стандартный вывод, то есть в терминал.

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

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

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

Пример использования:

>$ echo 'Я нашёл клад' | gpg -e -a -r 'Ivan Ivanov'


-----BEGIN PGP MESSAGE-----

hQGMA94Hn4cICnU+AQv/XuMtg8MT4UFVGxXBkMMztFtWW9Xd8xGOjrz8Y7+lqh0E
zoPn8TWtapI69QwFmM/Trss+CAqA7feBpafe9VfSj/MoVlpQbtBTMf7DdKX7jIzT
6i8wgykjTmyzRd2l6iOFvJhBBHkmRpiWLA3yKYOzbp4cmGlFbAxfa6rqlIe3SD0+
Qf4lF9me4koWGuBiL93rc0oZR/nIS23ykCbdMlZ/q/9i+l/wP7mLJTl8sRWecwHz
EJX36lTLRUw7a+luwKYtQF92jgnC5D2wbd4MK6P5Ena178DksxP7p/ptGywnaYVa
MR8dMu3nkUv6xZ5QmtHK9jgSViCWPe1jFzp8PDuDduvMkpDTTxfHWGtSW+4ltWHz
O0Tj/3D8UC2lUKdfxIBTdOOVoctmB6zxgWcYphab256D5SEUPBFzT8Cr5gsSW69e
jEnrj/zDDU/t7X6sfrBU+GQk7SFVG56v2YN9vN47t+xVhLFyX+r12Vci3OBo6706
RNhc6S6fxJvEn3DiNxk30lUBKcB7HpWBEO7yvL4ZyUN2+TO4eAclIpuzvhqqiyBE
qYcu6ZvIMYm5dm2VrvBy/SMHJlxipUkLKkEYK9UEhIoD7j0ym6cPZnStw4j4IpR0
Smx9keYO
=scpE
-----END PGP MESSAGE-----

Продолжение

Оглавление