Как зашифровать и расшифровать файлы с помощью GPG в Linux

4 февраля 2021 |

Как зашифровать и расшифровать файлы с помощью GPG в Linux

Linux terminal window on a laptop Фатмавати Ахмад Зэнури / Shutterstock.com

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

GnuPrivacy Guard (GPG) позволяет надежно шифровать файлы, чтобы только предполагаемый получатель мог их расшифровать. В частности, GPG соответствует стандарту OpenPGP. Он создан по образцу программы под названием Pretty Good Privacy (PGP).PGP был написан в 1991 году Филом Циммерманом.

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

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

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

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

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

Команда gpg была установлена ​​во всех проверенных дистрибутивах Linux, включая Ubuntu, Fedora и Manjaro.

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

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

gpg —full-generate-key

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

Вы должны выбрать длину в битах для ключей шифрования. Нажмите Enter, чтобы принять значение по умолчанию.

Вам необходимо указать, как долго должна длиться клавиша. Если вы тестируете систему, введите короткую продолжительность, например 5 для пяти дней. Если вы собираетесь сохранить этот ключ, введите более длительный срок, например 1 год в течение одного года. Срок службы ключа составляет 12 месяцев, поэтому его нужно будет продлить через год. Подтвердите свой выбор буквой Y.

Вы должны ввести свое имя и адрес электронной почты. При желании вы можете добавить комментарий.

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

gpg passphrase window

Нажмите кнопку OK, когда вы ввели парольную фразу. Вы будете видеть это окно во время работы с gpg, поэтому не забудьте запомнить кодовую фразу.

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

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

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

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

gpg —output ~ / revocation.crt —gen-revoke dave-geek@protonmail.com

Вам будет предложено подтвердить, что вы хотите создать сертификат. Нажмите Y и нажмите Enter. Вам будет предложено указать причину, по которой вы создаете сертификат. Поскольку мы делаем это заранее, мы не знаем наверняка. Нажмите 1 в качестве вероятного предположения и нажмите Enter.

Вы можете ввести описание, если хотите. Дважды нажмите Enter, чтобы завершить описание.

Вам будет предложено подтвердить настройки, нажмите Y и нажмите Enter.

Сертификат будет быть сгенерирован. Вы увидите сообщение, подтверждающее необходимость хранить этот сертификат в безопасности.

Здесь упоминается некто по имени Мэллори. В дискуссиях о криптографии Боб и Алиса уже давно общаются друг с другом. Есть и другие второстепенные персонажи. Ева — перехватчик, Мэллори — злоумышленник. Все, что нам нужно знать, — это хранить сертификат в безопасности.

Как минимум, давайте удалим из сертификата все разрешения, кроме наших.

chmod 600 ~ / revocation.crt

Давайте посмотрим с ls, чтобы узнать, какое сейчас разрешение:

ls -l

Это идеально. Никто, кроме владельца файла — нас — не может ничего сделать с сертификатом.

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

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

Если вам предоставили их ключ в файле, вы можете импортировать его с помощью следующей команды. В этом примере файл ключа называется «mary-geek.key».

gpg —import mary-geek.key

gpg --import mary-geek.key ina terminal window

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

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

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

За параметром —keyserver должно следовать имя сервера ключей, который вы хотите найти. За параметром —search-keys должно следовать либо имя человека, которого вы ищете, либо его адрес электронной почты. Мы будем использовать адрес электронной почты:

gpg —keyserver pgp.mit.edu —search-keys mary-geek@protonmail.com

Перечислены совпадения для вас и пронумерованы. Чтобы импортировать один, введите номер и нажмите Enter. В данном случае совпадение одно, поэтому мы вводим 1 и нажимаем Enter.

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

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

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

Параметр —fingerprint заставляет gpg создавать короткую последовательность из десяти наборов из четырех шестнадцатеричных символов. Вы можете попросить человека прислать вам отпечаток своего ключа.

Затем вы можете использовать параметр —fingerprint, чтобы сгенерировать ту же последовательность отпечатков пальцев из шестнадцатеричных символов и сравнить их. Если они совпадают, вы знаете, что ключ принадлежит этому человеку.

gpg —fingerprint mary-geek@protonmail.com

Генерируется отпечаток пальца.

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

Если вы этого не сделаете, вы все равно можете использовать его для шифрования и дешифрования сообщений от и к этому человеку. Но gpg каждый раз будет спрашивать вас, хотите ли вы продолжить, потому что ключ без подписи. Мы воспользуемся метко названной опцией —sign-key и предоставим адрес электронной почты человека, чтобы gpg знало, какой ключ подписывать.

gpg —sign-key mary-geek@protonmail.com

Вы увидите информацию о ключе и человеке, и вам будет предложено подтвердить вас очень хочу подписать ключ. Нажмите Y и нажмите Enter, чтобы подписать ключ.

Как поделиться своим открытым ключом

Чтобы поделиться своим ключом в виде файла, нам нужно экспортировать его из gpg местное хранилище ключей. Для этого мы воспользуемся параметром —export, после которого должен быть указан адрес электронной почты, который вы использовали для генерации ключа. После опции —output должно быть указано имя файла, в который вы хотите экспортировать ключ. Параметр —armor указывает gpg генерировать выходные данные брони ASCII вместо двоичного файла.

gpg —output ~ / dave-geek.key —armor —export dave-geek@protonmail.com

Мы можем заглянуть внутрь ключевого файла с помощью less.

less dave-geek.key

Ключ показан во всей красе:

Вы также можете поделиться своим открытым ключом на сервере открытых ключей. Параметр —send-keys отправляет ключ на сервер ключей. За параметром —keyserver должен следовать веб-адрес сервера открытых ключей. Чтобы определить, какой ключ отправить, в командной строке должен быть указан отпечаток ключа. Обратите внимание, что между наборами из четырех символов нет пробелов.

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

gpg —send-keys —keyserver pgp.mit.edu 31A4E3BE6C022830A804DA0EE9E4D6D0F64EEED4

Вы получите подтверждение, что ключ был отправлен.

Шифрование файлов

Наконец-то мы готовы зашифровать файл и отправить это Мэри. Файл называется Raven.txt.

Параметр —encrypt указывает gpg зашифровать файл, а параметр —sign указывает ему подписать файл вашими данными. Параметр —armor указывает gpg создать файл ASCII. За параметром -r (получатель) должен следовать адрес электронной почты человека, которому вы отправляете файл.

gpg —encrypt —sign —armor -r mary-geek@protonmail.com

Файл создается с тем же именем, что и оригинал, но с добавлением «.asc» к имени файла. Давайте заглянем внутрь.

less Raven.txt.asc

Файл полностью неразборчив, и его может расшифровать только тот, у кого есть ваш открытый ключ и Закрытый ключ Мэри. И то, и другое должно быть у Мэри.

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

Расшифровка файлов

Мэри отправила ответ. Он находится в зашифрованном файле под названием coded.asc. Мы можем очень легко его расшифровать, используя параметр —decrypt. Мы собираемся перенаправить вывод в другой файл с именем plain.txt.

Обратите внимание, что нам не нужно сообщать gpg, от кого этот файл. Это можно сделать из зашифрованного содержимого файла.

gpg —decrypt coded.asc & gt, plain.txt

Давайте посмотрим на plain.txt file:

less plain.txt

Файл был успешно расшифрован для нас.

Обновление ваших ключей

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

Параметр —refresh-keys заставляет gpg выполнять проверку. За параметром —keyserver должен следовать выбранный вами сервер ключей. После того, как ключи были синхронизированы между серверами открытых ключей, не имеет значения, какой из них вы выберете.

gpg —keyserver pgp.mit.edu —refresh-keys

gpg отвечает, перечисляя ключи, которые он проверяет, и сообщает вам, были ли они изменены и обновлены.

Конфиденциальность — горячая тема

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

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

Как зашифровать и расшифровать файлы с помощью GPG в Linux


Напишите пару строк: