Использование GPG для шифрования и цифровой подписи сообщений на Ubuntu 12.04 VPS

GPG, или GNU Privacy Guard – это программа для шифрования на основе открытого ключа. Она обеспечивает безопасную передачу информации и может быть использована для подтверждения подлинности сообщения.

Данное руководство описывает работу и применение GPG. Для демонстрации примеров используется сервер Ubuntu 12.04, но данные инструменты доступны для любого современного дистрибутива Linux.

Шифрование при помощи открытого ключа

Как защитить переписку и подтвердить личность собеседника? Многие пользователи часто сталкиваются с этим вопросом. Большинство программ, пытающихся решить подобную проблему, требуют передачи пароля или других «удостоверений личности» по незащищенной среде.

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

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

Подтверждение личности отправителя

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

Такой подход помогает предотвратить  «подмену личности» посторонним пользователем. Это также гарантирует передачу сообщения без искажений или повреждения файлов.

Установка GPG

Программа GPG должна быть установлена на Ubuntu 12.04 по умолчанию. Если это не так, установите ее с помощью apt-get:

sudo apt-get install gnupg

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

gpg --gen-key

Чтобы настроить ключи, программа задаст несколько вопросов:

Please select what kind of key you want: (1) RSA and RSA (default)
What keysize do you want? 4096
Key is valid for? 0
Is this correct? y
Real name: укажите своё имя
Email address: адрес электронной почты, например, email@address.com
Comment: комментарий, который будет появляться вместе с подписью
Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? O
Enter passphrase: введите фразовый пароль (используйте верхний и нижний регистр, цифры, символы)

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

Теперь полезно открыть новое окно терминала и установить ssh-подключение к VPS. Установите новое ПО, выполните какие-нибудь задачи, то есть, просто максимально используйте машину, чтобы создать необходимую энтропию.

Данный процесс может занять много времени, в зависимости от активности системы.

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

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

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

gpg --gen-revoke your_email@address.com

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

Затем будет предложено оставить комментарий и, наконец, подтвердить выбор.

После этого сертификат отзыва будет выведен на экран. Скопируйте и сохраните в безопасном месте, или распечатайте его для дальнейшего использования:

Revocation certificate created.
Please move it to a medium which you can hide away; if Mallory gets
access to this certificate he can use it to make your key unusable.
It is smart to print this certificate and store it away, just in case
your media become unreadable.  But have some caution:  The print system of
your machine might store the data and make it available to others!
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.4.11 (GNU/Linux)
Comment: A revocation certificate should follow
iQIfBCABAgAJBQJSTxNSAh0AAAoJEIKHahUxGx+E15EP/1BL2pCTqSG9IYbz4CMN
bCW9HgeNpb24BK9u6fAuyH8aieLVD7It80LnSg/+PgG9t4KlzUky5sOoo54Qc3rD
H+JClu4oaRpq25vWd7+Vb2oOwwd/27Y1KRt6TODwK61z20XkGPU2NJ/ATPn9yIR9
4B10QxqqQSpQeB7rr2+Ahsyl5jefswwXmduDziZlZqf+g4lv8lZlJ8C3+GKv06fB
FJwE6XO4Y69LNAeL+tzSE9y5lARKVMfqor/wS7lNBdFzo3BE0w68HN6iD+nDbo8r
xCdQ9E2ui9os/5yf9Y3Uzky1GTLmBhTqPnl8AOyHHLTqqOT47arpwRXXDeNd4B7C
DiE0p1yevG6uZGfhVAkisNfi4VrprTx73NGwyahCc3gO/5e2GnKokCde/NhOknci
Wl4oSL/7a3Wx8h/XKeNvkiurInuZugFnZVKbW5kvIbHDWJOanEQnLJp3Q2tvebrr
BBHyiVeQiEwOpFRvBuZW3znifoGrIc7KMmuEUPvA243xFcRTO3G1D1X9B3TTSlc/
o8jOlv6y2pcdBfp4aUkFtunE4GfXmIfCF5Vn3TkCyBV/Y2aW/fpA3Y+nUy5hPhSt
tprTYmxyjzSvaIw5tjsgylMZ48+qp/Awe34UWL9AWk3DvmydAerAxLdiK/80KJp0
88qdrRRgEuw3qfBJbNZ7oM/o
=isbs
-----END PGP PUBLIC KEY BLOCK-----

Импорт открытых ключей

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

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

gpg --import name_of_pub_key_file

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

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

http://pgp.mit.edu/

Сервер ключей можно также найти в GPG, введя следующее:

gpg --keyserver pgp.mit.edu  --search-keys search_parameters

Подтверждение и подпись ключей

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

Проверка личности другого пользователя

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

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

К счастью, вместо проверки подлинности открытых ключей обеих сторон можно просто сравнить «отпечатки», выведенные из этих ключей. Это дает уверенность в том, что оба открытых ключа верны.

Чтобы получить отпечаток ключа, введите:

gpg --fingerprint your_email@address.com
pub   4096R/311B1F84 2013-10-04
Key fingerprint = CB9E C70F 2421 AF06 7D72  F980 8287 6A15 311B 1F84
uid                  Test User <test.user@address.com>
sub   4096R/8822A56A 2013-10-04

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

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

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

Чтобы подписать полученный ключ, наберите:

gpg --sign-key email@example.com

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

Можно позволить владельцу подписанного ключа «пользоваться» доверительным к нему отношением, отправив ему назад подписанный ключ. Это можно сделать, набрав:

gpg --export --armor email@example.com

Теперь нужно снова ввести ключевую фразу. После этого подписанный открытый ключ  будет выведен на экране. Отправьте его владельцу, чтобы он мог использовать эту «печать одобрения» при общении с другими пользователями.

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

gpg --import file_name

Как сделать открытый ключ максимально доступным?

На самом деле, в том, что другие пользователи имеют доступ к открытому ключу, нет ничего плохого.

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

Чтобы отправить кому-либо открытый ключ, запросите его из системы GPG:

gpg --armor --export your_email@address.com
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.4.11 (GNU/Linux)
mQINBFJPCuABEACiog/sInjg0O2SqgmG1T8n9FroSTdN74uGsRMHHAOuAmGLsTse
9oxeLQpN+r75Ko39RVE88dRcW710fPY0+fjSXBKhpN+raRMUKJp4AX9BJd00YA/4
EpD+8cDK4DuLlLdn1x0q41VUsznXrnMpQedRmAL9f9bL6pbLTJhaKeorTokTvdn6
5VT3pb2o+jr6NETaUxd99ZG/osPar9tNThVLIIzG1nDabcTFbMB+w7wOJuhXyTLQ
JBU9xmavTM71PfV6Pkh4j1pfWImXc1D8dS+jcvKeXInBfm2XZsfOCesk12YnK3Nc
u1Xe1lxzSt7Cegum4S/YuxmYoh462oGZ7FA4Cr2lvAPVpO9zmgQ8JITXiqYg2wB3
. . .

Затем можно скопировать и вставить его в текстовый файл или отправить его по подходящему каналу.

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

Также это можно сделать через интерфейс GPG.

Просмотрите идентификатор своего ключа, набрав:

gpg --list-keys your_email@address.com

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

pub   4096R/311B1F84 2013-10-04
uid                  Test User <test.user@address.com>
sub   4096R/8822A56A 2013-10-04

Чтобы загрузить открытый ключ на сервер ключей, используйте следующий синтаксис:

gpg --send-keys --keyserver pgp.mit.edu key_id

Шифрование и дешифровка сообщений при помощи GPG

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

Шифрование сообщений

Для шифрования сообщений используется флаг «–encrypt». Базовый синтаксис выглядит так:

gpg --encrypt --sign --armor -r person@email.com name_of_file

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

Нужно также добавить флаг второго получателя  «-r», чтобы иметь возможность позже прочесть данное сообщение (поскольку сообщение шифруется для открытого ключа любого пользователя, но может быть открыто только при помощи определенного закрытого ключа).

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

Расшифровывание сообщений

Получив сообщение, просто вызовите GPG на файл сообщения:

gpg file_name

В случае необходимости программа выдаст подсказку.

Если сообщение имеет вид чистого текстового потока, то его можно скопировать и вставить, перед этим набрав gpg безо всяких аргументов. Можно нажать «CTRL-D», чтобы обозначить конец сообщения, и GPG расшифрует его.

Обслуживание ключей

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

Чтобы просмотреть список доступных GPG-ключей других пользователей, используйте команду:

gpg --list-keys

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

Обновить информацию о ключах можно с помощью команды:

gpg --refresh-keys

Это действие  извлекает новую информацию из ключевых серверов.

Чтобы получить информацию из определенного сервера ключей, используйте:

gpg --keyserver key_server --refresh-keys

Итоги

Правильное использование программы GPG обезопасит переписку. Это очень полезно как при работе с конфиденциальной информацией, так и в обыденной переписке.

Поскольку определенные зашифрованные сообщения могут быть помечены программами мониторинга, рекомендуется использовать шифрование сообщений для любой, не только секретной, переписки. Тогда постороннему будет сложнее определить, что в сообщении: секретная информация или просто «Привет».

Шифрования GPG имеет смысл, только если обе стороны используют передовые технологии безопасности, а также соблюдают  правила защиты информации.

Tags: , , , ,

Добавить комментарий