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

Защитите свою конфиденциальность с помощью команды 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

gpg --full-generate-key в окне терминала

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

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

вопросы генерации ключей в окне терминала

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

  Как вручную разбить жесткий диск на разделы из командной строки в Linux

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

вопросы генерации ключей в окне терминала

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

окно парольной фразы gpg

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

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

Генерация ключа gpg завершена в окне терминала

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

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

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

gpg --output ~/revocation.crt --gen-revoke [email protected]

gpg --output ~ / revocation.crt --gen-revoke dave-geek@protonmail.com в окне терминала

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

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

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

вопросы о сертификате gpg в окне терминала

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

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

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

chmod 600 ~/revocation.crt

chmod 600 ~ / revocation.crt в окне терминала

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

ls -l

http://cryptocouple.com/ в окне терминала

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

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

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

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

gpg --import mary-geek.key

gpg --import mary-geek.key в окне терминала

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

успешно импортированный ключ в окне терминала

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

  8 вещей, которые нужно сделать после установки Linux Mint 19

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

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

gpg --keyserver pgp.mit.edu --search-keys [email protected]

gpg --keyserver pgp.mit.edu --search-keys mary-geek@protonmail.com в окне терминала

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

gpg keyserver приводит к окну терминала

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

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

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

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

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

gpg --fingerprint [email protected]

gpg --fingerprint mary-geek@protonmail.com в окне терминала

Отпечаток пальца создается.

отпечаток gpg в окне терминала

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

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

gpg --sign-key [email protected]

gpg --sign-key mary-geek@protonmail.com в окне терминала

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

подтверждение подписи ключа gpg в окне терминала

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

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

gpg --output ~/dave-geek.key --armor --export [email protected]

gpg --output ~ / dave-geek.key --armor --export dave-geek@protonmail.com в окне терминала

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

less dave-geek.key

файл с открытым ключом меньше в окне терминала

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

  3 лучшие операционные системы Linux для образования

файл с открытым ключом меньше в окне терминала

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

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

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

gpg --send-keys --keyserver pgp.mit.edu 31A4E3BE6C022830A804DA0EE9E4D6D0F64EEED4 в окне терминала

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

ключ подтверждения был отправлен на сервер ключей в окне терминала

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

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

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

gpg --encrypt --sign --armor -r [email protected]

gpg --encrypt --sign --armor -r mary-geek@protonmail.com в окне терминала

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

less Raven.txt.asc

меньше Raven.txt.asc в окне терминала

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

Зашифрованное содержимое raven.txt.asc в окне терминала

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

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

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

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

gpg --decrypt coded.asc > plain.txt

gpg --decrypt coded.asc> plain.txt в окне терминала ”width =” 646 ″ height = ”212 ″ onload =” pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon (this); »  onerror = ”this.onerror = null; pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon (this);”> </p>
<p> Давайте посмотрим на файл plain.txt: </p>
<pre> less plain.txt </ pre > <p> <img loading =

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

расшифрованный файл меньше в окне терминала

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

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

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

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

gpg --keyserver pgp.mit.edu --refresh-keys в окне терминала

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

ключ gpg обновляется в окне терминала

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

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

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