Как расшифровать pgp сообщение

Обновлено: 05.07.2024

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

"И как получить данный ключ, чтобы выложить его себе в профиль"
Сгенерить в той шифровалке, что ты используешь.

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

Шифрование PGP

Внимание - в настоящее время статья устарела. Актуальная замена PGP - это GnuPG (GNU Privacy Guard, https://www.gnupg.org). Пример работы с GnuPG в Windows смотрите в статье "Шифрование GPG (GnuPG, ex PGP)".

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

В 1999 году силами Фонда свободного программного обеспечения была создана свободная реализация OpenPGP под названием GNU Privacy Guard (GnuPG), а сам PGP был куплен McAfee, а поздгнее - Symantec. Проект GnuPG жив и здоров, о нем читайте в отдельной статье.

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

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

Как это работает

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

Аутентификация

На наших машинах установлены две версии PGP:

PGP 2.6.3ia - /usr/local/bin/pgp
PGP 6.5.1i - /usr/local/bin/pgp6

В PGP версии 2.6.3ia для криптования используется алгоритм RSA, а в версии 6.5.1i добавлен алгоритм DSS/DH.

Генерация ключей

Сначала необходимо зайти в unix shell и в своей домашней директории создать подкаталог .pgp командой:

После этого командой "/usr/local/bin/pgp -kg" создаем ключи и защищаем свой закрытый ключ паролем. Обязательно запишите этот пароль. При утере восстановить его будет невозможно и придется создавать новые ключи. В каталоге .pgp созданы два файла:

pubring.pgp - набор открытых ключей
secring.pgp - набор закрытых ключей

Теперь можете приступать к использованию PGP

Использование PGP

Создание пары ключей

Чтобы начать использовать PGP, нужно создать собственную пару ключей (открытый/закрытый). Чтобы это сделать, выполните команду:

Вас попросят выбрать максимальный размер ключа (512, 768 или 1024 байт). Чем больше ключ, тем более надежным он будет, правда ценой небольшого снижения быстродействия при шифровании.

После выбора размера нужно задать идентификатор открытого ключа. Обычно здесь указывают свои имена и/или e-mail адрес. Например:

pgp -ke идентификатор [файл с ключами]

Добавление ключей в файл

pgp -ka somekey [файл с ключами]

По умолчанию расширение .pgp указывает на файл с ключем и имена pubring.pgp и secring.pgp даются файлам, содержащим наборы открытых и закрытых ключей, соответственно. После добавления ключа PGP может сообщить, что добавленный ключ не полностью сертифицирован, это означает, что данный ключ не обязательно может принадлежать заявленному владельцу. Если есть уверенность, что ключ действительно принадлежит этому человеку, то сами можете подтвердить его приемлемость для использования.

Удаление ключа из файла

Удалить ненужный ключ из файла можно командой

pgp -kr идентификатор [файл с ключами]

Например: "pgp -kr alex" удалит любой ключ, у которого в идентификаторе содержится "alex". По умолчанию исследуется файл открытых ключей.

Выделение ключа

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

pgp -kx идентификатор файл [файл с ключами]

Например: "pgp -kx alex mykey" выделяет открытый ключ, идентифицированный подстрокой "alex" в файле mykey.

Созданный файл mykey.pgp будет не в формате ASCII. Однако, если потребуется создать файл ключа в формате ASCII чтобы послать, к примеру, по e-mail или добавить дополнительную информацию к базе данных, потребуется использовать команду:

pgp -kxa идентификатор файл [файл с ключами]

Например: "pgp -kxa alex mykey" выделяет открытый ключ, идентифицированный подстрокой "alex", в файл "mykey.asc".

Вместе с ключом также выделяются все сертификаты, которые его подтверждают.

Содержание файлов с ключами

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

pgp -kv [идентификатор] [файл с ключами]

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

pgp -kvv [идентификатор] [кольцо]

Теперь попробуем зашифровать файл. Сделать это можно командой:

pgp -e файл идентификатор

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

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

pgp -ea файл идентификатор

pgp -ea файл идентификатор1 идентификатор2 идентификатор3

pgp -s файл идентификатор

Если у нас есть несколько закрытых ключей в нашем secring.pgp, мы можем выбрать один из них при помощи идентификатора. Эта команда создает файл, который не является ASCII-текстом, потому что PGP пытается сжать файл. Если, с другой стороны, Вы хотите подписать файл, оставив текст читабельным и с подписью в конце, то процедура будет выглядеть так :

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

pgp -es файл идентификатор_получателя мой_идентификатор

Для кодирования файла используется открытый ключ, идентифицируемый подстрокой "идентификатор_получателя", поэтому только этим ключом можно декодировать этот файл. Затем идентифицируем закрытый ключ строкой "мой_идентификатор", так как в нашем наборе есть несколько ключей. Даже в этом случае можно создать файл в формате ASCII, используя опцию -a.

Расшифровка

Для расшифровки файла и/или проверки его подписи используется команда:

pgp входной_файл [-o выходной_файл]

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

Эта версия Orchestrator достигла конца поддержки, мы рекомендуем выполнить обновление до Orchestrator 2019.

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

Установка GnuPG

GnuPG — это программа с открытым исходным кодом, используемая в стандартных действиях шифрования и расшифровки с помощью PGP для шифрования и расшифровки файлов. Следующие процедуры описывают способы установки этого исполняемого файла и связанного файла на сервер Runbook или компьютер, на котором выполняется Runbook Designer.

Установка GnuPG версии 1.x и 2.0.x

Выполните указанные ниже действия.

  1. Загрузите файлы gpg.exe и iconv.dll версии 1.4.10 или более поздней из GnuPG.
  2. сохраните gpg.exe и iconv.dll в папке: \program files (x86) \Common Files\Microsoft System Center \орчестратор\екстенсионс\суппорт\енкриптион на каждом сервере runbook и на компьютере, где работает Runbook Designer.

Установка GnuPG версии 2.x

Выполните указанные ниже действия.

Загрузите файлы gpg.exe, gpg-agent.exe, iconv.dll, libassuan-0.dll, libgcrypt-20.dll, libgpg-error-0.dll, libnpth-0.dll, libsqlite3-0.dll и zlib1.dll версии 2.x или более поздней из GnuPG.

сохраните gpg.exe, gpg-agent.exe, iconv.dll, libassuan-0.dll, libgcrypt-20.dll, libgpg-error-0.dll, libnpth-0.dll, libsqlite3-0.dll и zlib1.dll в папку: \program files (x86) \Common files \орчестратор\екстенсионс\суппорт\енкриптион на каждом сервере runbook и на компьютере, на котором работает Runbook Designer.

Настройка действия расшифровки с помощью PGP

Используйте следующие сведения для настройки действия расшифровки файлов с помощью PGP.

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


Здесь будут раскрыты следующие темы:

  • Основы PGP и рекомендации по работе с соответствующим ПО.
  • Использование PGP с Git.
  • Защита учётной записи разработчика.

О структуре материалов

Каждый раздел этой серии материалов разбит на две части:

  1. Контрольный список, который может быть адаптирован под нужды конкретного проекта.
  2. Пояснения, раскрывающие суть элементов контрольного списка, а также инструкции по работе с программами.

Особенности контрольного списка

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

Базовые концепции и инструменты PGP

▍Контрольный список

Вот темы, в которых нужно ориентироваться после успешного освоения материала этого раздела:

  1. Роль PGP в разработке свободного ПО (Важно).
  2. Основы криптографии с открытым ключом (Важно).
  3. Различия между шифрованием и подписыванием материалов (Важно).
  4. Идентификационные данные ключей PGP (Важно).
  5. Достоверность ключей PGP (Важно).
  6. Установка утилит GnuPG (версии 2.x) (Важно).

▍Пояснения

Сообщество открытого ПО уже давно полагается на PGP для обеспечения аутентичности и целостности разрабатываемых программных продуктов. Вы можете об этом не знать, но работаете ли вы в среде Linux, Mac или Windows, вы уже пользовались PGP для того, чтобы обеспечить целостность вашего вычислительного окружения.

  • Дистрибутивы Linux используют PGP для обеспечения неизменности бинарных пакетов или пакетов с исходным кодом с момента их создания до момента их установки конечным пользователем.
  • Проекты свободного ПО обычно предлагают отдельные подписи PGP для выпущенных программных архивов, таким образом, проекты, полагающиеся на них, могут проверить целостность загруженных релизов перед интеграцией их в собственные дистрибутивы.
  • Проекты свободного ПО обычно полагаются на подписи PGP в самом коде для того, чтобы отслеживать происхождение и обеспечивать целостность кода, вносимого в проект его разработчиками.

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

▍Обзор работы PGP

Вам не нужно знать все подробности о том, как работает PGP. Для успешного использования этой технологии достаточно понимания её базовых концепций. В PGP используются криптография с открытым ключом. С помощью криптографических методов, например, обычный текст может быть преобразован в текст зашифрованный. Этот процесс требует наличия двух разных ключей:

  • Открытого ключа, который известен всем.
  • Закрытого ключа, который известен только владельцу.

▍Шифрование

Процесс шифрования выглядит так:

▍Подписывание

Для подписывания данных открытые и закрытые ключи PGP используются обратным способом:

  1. Подписывающий генерирует хэш контрольной суммы неких данных.
  2. Подписывающий использует собственный закрытый ключ для шифрования этой контрольной суммы.
  3. Подписывающий предоставляет зашифрованную контрольную сумму вместе с данными.
  1. Проверяющий генерирует собственную контрольную сумму данных.
  2. Проверяющий использует открытый ключ подписывающего для расшифровывания предоставленной контрольной суммы.
  3. Если контрольные суммы совпадают, значит целостность содержимого подтверждена.

▍Совместное использование шифрования и подписывания

▍Идентификационные данные ключа

С каждым PGP-ключом должны быть ассоциированы идентификационные данные владельца ключа. Обычно это — полное имя человека и адрес электронной почты в следующем формате:


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


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


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

▍Достоверность ключа

Для того чтобы иметь возможность использовать чей-нибудь открытый ключ для шифрования или верификации, вам нужно убедиться в том, что он действительно принадлежит этому человеку (Alice в данном случае), а не мошеннику (пусть мошенника зовут Eve). В PGP это называется достоверностью ключа:

  • Полная достоверность ключа означает, что имеется очень высокий уровень уверенности в том, что данный ключ принадлежит Alice.
  • Граничная достоверность ключа означает, что мы до некоторой степени уверены в том, что ключ принадлежит Alice.
  • Неизвестная достоверность ключа означает, что у нас абсолютно нет уверенности в том, что этот ключ принадлежит Alice.

TOFU можно сравнить с SSH. Когда вы, используя SSH, в первый раз подключаетесь к удалённой системе, ваша система запоминает отпечаток её ключа. Если ключ изменится, SSH-клиент сообщит вам об этом и отклонит соединение, предлагая вам принять решение о том, доверяете ли вы изменившемуся ключу или нет.

Похожим образом работает и механизм TOFU. Когда вы впервые импортируете чей-то PGP-ключ, он считается достойным доверия. Если после этого GnuPG столкнётся с новым ключом с теми же самыми идентификационными данными, тогда оба ключа будут помечены как недействительные и вам нужно будет самостоятельно принять решение о том, какой из них следует сохранить.

В этом руководстве мы будем использовать модель доверия TOFU.

▍О терминологии

Тут нам хотелось бы отметить важность понимания различий между такими терминами, как PGP, OpenPGP, GnuPG и gpg:

  • PGP (Pretty Good Privacy) — это название коммерческой программы, вышедшей в 1991-м году.
  • OpenPGP — это стандарт IETF, совместимый с PGP.
  • GnuPG (Gnu Privacy Guard) — это бесплатное ПО, которое реализует стандарт OpenPGP.
  • Инструмент командной строки для GnuPG называется gpg.
  • Ключ PGP (не GnuPG или GPG)
  • Подпись PGP (не GnuPG или GPG)
  • Сервер ключей PGP (не GnuPG или GPG)

▍Установка GnuPG

Если вы используете Linux, это значит, что в вашей системе уже установлено ПО GnuPG. На Mac вам надо установить GPG-Suite, или воспользоваться командой brew install gnupg2 . Если вы пользователь Windows, то вам подойдёт GPG4Win, и вам, вероятно, потребуется изменить некоторые команды из этого руководства. Если же вы пользуетесь в Windows Unix-подобным окружением, то команды менять не придётся. Если вы пользуетесь какими-то другими платформами, то вам понадобится самостоятельно подобрать подходящую реализацию GnuPG.

▍GnuPG версий 1 и 2

И GnuPG v.1, и GnuPG v.2 реализуют один и тот же стандарт, но они предоставляют несовместимые библиотеки и инструменты командной строки, в результате многие дистрибутивы поставляются и с устаревшей версией 1, и с более новой версией 2. Вам нужно удостовериться в том, что вы всегда пользуетесь GnuPG v.2.

Для начала, для того, чтобы узнать, какая версия GnuPG скрывается в вашей системе под именем gpg , выполните следующую команду:


Если вы видите нечто вроде gpg (GnuPG) 1.4.x , это значит, что по команде gpg вызывается GnuPG v.1. Попробуйте в таком случае команду gpg2 :


Если вы видите что-то вроде gpg (GnuPG) 2.x.x , значит, всё в порядке. Тут мы полагаем, что у вас есть версия GnuPG 2.2 или более поздняя. Если вы используете версию GnuPG 2.0, некоторые из команд, которые будут здесь приведены, работать не будут, поэтому вам стоит рассмотреть возможность установки самой свежей версии 2.2 GnuPG.

▍Псевдоним для GnuPG v.2

Если в вашей системе есть и команда gpg , и команда gpg2 , хорошо бы настроить всё так, чтобы по команде gpg вызывалась GnuPG v.2, а не старая версия ПО. Сделать это можно, создав псевдоним:


Эту команду можно поместить в .bashrc для того, чтобы на команду gpg откликалась программа GnuPG v.2.

Итоги

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

Читайте также: