к контенту
SeryiBaran

Что такое GPG

/ 3.64 минут чтения

Обновлен:

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

Теория

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

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

Для таких случаев изобрели асимметричное шифрование. В нем есть уже 2 ключа - приватный и публичный. Название второго говорит само за себя - его можно раздавать каждому встречному1. Почему? Публичный ключ - может только зашифровать информацию, но не расшифровать её. Приватный же, может и зашифровывать, и расшифровывать информацию.

На практике это можно представить так2: У участника A есть личный замок и ключ от него. Если участник А хочет получить секретную посылку от участника Б, то он публично передаёт ему свой замок. Участник Б защёлкивает замок на секретной посылке и отправляет её участнику А. Получив посылку, участник А открывает ключом замок и получает посылку.

GPG - свободная бесплатная программа для шифрования и подписывания файлов и текстовых сообщений, реализация OpenPGP, который в свою очередь “реализация” ассиметричного шифрования.

Итак, вернёмся к нашим баранам челам.

Алгоритм обмена зашифровки и обмена информацией с GPG:

  1. Олег просит Николая создать ключи
  2. Николай генерирует приватный и публичный ключи
  3. Николай отправляет публичный ключ Олегу
  4. Олег зашифровывает информацию публичным ключом Николая
  5. Олег отправляет зашифрованную информацию Николаю через публичный чат
  6. Николай расшифровывает информацию приватным ключом

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

Краткая практика

Для практики будем использовать Windows 10+ и GPG4Win.

Не волнуйтесь - во всех программах для работы с OpenPGP всё выглядит и работает примерно одинаково

GPG4Win - это “пакет” софта, включающий в себя сам GPG, а также плагин для Outlook и удобный графический интерфейс Kleopatra.

Допустим, ваш друг хочет отправить вам какую-либо информацию.

Скачиваем GPG4Win с официального сайта и устанавливаем (с этим не должно быть никаких проблем) на свой компьютер и компьютер друга.

Для начала, вам нужно создать пару ключей OpenPGP (приватный + публичный):

  1. Запускаем “Файл => Новая пара OpenPGP ключей”

  2. Вводим имя и по желанию E-Mail: Создание ключей 1

  3. Нажимаем “Дополнительные параметры”

  4. Если хотим, можем указать здесь дату прихода в негодность ключа (1), его функционал (2) и тип (3). Кратко про типы ключей - RSA самый популярный и везде поддерживается, а ECDSA/EdDSA самый надежный: Создание ключей 2

  5. Теперь нажимаем OK: Создание ключей 3

Готово:

Создание ключей 4

Далее, нужно экспортировать публичный ключ в файл:

Экспорт публичного ключа

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

Переходим к компьютеру вашего друга.

Ваш друг должен импортировать переданный ранее файл публичного ключа:

Импорт публичного ключа 1

Теперь ваш друг может зашифровать файл или текст. Файл проще всего зашифровать, нажав ПКМ по файлу в Проводнике:

Шифрование файла через ПКМ 1

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

Шифрование файла через ПКМ 2

В папке с файлом появляется его зашифрованная копия:

Шифрование файла через ПКМ 3

С примерно следующим содержимым:

-----BEGIN PGP MESSAGE-----
hF4DzgN7xgit3/4SAQdACj8ebo85FR9Sv4vnwNxD4p2AkFgKHqQl5/MlDDUnxRkw
RRz/82b2xb7QozIZBR+kX0upF03U7drwswZoVDZr+EWr1pXHDsT5r+0osb2e5WwL
1MBBAQkCEBnJEBwq65YTxv04sMZIg81jntbEvbuq+op0PlH2wBxQShvaa/MKPq5a
Q+AC1uqpXZvwACwjorU8SFtCVc+gL/WLijJeduQWSr4EXq539sBjAAH0talZZWT4
PNLpzcLgIyG4JAZX1X8eQ9ypHgA9f5ioLQOmhSpbVpvBxx2lMYvhSMT8SEy/oDGj
fwPLz1vrWiEOZH4iNO4tRfdVwWSlQipqKh4Q7wn4Qu9b15hX3twulT7/DHXB54hW
lTJe7se/lIQD1CF428zBhPap2NnHenFIEXNjU2HynDY/oCWk8Xjre/9mKOgpAvZN
hRjUZ5gjTS9PFC2lRzE6eAOxTF4=
=1dcC
-----END PGP MESSAGE-----

Затем ваш друг отправляет этот зашифрованный файлик вам. Теперь вам нужно его расшифровать. Проще всего это можно сделать просто открыв файл через проводник, либо нажав ПКМ и выбрав “Проверить/Расшифровать” и затем нажав “Сохранить всё”:

Расшифровка файла через проводник

Также в Kleopatra существует “Блокнот” - раздел позволяющий зашифровывать и расшифровывать текстовые сообщения без файлов.

Здесь есть вкладка “Получатели:

Kleopatra - блокнот - получатели

И вкладка с текстовым полем:

Kleopatra - блокнот - текстовое поле

Если ввести в это поле сообщение и нажать “Зашифровать”, сообщение заменится своей зашифрованной версией:

Kleopatra - блокнот - текстовое поле - зашифровка

Если же в это поле вставить такое зашифрованное сообщение и нажать “Расшифровать”, сообщение (как неожиданно xD) расшифруется:

Kleopatra - блокнот - текстовое поле - расшифровка

Вот в принципе и все. Главное не забывайте:

  1. НЕ ДАВАЙТЕ НИКОМУ ПРИВАТНЫЙ КЛЮЧ!
  2. Можете раскидываться публичными ключами как хотите
  3. Можете посылать ЗАШИФРОВАННОЕ сообщение по любым незащищенным каналам связи

Если что-то не понятно или хотите побольше узнать про все вот это вот ваше это все, можете посмотреть здесь:

Дополнительные источники

  1. (SingleFile) Proglib - ”🕵 GPG и все-все-все: настраиваем шифрование переписки за 10 минут по методу Кристофера Робина”
  2. (SingleFile) Habr - “Kleopatra: GnuPG в графической оболочке”
  3. (SingleFile) Habr - “Используем GPG для шифрования сообщений и файлов”
  4. (SingleFile) Как пользоваться gpg: шифрование, расшифровка файлов и сообщений, подпись файлов и проверка подписи, управление ключами

Сноски

Сноски

  1. Что некоторые и делают, публикуя свой публичный ключ на публичных серверах

  2. источник