что такое публичный pgp ключ и как его установить
Шифрование PGP
Аутентификация гарантирует, что если некоторая информация была создана Вами и выложена для публичного доступа, то она действительно поступила от Вас и не была никем фальсифицирована или изменена в пути.
PGP основана на криптографической системе, известной как открытый ключ, которая может быть использована на ненадежных каналах. Это делает ее идеальной для обеспечения защиты информации, передаваемой по таким сетям, как Internet.
В системах с открытым ключом каждый из участников информационного обмена имеет два ключа, взаимно дополняющих друг друга; один является открытым ключом, а другой закрытым. Открытый ключ может и должен быть свободно доступным, так как он является именно тем ключом, который отправитель использует для шифрования передаваемой Вам информации. Закрытый ключ ни в коем случае не должен распространяться. Именно он гарантирует безопасность передаваемых данных.
Вы посылаете письмо в список рассылки для своих клиентов. При этом подписчики списка хотят быть уверены что это именно Вы послали сообщение и что оно не было изменено каким-либо посторонним лицом. Подписываем сообщение с помощью своего закрытого ключа и вставляем подпись в письмо. Теперь все клиенты, у которых есть открытый ключ, могут с помощью него проверить, действительно ли Вы послали это письмо и не изменено ли оно кем-либо.
На наших машинах установлены две версии PGP:
В PGP версии 2.6.3ia для криптования используется алгоритм RSA, а в версии 6.5.1i добавлен алгоритм DSS/DH.
Теперь можете приступать к использованию PGP
Создание пары ключей
Чтобы начать использовать PGP, нужно создать собственную пару ключей (открытый/закрытый). Чтобы это сделать, выполните команду:
Вас попросят выбрать максимальный размер ключа (512, 768 или 1024 байт). Чем больше ключ, тем более надежным он будет, правда ценой небольшого снижения быстродействия при шифровании.
После выбора размера нужно задать идентификатор открытого ключа. Обычно здесь указывают свои имена и/или e-mail адрес. Например:
Далее нужно задать пароль, который будет защищать закрытый ключ. Это необходимо для защиты закрытого ключа. Например, если кто-нибудь украдет его, ключ будет бесполезен без пароля. Наконец, программа попросит в произвольном порядке нажать несколько клавиш на клавиатуре чтобы она могла создать последовательность случайных чисел. Через несколько секунд PGP создаст ключи и известит об этом соответствующим сообщением. После того, как ключи были сгенерированы должным образом, они сохраняются в каталоге
Добавление ключей в файл
Теперь Вам, вероятно, захочется добавить открытые ключи людей, с которыми есть желание обмениваться шифрованными сообщениями. Для этого потребуется получить открытые ключи Ваших корреспондентов: с сервера ключей, непосредственно от конкретных людей, по e-mail, и т.д. Вспомним, что открытые ключи распространяются свободно и нет необходимости передавать их по безопасному каналу. Если в файле somekey.pgp содержится ключ и есть желание добавить его в файл ключей, процедура такова:
Удаление ключа из файла
Удалить ненужный ключ из файла можно командой
После сохранения ключей друзей в файле необходимо послать им свой открытый ключ. Прежде всего его необходимо выделить из собственного файла открытых ключей:
Созданный файл mykey.pgp будет не в формате ASCII. Однако, если потребуется создать файл ключа в формате ASCII чтобы послать, к примеру, по e-mail или добавить дополнительную информацию к базе данных, потребуется использовать команду:
Вместе с ключом также выделяются все сертификаты, которые его подтверждают.
Содержание файлов с ключами
Чтобы просмотреть ключи, содержащиеся в файле, наберите команду:
Еще раз заметим, что файлом по умолчанию является pubring.pgp. Если идентификатор не указан явно, то показываются все ключи из файла. Чтобы просмотреть все сертификаты каждого ключа, необходимо набрать:
Теперь попробуем зашифровать файл. Сделать это можно командой:
Эта команда создает файл с именем файл.pgp, содержащий исходный файл, зашифрованный так, что только получатель может его расшифровать с помощью своего закрытого ключа.
Кодирование сообщения для нескольких получателей
Допустим, необходимо зашифровать и отправить письмо для нескольких получателей. В этом случае поступим так:
Как подписывается сообщение
Подписывание документа позволяет получателю удостовериться в том, что текст написан действительно отправителем и что сообщение не было изменено. Чтобы подписать документ, необходимо использовать закрытый ключ:
Если у нас есть несколько закрытых ключей в нашем secring.pgp, мы можем выбрать один из них при помощи идентификатора. Эта команда создает файл, который не является ASCII-текстом, потому что PGP пытается сжать файл. Если, с другой стороны, Вы хотите подписать файл, оставив текст читабельным и с подписью в конце, то процедура будет выглядеть так :
Эта последняя команда очень полезна при подписывании электронной почты, которую и дальше можно будет читать без использования PGP. Также такое сообщение смогут читать те, кому не обязательно проверять подпись.
Кроме того, можно подписать документ и затем закодировать его при помощи следующей команды:
Для расшифровки файла и/или проверки его подписи используется команда:
pgp входной_файл [-o выходной_файл]
Также можно просто просмотреть расшифрованный файл без сохранения:
Шифрование с использованием PGP
Иногда сталкиваешься с ситуацией, когда в довольно большом предприятии совершенно не понимают (или не хотят понимать) зачем необходимо шифрование данных, каналов связи, почтовой переписки. Такая ситуация имеет место и на моей работе. Разрубить этот гордиев узел помогла ситуация со странной утерей данных клиент-банка.
Сейчас в несколько этапов проходит обучение коллектива азам работы с программой gpg. Решение использовать для шифрования почтовой переписки, файлов утилиту GnuPG принято из-за ее доступности в различных дистрибутивах Linux. Вы спросите — чего Linux делает в предприятии. Я отвечу так — в следствии упорной 3-х месячной работы сеть из порядка 200 пк была с 90%-ым успехом переведена на linux, о чем я возможно расскажу немного позже.
Разберемся для начала с азами и принципами шифрования. Разбирать будем систему, известную под названием шифрование открытым ключом(public key encryption), которая стала фактическим стандартом шифрования разного рода информации.
Эта схема использует два ключа: один — личный ключ, который хранится только у пользователя, и второй — открытый ключ, который находится в публичном доступе и передается другим пользователям. Открытый ключ, принадлежащий самому пользователю или тому, кому он хочет послать зашифрованную информацию, используется для шифрования. И только владелец соответствующего личного ключа сможет расшифровать данные. Есть также и третий ключ, называемый ключом сеанса. Он генерируется автоматически и используется для шифрования и расшифровки. А поскольку все это выполняется автоматически, он редко упоминается в описании процесса.
Широкое распространение получили два пакета шифрования по схеме открытого ключа. Первый — коммерческий PGP(Pretty Cood Privacy), GPG (GNU Privacy Guard), который является свободной реализацией PGP. Второй — OpenSSH. Далее мы будем рассматривать только GPG, ввиду его открытости и распространенности.
Основной задачей GPG является выполнение процедуры шифрования файлов. Он не устанавливает защищенные каналы передачи данных, как это делает OpenSSH. Он просто шифрует данные и проверяет их целостность.
Первое что нужно сделать перед началом работы с GPG — это создать пару ключей: открытый и личный. Лучше всего это сделать под той учетной записью, под которой постоянно работаете. Команда для создания ключей такая:
В процессе генерации необходимо выбрать тип ключа (по умолчанию годится первый вариант), его размер, срок действительности, имя пользователя, e-mail, пароль. Все эти пункты интуитивно понятны и останавливаться на них я не буду.
часть команды “> user.pub.key.asc” служит для перенаправления вывода не на экран, а в файл.
Для того чтобы увидеть идентификатор ключа, можно запустить проверку ключа, в результате чего будет выведен список ключей в файле pubring.gpg:
До этого момента мы проводили операции со своими ключами. А что же делать с ключами других пользователей? Для этого необходимо вставить полученный со стороны открытый ключ в свою связку открытых ключей:
Шифрование является только одним из способов проверки целостности и достоверности информации. Другой способ — это подписывание файлов. В этом методе на основе характеристик файла создается своего рода подпись, в создании которой участвуют данные личного ключа. Если файл между моментом, когда он был подписан, и моментом получения не изменялся, то при его расшифровке или проверке с помощью GPG появится такое сообщение:
Чтобы подписать файл с именем “file”, нужно выполнить:
В результате выполнения этой команды создастся файл в двоичном виде. Для того чтоб перевести его в ASCII представление, нужно сделать так:
И напоследок я расскажу как собственно шифровать файлы. Предположим что пользователь имеет вам открытый ключ и хочет отправить вам зашифрованный файл. Ему для этого необходимо выполнить такую команду:
В результате создается файл file.gpg, который можно отправлять. Можно также на выходе получить сразу файл в текстовом представлении:
Получив такой файл, вам нужно всего лишь выполнить:
Объединить шифрование и подписью можно одной командой:
В результате получим зашифрованный файл, при дешифровке которого будут выполнены действия по созданию для него подписи.
Защита целостности кода с помощью PGP. Часть 2. Создание мастер-ключа
Перед вами перевод второй части серии материалов, посвящённых защите целостности кода с помощью PGP. В прошлый раз мы разобрали основы PGP, а сегодня поговорим о том, как создавать 4096-битные мастер-ключи RSA, и о том, как их защищать.
Ключи RSA
▍Контрольный список
Вот какие навыки вы должны освоить после того, как разберётесь с материалами этого раздела:
Пояснения
▍Что такое мастер-ключ (сертифицирующий ключ)
В этом и следующем разделах мы будем говорить о так называемых «мастер-ключах» и «подключах». Рассматривая эти виды ключей, важно понимать следующее:
Только сертифицирующий ключ может быть использован для выполнения следующих действий:
▍Действия, выполняемые перед созданием мастер-ключа
Прежде чем вы создадите свой мастер-ключ, вам нужно выбрать свои основные идентификационные данные и ключевую фразу.
▍Основные идентификационные данные
Идентификационные данные — это строка, использующая тот же формат, что и поле From в электронных письмах:
Вы можете создавать новые наборы идентификационных данных, отзывать старые и менять основные идентификационные данные в любое время. Так как основной набор идентификационных данных показывается при выполнении всех операций GnuPG, вам следует выбрать и указать ваше имя, и, возможно, должность, а также адрес электронной почты, которые относятся к вашей профессиональной деятельности и с наибольшей долей вероятности будут использованы для обмена данными с использованием PGP. Например, это может быть адрес вашей рабочей электронной почты, или тот, который вы используете для регистрации коммитов на GitHub.
▍Ключевая фраза
Надёжная ключевая фраза состоит из 3-4 слов, причём желательно, чтобы слова из неё нельзя было найти в словаре. Она не должна являться цитатой из широко известных источников (не стоит использовать в качестве ключевой фразы слова из песен, книг, рекламных лозунгов какой-нибудь компании). Вы будете использовать ключевую фразу довольно часто, поэтому она должна быть ещё и такой, чтобы вам было легко её запомнить и удобно вводить с клавиатуры.
▍Алгоритм и стойкость ключа
GnuPG уже некоторое время поддерживает шифрование, основанное на эллиптических кривых, но мы пока будем придерживаться использования ключей RSA. Хотя можно применять и ключи ED25519, вероятно, вам встретятся программные инструменты и устройства, которые не смогут с ними нормально работать.
Кроме того, у вас может возникнуть вопрос о том, почему мастер-ключ имеет длину 4096 бит, если широко известно, что и 2048-битных ключей хватает для любых нужд, и такие ключи ещё долго не потеряют актуальности. Причина использования 4096-битных ключей, в основном, относится к социальной, а не к технической сфере. Всё дело в том, что другие разработчики могут отнестись к вам с некоторым недоверием, если в вашем мастер-ключе будет меньше битов, чем в их мастер-ключе.
▍Создание мастер-ключа
Для того чтобы создать мастер-ключ, выполните следующую команду, поместив ваши данные вместо данных условного пользователя Alice Engineer:
После выполнения этой команды появится диалоговое окно с предложением ввести фразу-пароль. Затем, возможно, вам понадобится подвигать мышью или понажимать какие-нибудь клавиши на клавиатуре для того, чтобы система могла накопить достаточно энтропии для завершения работы команды.
Посмотрите на то, что выведет команда. Вы увидите примерно следующее:
Обратите внимание на длинную последовательность символов во второй строке. Это — полный отпечаток только что созданного ключа. Идентификаторы ключей могут быть представлены в трёх различных формах:
В этот момент рекомендуется открыть текстовой редактор, скопировать отпечаток ключа и вставить его туда. Вам понадобится использовать его для выполнения нескольких следующих шагов, поэтому удобно будет держать его под рукой.
▍Резервная копия мастер-ключа
Для аварийного восстановления ключа, и особенно, если вы намереваетесь использовать сеть доверия и собирать сигнатуры ключей других разработчиков проекта, вам нужно создать надёжную копию вашего секретного ключа, перенеся его на бумагу. Бумажная копия рассматривается как последний шанс восстановления ключа на тот случай, если все остальные механизмы резервного копирования уже бесполезны.
Тот файл, который получится в результате этой команды, после распечатки, подходит для систем оптического распознавания текста или для ручного ввода, если возникнет необходимость восстановить ключ. Этот файл следует распечатать, затем взять ручку и написать где-нибудь на поле листа бумаги ключевую фразу. Это важный шаг, так как распечатанный ключ зашифрован ключевой фразой, и если вы когда-нибудь её измените, то вы гарантированно, не сможете вспомнить исходную ключевую фразу.
Положите распечатку с записанной на ней ключевой фразой в конверт и поместите всё это в надёжное место, желательно — вне вашего жилища, например — в банковскую ячейку.
Обратите внимание на принтер, на котором вы будете распечатывать бумажную резервную копию ключа. Давно прошли те времена, когда принтеры были примитивными устройствами, подключаемыми к параллельным портам компьютеров. В наши дни у принтеров имеются полноценные операционные системы, жёсткие диски, интеграция с облачными службами. Так как данные ключа, которые мы отправляем на печать, зашифрованы с помощью ключевой фразы, распечатку можно считать довольно-таки безопасной операцией, однако, тут лучше перестраховаться, чем недосмотреть.
▍Добавление идентификационных данных
Если у вас есть несколько адресов электронной почты, которыми вы активно пользуетесь (личный и рабочий адреса, адрес, применяемый в некоем опенсорсном проекте, и так далее), вам следует добавить их к вашему мастер-ключу. Вам не нужно делать это для любых адресов, которые вы не планируете использовать с PGP (скажем, для адреса, который вам выдали, когда вы где-то учились). Ниже показана команда для добавления идентификационных данных к ключу. Здесь [fpr] надо заменить на отпечаток вашего ключа:
Просмотреть уже добавленные к ключу UID можно следующей командой:
▍Выбор основного набора идентификационных данных
GnuPG автоматически сделает последний добавленный набор идентификационных данных главным, поэтому если вам нужно что-то другое, вы можете воспользоваться такой командой:
Итоги
Из этого материала вы узнали о ролях ключей PGP, том, как сгенерировать мастер-ключ, как надёжно сохранить резервную копию этого ключа, и как назначить основные идентификационные данные ключа. В следующий раз поговорим о подключах.
Уважаемые читатели! Как вы храните резервные копии ваших мастер-ключей?
Что такое PGP?
С момента ее появления в 1991 году было создано множество версий PGP-софта. В 1997 году Фил Циммерман сделал предложение создать Internet Engineering Task Force (IETF), общепринятый стандарт для PGP с открытым исходным кодом. Предложение было принято и привело к созданию OpenPGP протокола, который определяет стандартные форматы шифрования для ключей и сообщений.
Хотя изначально PGP использовалась только для защиты электронной почты и ее вложений в настоящее время она применяется более обширно, включая цифровые подписи, полное шифрование диска и защиту сети.
Изначально PGP принадлежала компании PGP Inc, которая впоследствии была приобретена Network Associates Inc. В 2010 году Symantec Corp. выкупили PGP за 300 миллионов долларов и теперь этот термин является товарным знаком, используемым для их продуктов совместимых с OpenPGP.
Как это работает?
Затем сеансовый ключ (1) шифруется с использованием асимметричного шифрования: предполагаемый получатель (Боб) предоставляет свой открытый ключ (2) отправителю сообщения (Алиса), чтобы она могла зашифровать сеансовый ключ. Этот шаг позволяет Алисе безопасно делиться ключом с Бобом через интернет, независимо от уровня безопасности.
Асимметричное шифрование сеансового ключа обычно выполняется с использованием алгоритма RSA. Многие другие системы шифрования используют его включая протокол защиты транспортного уровня (TLS), который обеспечивает безопасность большей части интернета.
Как только шифротекст сообщения и зашифрованный сеансовый ключ были получены, Боб может использовать свой приватный ключ (3) для расшифровки сеансового ключа, который затем используется для дешифрования зашифрованного текста.
Помимо основного процесса шифрования и дешифрования, PGP также поддерживает цифровые подписи, которые выполняют как минимум три функции:
Аутентификация: Боб может проверить, что отправителем сообщения была Алиса;
Целостность: Боб может быть уверен, что сообщение имеет первозданный вид;
Безотказность: после того, как сообщение подписано цифровой подписью, Алиса не сможет утверждать, что не отправляла его.
Варианты применения
Одним из наиболее распространенных способов использования PGP является защита электронной почты. Письмо защищенное с помощью PGP превращается в строку символов, которую невозможно прочитать (зашифрованный текст) и расшифровать можно только с помощью соответствующего ключа. Для обеспечения безопасности сообщений защитный механизм практически тот же самый, также есть еще и программные приложения, которые позволяют реализовывать PGP поверх других, эффективно интегрируя систему шифрования к необеспеченным безопасностью службам обмена сообщениями.
Хоть PGP в основном и предназначена для защиты интернет-коммуникации, она также может использоваться для шифрования отдельных устройств. В таком случае программа может применяться к разделам диска на ПК или к мобильному устройству. Шифруя жесткий диск пользователь должен будет указывать пароль при каждой загрузке системы.
Преимущества и недостатки
Протокол OpenPGP позволил создать стандартизированную конкурентную среду и теперь PGP решения предлагаются несколькими компаниями и организациями. Тем не менее, все программы с PGP которые соответствуют стандартам OpenPGP совместимы друг с другом. Это означает, что файлы и ключи созданные в одной программе могут без проблем быть использованы в другой.
Что касается недостатков, системы PGP не так просты в использовании и понимании, особенно для пользователей со слабыми техническими навыками. Кроме того большая длина открытых ключей многими считается неудобной.
В 2018 году Electronic Frontier Foundation (EFF) опубликовала крупную уязвимость под названием EFAIL. Эта проблема позволяет хакерам использовать активный HTML-контент в зашифрованных электронных письмах для получения доступа к расшифрованной версии сообщений.
Однако некоторые проблемы описанные в EFAIL уже были известны сообществу пользователей PGP с конца 1990-х годов и по факту, уязвимость заключалась в различных реализациях со стороны почтовых клиентов, а не самого PGP. Таким образом, несмотря на тревожные и вводящие в заблуждение заголовки, PGP все еще обладает высоким уровнем безопасности.
Заключение
С момента создания в 1991 году, PGP был важным инструментом для защиты данных и в настоящее время используется в большинстве приложений, обеспечивая конфиденциальность, безопасность и аутентификацию для систем связи и поставщиков цифровых услуг.
Не смотря на то что в 2018 году выявление EFAIL вызвало серьезные опасения по поводу жизнеспособности протокола, основная технология по-прежнему считается надежной и криптографически обоснованной. Стоит отметить, что разные реализации PGP могут иметь различные уровни безопасности.
Kleopatra: GnuPG в графической оболочке
Программы семейства GPG (GNU Privacy Guard) / PGP (Pretty Good Privacy) позволяют «прозрачно» подписывать и зашифровывать все типы цифровой информации. По своей сути, названные инструменты являются лишь удобной обёрткой, упрощающей практическое использование открытых алгоритмов асимметричной криптографии.
Несколько лет ведется полемика об актуальности использования GPG, в рамках которой высказывается много скептицизма о громоздкости и устаревании этого криптографического продукта. Высокий порог вхождения очевиден при соответствующем поисковом запросе, который выдает много сложной информации и инструкции по работе с утилитой GPG в терминале Linux.
В этой статье рассмотрим приложение с открытым исходным кодом для работы с инструментарием GPG в графической оболочке — находка для новичков и тех, кто просто избегает загадочного черного окна командной строки. Благодаря кроссплатформенности Клеопатры, статья одинаково полезна для пользователей Windows, Linux и FreeBSD.
Установка
Первый шаг в использовании GPG — создание своей пары ключей. Публичный ключ предоставляется всем желающим, а секретный хранится в надежном месте и служит для подписания информации от лица его владельца и расшифровки адресованной ему информации.
Создание пары ключей
На выбор предлагаются типы ключей X.509 (практически применяется в корпоративной среде) и OpenPGP. Выбираем OpenPGP. Вводим контактые данные, которые будут отображаться у всех владельцев нашего открытого ключа. Вместо настоящего имени можно указать никнейм. В дальнейшем некоторую информацию ключа будет возможно изменить.
По умолчанию используется шифрование RSA с длиной ключа в 2048 бит (2048 нулей и единиц машинного кода). С учетом развития квантовых технологий, данное шифрование всё менее и менее кажется надежным. В настоящее время себя хорошо зарекомендовало использование криптографии на эллиптических кривых. Подобные алгоритмы имеют невероятную криптостойкость и хорошую производительность, благодаря небольшой длине ключа.
Чтобы создать пару ключей на эллиптических кривых, переходим в дополнительные параметры. Пункт ECDSA/EdDSA — то, что нам надо. Дополнительный чекбокс (галочка) «+ECDH» даст ключу возможность шифровать, без нее сертификат можно будет использовать только для подписи и идентификации, так как ECDSA/EdDSA — алгоритмы подписи, а не шифрования. В выпадающих списках предлагается выбрать один из алгоритмов: ed25519, brainpool и NIST.
ed25519 (Curve25519) — эталонная и непатентованной реализация криптографии на эллиптической кривой, имеет 128-битную длину. Является ключом EdDSA — самым актуальным алгоритмом цифровой подписи (считается, что без закладок от силовых структур каких-либо стран).
brainpool — алгоритм, разработанный немецким сообществом криптографоф, в число которых входят университеты, государственные ведомства и коммерческие организации, например, компания Bosch. Поддерживает длины в 256, 384 и 512 бит. При подписи использует несколько устаревший алгоритм ECDSA.
NIST — американский алгоритм, разработанный Национальным Институтом Стандартов и Технологий. Рекомендован для использования государственными органами США. Поддерживает длины в 256, 384 и 521 бит. По оценке некоторых специалистов, NIST лучше brainpool по производительности. При подписи использует несколько устаревший алгоритм ECDSA.
Для примера в обоих случаях используется алгоритм brainpool с максимальной длиной ключа. По умолчанию ключ создается со сроком годности в два года. Этот параметр можно изменить, либо вовсе отключить, тогда ключ будет бессрочным.
На следующем шаге задается пароль, который является последним рубежом защиты секретного ключа. Не следует передавать кому-то секретный ключ, но если так все-таки вышло, будет лучше, когда вы задали очень надежный пароль. Рекомендуется использовать специальные знаки (символы пунктуации и прочее) для надежной защиты от брутфорса. Лучшим вариантом будет длинный пароль, полученный из генератора случайных символов, однако не забывайте про золотую середину между использованием и безопасностью. Например, вводить на телефоне очень длинный и сложный пароль с символами из расширенной таблицы ASCII, не имея возможности его скопировать из менеджера паролей, будет весьма проблематично.
Итак, пара ключей создана! Обратите внимание на отпечаток, это уникальный идентификатор вашего ключа. Даже если кто-то захочет представиться вами, создав ключ с такими же именем и электронной почтой, его отпечаток будет отличаться. Именно поэтому важно сверять отпечатки получаемых ключей.
Клеопатра предлагает сделать резервную копию ключей, что по факту является экспортом закрытого ключа. Эту операцию в дальнейшем можно произвести в любой момент.
Открыв экспортированный ключ в текстовом редакторе, мы увидим специфичный фрагмент текста, начинающийся словами «BEGIN PGP PRIVATE KEY BLOCK». Будьте внимательны, не отправьте его кому-то по ошибке! Открытые ключи, предназначенные для передачи вторым лицам, начинаются со слов «BEGIN PGP PUBLIC KEY BLOCK».
Большое преимущество GPG перед другими средствами идентификации заключается в легкой переносимости ключа. Например, его можно распечатать на бумаге или выучить наизусть. Хранить можно только приватный ключ, так как при необходимости кому-то передать публичный, мы всегда можем экспортировать его из секретного (выводится математическим путём).
Экспорт и импорт
Для операций с ключом, щелкните по нему правой кнопкой мыши.
Для импорта ключей (нашего уже существующего на новом устройстве или полученного публичного), воспользуемся кнопкой «Импорт». Также можно использовать двойной клик по файлу ключа, это автоматически откроет Клеопатру и импортирует выбранный ключ. GPG-файлы встречаются с расширениями *.asc, *.pgp и *.gpg. Это не имеет большого значения, так как расширение нужно больше для удобства пользователя и лишь немного — приложений. Файл будет корректно прочитан и в случае, когда специальное расширение изменено или удалено.
Очень часто ключи распространяются в виде текстового блока. В таком случае, скопировав ключ, можно импортировать его через меню операций с буфером обмена.
Программа попросит удостовериться в подлинности ключа. В настоящее время самым простым и эффективным способом является сравнение отпечатка, поэтому его публикуют вместе с ключом. Если отпечаток совпадает с заявленным, заверяем сертификат.
Теперь мы можем проверять подпись владельца нового ключа и шифровать для него информацию.
Шифрование и подпись
Чтобы зашифровать и подписать файл, воспользуемся соответствующим пунктом меню на верхней панели.
После выбора файла, предлагается выбрать нужные операции. Подпись позволяет получателю убедиться в авторстве файла. Эта функция очень полезна: расшифровав архив, мы точно знаем, что архив был зашифрован владельцем обозначенного ключа, а не кем-то другим, кто просто располагает нашим публичным ключом. Использовать подпись — полезная привычка в большинстве случаев.
Распространненым способом безопасного хранения данных на облачном хранилище является GPG-шифрование файлов «для себя». В таком случае расшифровать информацию можно будет только нашим ключом.
Также возможна подпись без шифрования. Чаще всего применимо к текстовой информации. Механизм подписания строится на хеш-сумме: позволяет сравнить актуальное состояние информации с тем, какой она была, когда ее подписывал отправитель. Для примера откроем «блокнот».
Назначив отсутствие шифрования для кого-либо, оставляем только подпись и нажимаем кнопку «Подписать».
После ввода пароля от ключа, видим, что к фразе «Отличная работа» добавился дополнительный текстовый блок с хеш-суммой SHA512.
Если сейчас проверить подпись, она будет верна, но если изменить хотя бы один символ или добавить пробел, проверка выявит недействительную для данного текста подпись. Это связано с тем, что хеш-сумма данного массива информации абсолютна отлична от той, когда вместо буквы «Я» стояла «я».
В случае подписи файла без шифрования, в директории файла создается сигнатура с расширением *.sig, которую следует передавать вместе с исходным файлом. Если в файле изменится хотя бы один бит, проверка подписи выдаст ошибку.
Постскриптум
Все локальные ключи централизованно хранятся на устройстве в специальной папке. Все программы, взаимодействующие с GPG, будут их видеть. Для общения по протоколу XMPP (Jabber), защищенного GPG-шифрованием, можно использовать Gajim, который также является кроссплатформенным. Для ведения защищенной почтовой переписки удобно использовать этичный клиент Thunderbird, в который необходимо будет импортировать секретный ключ, так как он имеет свое изолированное хранилище ключей. Об использовании Thunderbird написано тут.
В статье опущено много технических нюансов, так как она рассчитана на широкий круг пользователей, которые в том числе имеют низкий уровень познаний в криптографии и ищут стартовую позицию для знакомства с действительно надеждным сквозным шифрованием.