Это старая версия документа!
# Как пользоваться gpg: шифрование, расшифровка файлов и сообщений, подпись файлов и проверка подписи, управление ключами.
## Часть 4. Шифрование
### Шифрование файлов и данных с GPG
1. Первое что нужно знать про шифрование в gpg, что оно может быть:
- ассиметричным (шифруется публичным ключом, расшифровывается приватным) - симметричным (шифруется и расшифровывается приватным ключом, шифруется и расшифровывается одной и той же парольной фразой)
2. Второе, что нужно знать: шифрование можно совмещать с подписыванием файла.
3. Третье: зашифровать можно одним или более публичными ключами.
Для _шифрования файла используя симметричный метод с паролем_ используйте опцию -c (либо её длинный аналог --symmetric):
Например, команда для шифрования файла test.php паролем в gpg: ``` gpg -c test.php ```
В результате шифрования будет создан файл с расширением .gpg (в данном случае это будет файл test.php.gpg).
Для того, чтобы _зашифровать файл симметричным шифрованием с возможностью расшифровки приватным ключом_ (в этом случае его можно будет расшифровать приватным ключом, либо паролем) нужно использовать сразу несколько опций:
- -e — означает шифрование данных - -c — означает симметричное шифрование - -r 'id' — означает зашифровать данные для пользователя с определённым id ( идентификатором )
Например, команда симметричного шифрования файла 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 ```
(!) Обратите внимание, что во всех случаях шифрования оригинальный файл остаётся!!! Вам самим нужно решать, что с ним делать, например, удалить его.
Чтобы каждый раз не вводить имя получателя, можно установить значение по умолчанию опцией --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—-- ```
