GPG ключи и как ими пользоваться - поясняем на пальцах
contents.title
- Что такое GPG?
- История
- Ключи
- Симметричное и Асимметричное Шифрование
- Kleopatra. Простой и удобный вариант на Linux,Windows,Tails.
- Kleopatra. Установка на Linux
- Kleopatra. Установка на Windows
- Kleopatra. Создание ключей
- Kleopatra. Как найти свой публичный ключ и сохранить его
- Kleopatra. Как найти свой приватный ключ и сохранить его
- Kleopatra. Шифрование сообщений
- Kleopatra. Расшифровка сообщений
- Kleopatra. Получение зашифрованных сообщений от других людей
- Как проще всего передать свой ключ другому человеку
- Kleopatra. Отправление зашифрованного сообщения
- Kleopatra. Как создать сообщение защищённое паролем
- Kleopatra. Как подписать сообщение
- Kleopatra. Шифрование файлов
- Kleopatra. Резервное копирование ключей
- Kleopatra. Публикация открытого ключа на сервере
Это криптографическая программа для шифрования и цифровой подписи.
GPG основывается на идее двух ключей шифрования для каждого пользователя. У каждого человека есть свой собственный закрытый и открытый ключ. Открытый ключ может расшифровать информацию, зашифрованную закрытым ключом.
Как это работает?
Итак, если вы хотите отправить секретное сообщение или файл кому-то, вы используете его открытый ключ для зашифровки информации. Только владелец приватного ключа сможет ее расшифровать.
Обмен публичными ключами позволяет вам общаться безопасно. Вы можете шифровать свои сообщения ключом собеседника, а он, в свою очередь, расшифровывает их своим приватным ключом. И наоборот.
Приватный ключ также умеет подписывать файлы, как цифровая подпись. Это можно проверить, используя публичный ключ.
- 1997 год: Вернер Кох, немецкий программист, разработал GPG (GNU Privacy Guard) как свободную альтернативу PGP. GPG вошла в проект GNU и использовала открытые стандарты.
- 2000-е годы: GPG стала стандартом для многих операционных систем и инструментов разработки, а также основой для различных приложений и библиотек, поддерживающих шифрование и цифровую подпись.
- Сегодня: GPG широко используется для обеспечения безопасности электронной почты, аутентификации и цифровой подписи в различных областях. Она поддерживается многими операционными системами и является частью многих криптографических решений.
Вам нужно иметь открытый ключ получателя, чтобы зашифровать файл, и получатель должен иметь ваш открытый ключ для его расшифровки. Нет опасности в том, чтобы сделать ваши открытые ключи именно открытым
Открытый ключ (или Публичный ключ/Public key)
Это твоя цифровая визитка. Делится им со всеми, с кем хочешь общаться безопасно. В общем, это твой номер для защищенного обмена сообщениями.
Секретный ключ (Private key)
За ним нужно пристально следить. Он занимается зашифровкой и расшифровкой сообщений. Лучше его хранить в надежном месте, ибо утрата может создать проблемы.
GPG может применяться для симметричного шифрования, но его основное применение связано с асимметричным шифрованием данных. В двух словах: при симметричном шифровании один ключ используется для шифровки и расшифровки сообщений (например, определенный символ, соответствующий конкретной букве). В случае асимметричного шифрования используются два ключа — публичный и приватный.
Симметричное Шифрование: Это как замок с одним ключом. Один и тот же ключ используется для закрытия и открытия двери. К примеру, если ваш друг отправляет вам зашифрованное сообщение, вам нужен тот же ключ, чтобы его прочитать.
Асимметричное Шифрование: Тут уже два ключа, как два замка. Один ключ (публичный) используется для зашифровки сообщений, а второй (приватный) - для их расшифровки. Вы можете дать всему миру свой публичный ключ, а приватный ключ храните в тайне. Только владельцу приватного ключа удастся отпереть "замок" и прочитать сообщение. Проще говоря, если кто-то зашифровал сообщение вашим публичным ключом, только ваш приватный ключ его расшифрует.
Так что симметричное - один ключ для всех операций, асимметричное - пара ключей, каждый со своей ролью.
Не секрет, что работа через терминал может подойти не каждому человеку, а взаимодействие с GPG в терминале Linux может казаться сложным и запутанным.
Мы рассмотрим приложение с открытым исходным кодом, предназначенное для работы с инструментарием GPG в графической оболочке. Это находка для новичков и тех, кто предпочитает избегать использования загадочного черного окна командной строки. Благодаря кроссплатформенности приложения, данная статья будет полезна пользователям Windows, Linux (Tails тоже) и FreeBSD.
В различных операционных системах, основанных на Unix, Клеопатра легко доступна через репозитории. Например, для установки в Debian достаточно воспользоваться командой:
sudo apt-get install kleopatra.
Если вы предпочитаете операционную систему Windows, то программа поставляется вместе с пакетом GPG4Win.
Началом работы с GPG является создание собственной пары ключей. Публичный ключ может быть распространен широко, тогда как секретный ключ хранится в надежном месте. Секретный ключ служит для подписи информации от лица владельца и расшифровки зашифрованных сообщений.
Вот несколько преимуществ использования Kleopatra GPG:
- Kleopatra предоставляет графический интерфейс пользователя, что делает работу с GnuPG более удобной для тех, кто предпочитает визуальное взаимодействие.
- Kleopatra упрощает создание, импорт, экспорт и управление ключами шифрования. Это позволяет пользователям легко добавлять и удалять ключи, управлять ими в целом.
- С помощью Kleopatra вы можете легко зашифровывать и расшифровывать файлы, не вводя команды в терминале. Просто выберите файл, кликните по соответствующему пункту в меню, и Kleopatra выполнит нужные шаги.
- Kleopatra также облегчает подписание документов с использованием GnuPG. Это важная функция для проверки подлинности данных.
- Kleopatra может интегрироваться с некоторыми почтовыми клиентами, обеспечивая безопасную отправку и получение зашифрованных и подписанных электронных писем.
- Kleopatra позволяет выполнять операции по сертификации ключей, что повышает доверие к вашему открытому ключу.
- Kleopatra предоставляет отчеты о выполненных операциях, что полезно для отслеживания и анализа действий с ключами и данными.
- Kleopatra доступен для различных операционных систем, включая Windows и Linux, что обеспечивает удобство использования на различных платформах.
Открываем терминал и вводим:
sudo apt-get install kleopatra.
Обновляем все пакеты после установки
Sudo apt-get update
Запускаем через команду:
Kleopatra
Переходим на сайт Gpg4win и выбираем бесплатную версию GPG4WIN.
После нас перекидывает на страницу с автоматической загрузкой файла. Скачиваем и запускаем его:
Как только настройка завершена, вы увидите это окно. Нажмите "Новая пара ключей".
На экране, который появится ниже, введите ваше имя и адрес электронной почты.
Введенный пароль не участвует в процессе шифрования и расшифрования; он служит защитой для вашего ключа, который хранится в домашней папке на вашем компьютере. Этот пароль необходим, чтобы предотвратить доступ злоумышленника к вашему приватному ключу в случае физического доступа к компьютеру. Злоумышленнику нужно будет сначала угадать или подобрать пароль, прежде чем воспользоваться приватным ключом. Поэтому важно создать надежный пароль с различными знаками
Выбираем дополнительные параметры:
По умолчанию используется RSA с ключом 2048 бит, но из-за квантовых технологий его надежность снижается. Алгоритмы на эллиптических кривых, такие как brainpool, обеспечивают высокую защиту при меньшей длине ключа.
Для создания ключей на эллиптических кривых выбираем ECDSA/EdDSA. Выбираем алгоритм, например, brainpool. Ключ создается со сроком годности, который можно изменить или отключить, сделав ключ бессрочным
Кликаем на свой профиль (в нашем случае Дмитриевич Олег) и выбираем подробности:
Выбираем экспорт
И получаем свой публичный ключ
Правый клик на свой профиль и выбираем "Резервное копирование закрытых ключей"
Сохраняем наш ключ в удобном месте:
Открываем файл через текстовый редактор:
Теперь давайте зашифруем сообщение с использованием Блокнота в программе Kleopatra. Мы будем шифровать сообщение только для себя, так что только мы сможем его прочитать.
Начнем с перехода к "Блокноту" в панели инструментов Kleopatra. Затем введите ваше сообщение.
Когда ваше сообщение готово, необходимо его зашифровать и подписать.
Перейдите на вкладку "Получатели".
Поскольку мы шифруем это сообщение для себя, выберем опцию "Шифровать для меня". Пока у нас нет других получателей для шифрования сообщений, поэтому этот параметр оставим без изменений.
Успешно преобразованное сообщение теперь представляет собой случайную строку бессвязного текста. Можно скопировать/вставить и сохранить его где угодно, и только я смогу расшифровать его обратно в исходное сообщение.
Теперь давайте посмотрим, как расшифровать зашифрованное сообщение обратно в его первоначальное состояние.
Предположим, что мы сохранили сообщение в текстовом файле. Откройте Kleopatra, перейдите в Блокнот и вставьте зашифрованное сообщение обратно в текстовую область.
Поскольку сообщение отправлено только для себя, а мой закрытый ключ надежно хранится на данном компьютере, я могу легко расшифровать его, просто воспользовавшись кнопкой "Расшифровать / Проверить Блокнот"
Как видите, сообщение было расшифровано. Поскольку я "подписал" сообщение от своего имени при его шифровании, в нем указано "Действительная подпись от..." — таким образом, вы можете убедиться, что сообщение аутентично и отправлено от указанного отправителя.
Давайте повторим
Для расшифровки зашифрованного сообщения, отправленного вам с использованием вашего публичного ключа, вам потребуется свой собственный секретный ключ. Процесс может быть следующим:
- Если у вас ещё нет публичного ключа отправителя в Kleopatra, импортируйте его, чтобы приложение знало, как расшифровать сообщение. Вы можете импортировать ключ, открыв вкладку "File" и выбрав "Import Certificates". Затем укажите путь к файлу с публичным ключом.
- Удостоверьтесь, что ваш секретный ключ добавлен в Kleopatra. Это необходимо для того, чтобы приложение могло использовать его для расшифровки сообщений. Вы можете добавить секретный ключ через вкладку "File" и выбор "Import Secret Keys".
- Когда у вас есть публичный ключ отправителя и ваш секретный ключ, Kleopatra должна автоматически использовать их для расшифровки сообщения. Обычно, если у вас есть зашифрованное сообщение, просто откройте его в Kleopatra, и программа автоматически выполнит расшифровку, используя ваши ключи.
Далее рассмотрим ситуацию, когда мы хотим, чтобы наш друг мог отправить нам зашифрованное сообщение. Для этого мы должны предоставить ему наш открытый ключ. Помните, что мы никогда не хотим делиться нашим секретным ключом с кем-либо еще.
Вернитесь на страницу "Сертификаты" и выберите ключевую пару, которую вы хотите использовать для получения сообщений от этого человека.
Есть несколько способов экспорта открытого ключа. Мы экспортируем только текст. Для этого дважды щелкните на ключевой паре.
Это откроет диалоговое окно с дополнительной информацией о ключе. Нажмите кнопку "Экспорт"
Это открытый блок ключа. Вы будете делиться им с людьми или сервисами, от которых хотите получать зашифрованные сообщения. Это то, что позволяет им отправлять вам зашифрованные сообщения.
После того как вы отправите кому-то свой открытый ключ, они смогут отправлять вам сообщения. Чтобы расшифровать сообщения, отправленные вам, просто скопируйте и вставьте их в блокнот и расшифруйте с использованием вашего секретного ключа, как мы делали в предыдущем примере (отправка сообщения самим себе).
Проще всего отправить его через самоудаляющиеся сообщения.
Переходим на сайт Privnote и отправляем в поле ввода нужный нам текст
Теперь у нас есть возможность короткой ссылкой передать наш ключ нужному адресату, сообщение после прочтения будет удалено
Далее рассмотрим ситуацию, когда вы пытаетесь отправить зашифрованное сообщение кому-то другому. Для этого они должны предоставить вам свой открытый ключ.
Для демонстрации вот открытый ключ нашего товарища.
-----BEGIN PGP PUBLIC KEY BLOCK-----
Comment: Идентификатор пользователя: Kevin Agler <[email protected]>
Comment: Действителен с: 25.12.2023 2:05
Comment: Действителен до: 25.12.2026 12:00
Comment: Тип: 255-битный EdDSA (доступен секретный ключ)
Comment: Применение: Подпись, Шифрование, Заверение идентификаторов пользователя
Comment: Отпечаток: 07CC02E39730E43595FCE3CBBD40B56DDC7B8C61
mDMEZYi5HxYJKwYBBAHaRw8BAQdASxia8+gBW3whrcrcgbdE5f9TPzvOxj6NarIP
ceS7nQO0IktldmluIEFnbGVyIDxLZXZpbkBwcm90b25tYWlsLmNvbT6ImQQTFgoA
QRYhBAfMAuOXMOQ1lfzjy71AtW3ce4xhBQJliLkfAhsDBQkFpXdxBQsJCAcCAiIC
BhUKCQgLAgQWAgMBAh4HAheAAAoJEL1AtW3ce4xhQukBALAJD9lCfTrMYXP25Voa
b7nShxKJG5Xe3753V/PqHhRaAP9GHuOSJ5uKEeBHMxwLdCbDHfiwp+06ze4KEkAk
p6hbCLg4BGWIuR8SCisGAQQBl1UBBQEBB0AmsiL4iiGEN8l1BTiQPc8B0GBLOEFA
sIRFukAJTE3rYAMBCAeIfgQYFgoAJhYhBAfMAuOXMOQ1lfzjy71AtW3ce4xhBQJl
iLkfAhsMBQkFpXdxAAoJEL1AtW3ce4xhuWcBAOY82LteTn7jvAD+4XW78dkB56OG
pMjOrjzO44AhUXy1AQCYtsXJWwsTXAXjH4HnXhUbKVI1mKupdcS8SNIPd62aAg==
=LcFY
-----END PGP PUBLIC KEY BLOCK-----</[email protected]>
Самый простой способ импорта открытого ключа — сохранить его как текстовый файл. Откройте Блокнот и вставьте мой открытый ключ туда. Затем сохраните его как файл с расширением .gpg.
Вставьте в Kleopatra файл с GPG-ключом, который мы только что создали. Программа спросит, хотите ли вы "Подтвердить" открытый ключ. Если ключ подтвержден, это означает, что вы проверили отпечаток ключа, сравнив его с отпечатком, предоставленным отправителем
Например, вы можете связаться с владельцем открытого ключа и запросить у них отпечаток ключа. Если он совпадает с отпечатком, который вам показали, вы можете подтвердить, что ключ подлинный. В противном случае кто-то отправил вам недействительный или поддельный ключ.
Для наших целей вы можете просто подтвердить ключ. Отпечаток должен совпадать с "07CC02E39730E43595FCE3CBBD40B56DDC7B8C61".
Теперь в списке сертификатов Kleopatra появится несколько ключей. Первый из них должен быть вашей парой ключей, второй — открытый ключ собеседника.
Вернемся к блокноту. В данном случае я создал новую пару ключей: закрытый и открытый, для человека по имени "Билли Боб". Давайте сделаем вид, что я — Олег, и мне нужно отправить сообщение Кевину. Вы можете продолжить использовать закрытый ключ, который вы создали ранее для себя.
Введите сообщение, которое вы хотите, чтобы увидел только Кевин.
Перейдите на вкладку "Получатели". Вы можете подписать сообщение от своего имени, если хотите. В этом примере я отключил опцию "Зашифровать для меня". Это означает, что после шифрования этого сообщения его сможет расшифровать только получатель, и я не смогу расшифровать сообщение снова, представляясь Олегом.
Переходим в Блокнот и кликаем "подписать"
Теперь сообщение зашифровано. Я могу отправить его кому угодно, но прочитать его сможет только Кевин с использованием своего секретного ключа.
Если я попробую расшифровать сообщение, это не удастся. Помните, что в этом примере я — "Олег", а не "Кевин". Расшифровать сообщение от Олега могу только я с использованием своего секретного ключа.
Теперь давайте создадим сообщение, защищенное паролем, которое может прочитать любой, не имея конкретного закрытого ключа, при условии, что он знает пароль. Для этого перейдите в раздел "Блокнот" и введите ваше сообщение.
Перейдите к получателям и выберите нижний флажок "Шифровать с паролем".
Вводим пароль и жмём ОК
Теперь вы можете расшифровать сообщение, просто введя "mypassword". Любой, кому вы отправите это сообщение, сможет расшифровать его с использованием этого пароля. Обратите внимание, что это значительно менее безопасно, чем шифрование/расшифровка с использованием закрытых/открытых ключей.
Ниже будет наше сообщение под паролем, расшифровать его можно через пароль 123456789
-----BEGIN PGP MESSAGE-----
hF4DaW6P+nO+usgSAQdABXYihZkXgKz5p0ERVqzDP2VufslzZpeLZdajMJ7ocz8w
F434Zf0BF0C0mMH0XB3VuI2XOrRdsDWOIfrxqQ10cC53lHq1FU6W8xqHbHKkuCsk
jE0FCQIDCM5KaJPTYChL/7VeiFnQ8cPKpYl9Tqh8fb2ct/GpVceXXXSQFQdzsL6V
C/DSHuyL0onuPSPkuMAdD8DHVI2lXxtKdHL6kxTiNtTAXgEJAhCYZavtd7ZwAQ8o
rHha9JiSfLhZIWtjttwRYg3Auar0ZCTvyy9S4V1j/yOeeiltdLeMENAMmTqvSqSz
d4ZXKBD0zQPihWq+VrkcaHP0X80JcKf6BVDQcaRtWfhRPDwUuJMBSeCdBBIIppj1
zuznkKiYf5Zlph4FczkIDLHCrEhsxw1G3I+qb5QXSV+C4VqNHENOTIQmLJB2PE19
5TAZZplNhtr6QSmX2MYXC7kcRRFQQyt6xCiuRjx5hs4Wabsagx+f9vvVzwRvPuVI
iQa+dEGlZmkvLc+XyeTqqgyFLV5NOX86G8N6oL1BPMiM/iqAYKmtAOz6a2Fl9S2W
PUAIRGLgoFb1yt+SxztHEi26U9jMY2fd5rdOR9duV4Y=
=GzY/
-----END PGP MESSAGE-----
Если вы хотите распространить открытое сообщение, но доказать, что именно вы его написали, вы можете создать подписанное сообщение PGP.
Например, мы написали следующее сообщение:
Теперь я собираюсь "подписать" сообщение, не шифруя его само по себе.
Теперь, когда я нажимаю "Подписать Notepad", у меня появляется следующий вывод:
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512
Всем привет! Это Олег!
-----BEGIN PGP SIGNATURE-----
iHUEARYKAB0WIQRNsxvVXzP8ajAJNedh3chqCpgpqgUCZYlv2wAKCRBh3chqCpgp
qviIAP9E08FGBrZSLlwl/CQWFtFtrqup75p36yTrRs6my13spAEA7Ngo5HBVW1Kf
BwaYRqEnvVFzebP8MW03eH2+/jNAUAo=
=dhGu
-----END PGP SIGNATURE-----
Как видите, само сообщение по-прежнему видимо. Однако есть секция PGP Signature. Любой, у кого есть Kleopatra и мой открытый ключ, может вставить это в блокнот и нажать "Расшифровать/Проверить блокнот" - это проверит подпись PGP с моим открытым ключом и уведомит их о том, что сообщение подтверждено.
Вы можете проверить подпись через расшифровку, но для этого нужно сохранить мой публичный ключ:
-----BEGIN PGP PUBLIC KEY BLOCK-----
Comment: Идентификатор пользователя: Дмитриевич Олег <[email protected]>
Comment: Действителен с: 24.12.2023 23:51
Comment: Действителен до: 24.12.2026 12:00
Comment: Тип: 255-битный EdDSA (доступен секретный ключ)
Comment: Применение: Подпись, Шифрование, Заверение идентификаторов пользователя, SSH-аутентификация
Comment: Отпечаток: 4DB31BD55F33FC6A300935E761DDC86A0A9829AA
mDMEZYiZ5BYJKwYBBAHaRw8BAQdAZ2G6mmYuRRgb1fxHpLrXMyrDYIpfqYZEXqoC
g1O3rsu0MtCU0LzQuNGC0YDQuNC10LLQuNGHINCe0LvQtdCzIDxqZXp1czAwM0Bw
cm90b24ubWU+iJkEExYKAEEWIQRNsxvVXzP8ajAJNedh3chqCpgpqgUCZYiZ5AIb
IwUJBaRFLAULCQgHAgIiAgYVCgkICwIEFgIDAQIeBwIXgAAKCRBh3chqCpgpqmsm
AQDJLWvRZ8Iy5w3cZ2iBsvTwR0my/rrtojwPcVSzI0cfggD6AnWJ1QxtMqyeokml
nBrtNntHKov7tgyN4gU79TWzUAS4OARliJnkEgorBgEEAZdVAQUBAQdACt34kXLw
HVC9M0QBAj+A204XpilKjhG80fMf3hRzzVsDAQgHiH4EGBYKACYWIQRNsxvVXzP8
ajAJNedh3chqCpgpqgUCZYiZ5AIbDAUJBaRFLAAKCRBh3chqCpgpqvvWAQDsM+xU
cixUMclbjBuvH/9Fiu4MrHLAL9OZaJG7NGaCBAD/WCyylOPzlpgDkXQUHmhF7jb9
oGzMnrgvErKCVgavTwE=
=Jgpc
-----END PGP PUBLIC KEY BLOCK-----
</[email protected]>
Поскольку у меня есть мой открытый ключ в Kleopatra, она может проверить, что сообщение было подписано Олегом, а не каким-то мошенником.
У меня есть фотография моих собак, но это абсолютная секретность, поэтому я хочу предотвратить доступ к ней для посторонних.
Если вы установили Kleopatra с расширениями контекстного меню или оболочки (что является опцией по умолчанию при установке Gpg4Win), вы можете щелкнуть правой кнопкой мыши на файле, который вы хотите зашифровать, и выбрать опцию "Подписать и зашифровать". На Windows 11, возможно, вам придется сначала выбрать опцию "Показать больше параметров".
Выберите ключ, который вы хотите использовать для подписи файла, и добавьте получателей, которым вы хотите предоставить доступ к файлу. Если вы хотите, чтобы файл был доступен только вам с использованием вашего секретного ключа, просто выберите "Зашифровать для меня". В этом примере я зашифровал файл для себя и для Билли Боба.
Нажмите кнопку "Подписать/Зашифровать". Теперь файл зашифрован.
Теперь вы видите, что у меня есть оригинальный файл и зашифрованный файл. Я могу отправить зашифрованный файл кому угодно, но только я и Билли Боб сможем его открыть. Я могу разместить его публично где угодно, не боясь, что кто-то другой увидит моего крутого щенка. Если вы шифруете файлы только для себя, убедитесь, что вы удалили оригинальный файл после его шифрования!
Чтобы создать резервную копию ключа, просто щелкните правой кнопкой мыши на сертификате в Kleopatra и выберите опцию "Backup secret keys" (Резервное копирование секретных ключей). Это откроет диалоговое окно, позволяющее сохранить файл резервной копии ключа.
Сохраните его в надежном месте. Если вам потребуется восстановить ключ позже, вы сможете импортировать этот секретный ключ обратно в Kleopatra, используя кнопку "Import" (Импорт).
Отправка своего публичного ключа на сервер ключей в Kleopatra — это важный шаг для обеспечения безопасного обмена зашифрованными сообщениями. Публичные ключи необходимы для шифрования сообщений, и их наличие на сервере ключей приносит несколько преимуществ:
- Доступность ключа для других пользователей: Размещение вашего публичного ключа на сервере обеспечивает его доступность для тех, кто хочет отправить вам зашифрованное сообщение. Это упрощает процесс обмена ключами, поскольку другим пользователям не нужно специально запрашивать ваш ключ — они могут получить его с сервера.
- Обновление и отзыв ключей: Если вам нужно обновить свой ключ или отозвать его, отправка новой версии или информации об отзыве на сервере помогает другим пользователям быть в курсе изменений.
- Централизованный доступ: Сервер ключей служит централизованным ресурсом для поиска и получения публичных ключей, делая процесс обмена ключами более удобным и эффективным.
Этот процесс поддерживает прозрачность и актуальность информации о ключах, что является важным элементом криптографии с открытым ключом. Отправка публичного ключа на сервер способствует упрощению и безопасности шифрованных обменов данными.