В Linux универсальным инструментом шифрования является пакет Вернера Коха [Werner Koch] Gnu Privacy Guard (GnuPG). Команда его основного приложения (gpg) воскрешает память о Pretty Good Privacy (PGP), инструменте шифрования, выпущенном в 1991 г. Филом Циммерманом [Phil Zimmermann]. Более подробнее о GPG вы узнаете в статье «Шифрование GPG».
Ныне OpenPGP является стандартом, определяющим способы хранения шифрованных сообщений и связанных с ними битов, и GnuPG в полной мере реализует этот стандарт.
GnuPG работает из командной строки и имеет репутацию сложного и неудобного инструмента. Он предоставляет пользователю все современные алгоритмы приватного и публичного ключа, а также разнообразные рычажки управления, которые вы можете крутить как угодно.
В результате у вас имеется огромное количество опций командной строки и man-страниц для долгого чтения. В большинстве дистрибутивов GnuPG установлен по умолчанию, так что в рамках этой инструкции нам не придется заниматься установкой.
Как пользоваться GnuPG в Linux
Традиционное симметричное шифрование (когда две стороны делят секретный ключ или пароль) — это хорошо, но оно предполагает, что общающиеся стороны сперва поделились ключом через безопасный канал. Как правило, это предполагает крамольную встречу на темной парковке, возможно, обмен портфелями, и в идеале — уничтожение любой записи с ключом или паролем. Никто не знает, что или кто скрывается во мраке в подобных местах, и лучше бы вообще избегать подобных ситуаций. Поэтому давайте создадим пару ключей и посмотрим, как работает шифрование с публичным ключом.
Создание ключей в GnuPG
Введите
1 |
$ gpg -full-gen-key |
На первые три вопроса примите настройки по умолчанию. Мы создадим 2048-битный RSA-ключ с RSA-подключом, и этот ключ не будет иметь срока годности.
Затем на вопрос «Верно ли это [Is this correct?]?» надо ответить «Да [Yes]».
У вас спросят имя и адрес электронной почты. Эта информация будет храниться с публичным ключом, и хорошей практикой является сделать этот ключ как можно шире известным — поэтому не используйте своего настоящего имении основного адреса электронной почты, если не хотите сделать эти данные общественным достоянием. Используемый здесь адрес электронной почты не должен обязательно совпадать с тем адресом, с которого вы будете отправлять свои зашифрованные сообщения.
Затем у вас спросят парольную фразу для защиты ключа. Создание ключа требует энтропии (случайных данных), поэтому во время создания ключа вас попросят понажимать на клавиатуру и пошаркать мышью.
После этого можете проверить, что все сделано, с помощью
1 |
gpg --list-keys |
GnuPG надежно хранит все сгенерированные ключи в наборе ключей. При необходимости их можно импортировать и экспортировать; но, перемещая приватный ключ, следует соблюдать крайнюю осторожность.
Поскольку своим публичным ключом вам надо делиться, экспортируйте ключ с помощью
1 |
$ gpg --output lxfpublic.key --armor --export |
заменив на адрес электронной почты, использованный при создании ключа.
Полученный в результате файл можно отправить вашим товарищам по конспирации, и они смогут импортировать его с помощью
1 |
$ gpg --import lxfpublic.key |
В качестве альтернативы, его можно загрузить на сервер ключей, чтобы вас мог найти любой.
Использование GnuPG
Чтобы отправить вам шифрованное сообщение, скажем, instructions.txt, ваш коллега должен ввести
1 |
$ gpg --recipient --encrypt instructions.txt |
и отправить вам полученный файл instructions.txt.gpg.
Ему также следует удалить исходный файл (например, с помощью shred) — как и вам после его получения.
И это было очень краткое введение в GPG на Linux, не такое уж мучительное. Однако если вы предпочитаете графический интерфейс, для вас есть GPA (Gnu Privacy Assistant), а также отличный плагин Enigmail для Thunderbird.
Сеть Доверия и стороны, подписывающие ключ
Ранее мы упомянули загрузку вашего ключа на сервер ключей. Если у вас есть чей-то публичный ключ, то вы знаете, что только владелец соответствующего приватного ключа может прочитать шифрованные сообщения, отправленные им.
Проблема в том, что если только вы не обменивались ключами лично, то нет никакой гарантии, что публичный ключ взаправду принадлежит тому, кому он, по вашему мнению, должен принадлежать: с тем же успехом он может принадлежать и самозванцу. Поэтому стоит как можно больше рекламировать свой ключ: разместите его на нескольких серверах ключей, на вашем сайте, в вашей подписи электронной почты. И наоборот: прежде чем поверить случайному публичному ключу, сделайте фоновую проверку. Все эти вещи потенциально можно взломать, так что есть и другой путь. Если вы встречали человека лично или по иной причине уверены в подлинности его публичного ключа, можете его подписать.
Можно создать эти отношения для создания централизованной структуры, известной как Сеть Доверия. Со временем люди увидят, чьи ключи вы подписали, и если они доверяют вам, то станут доверять и этим ключам.
Чтобы положить некое начало этому процессу, можно устроить вечеринку подписи ключей, где участники — помимо прочего веселья — встретятся лично, удостоверят ID фото и подпишут ключи и сертификаты. Вымышленная вечеринка подписи ключей в романе Кори Доктороу «Младший брат» проходит на пляже в Калифорнии — а где будет проходить ваша?
Вас также может заинтересовать обзор лучших анонимных Linux дистрибутивов.