May 23, 2022

Практическое руководство по GPG: Шифрование и расшифровка файлов

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

Принцип работы шифрования GPG

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

  • Импортируйте открытый ключ получателя в свою связку ключей.
  • Зашифруйте файл с помощью открытого ключа получателя.
  • Отправьте зашифрованный файл получателю.
  • Получатель расшифровывает файл с помощью своего личного ключа.

Шаг 1: Создание второй учетной записи пользователя

Нам понадобится еще одна учетная запись пользователя для тестирования.

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

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

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

su - test 

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

В части 2 мы загрузили открытый ключ на сервер ключей с помощью следующей команды:

gpg --send-key key-id 

Теперь вы можете просто выполнить следующую команду для импорта открытого ключа.

Идентификатор пользователя – это ваш адрес электронной почты GPG.

gpg --search user-id 

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

gpg --send-key key-id 

Теперь вы можете просто выполнить следующую команду для импорта открытого ключа.

Идентификатор пользователя – это ваш адрес электронной почты GPG.

gpg --search user-id 

Как видите, на сервере ключей найдена одна запись с моим адресом электронной почты, поэтому введите цифру 1, чтобы импортировать этот ключ.

Затем проверьте фингер принт этого ключа:

gpg --fingerprint user-id 

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

Однако мы проводим тестирование, поэтому сейчас вам не нужно этого делать.

gpg --sign-key key-id 

Шаг 3: Зашифруйте файл с помощью открытого ключа

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

echo "This file is encrypted with GPG" | tee test-file.txt 

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

gpg --recipient user-id --encrypt --armor test-file.txt 

Обратите внимание на предупреждение “There’s no assurance this key belongs to the named user..

Это потому, что мы не подписали открытый ключ получателя на предыдущем шаге. Нажмите y и Enter.

Будет создан файл с расширением .asc, который является зашифрованным файлом, также известным как ciphertext.

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

gpg --recipient user-id1 --recipient user-id2 --encrypt --armor test-file.txt 

Шаг 4: Расшифровка файла с помощью закрытого ключа

Теперь вернитесь к исходной учетной записи и скопируйте файл test-file.txt.asc.

sudo cp /home/test/test-file.txt.asc ~ 

Затем введите следующую команду для его расшифровки.

gpg --decrypt --pinentry-mode=loopback test-file.txt.asc > decrypted.txt 

Он попросит вас ввести кодовую фразу для разблокировки закрытого ключа.

После этого расшифрованное содержимое будет сохранено как decrypted.txt.

Теперь вы можете проверить содержимое файла decrypted.txt.

cat decrypted.txt 

Вывод:

This file is encrypted with GPG 

Заключение

Теперь вы узнали, как шифровать и расшифровывать файлы с помощью GPG из командной строки.