Что такое pgp шифрование. Установка и применение программы PGP. Не полностью удалённые файлы

Что такое pgp шифрование. Установка и применение программы PGP. Не полностью удалённые файлы

30.10.2019

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

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

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

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

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

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

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 -sta файл

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

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

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

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

Расшифровка

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

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

По умолчанию предполагается, что входной файл имеет расширение.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 используются криптография с открытым ключом. С помощью криптографических методов, например, обычный текст может быть преобразован в текст зашифрованный. Этот процесс требует наличия двух разных ключей:
  • Открытого ключа, который известен всем.
  • Закрытого ключа, который известен только владельцу.

▍Шифрование

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

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

  1. Отправитель создаёт случайный ключ шифрования (сеансовый ключ).
  2. Отправитель шифрует содержимое сообщения, применяя этот сеансовый ключ (с использованием симметричного шифра).
  3. Отправитель шифрует сеансовый ключ, используя открытый ключ PGP получателя.
  4. Отправитель отправляет зашифрованные данные и зашифрованный сеансовый ключ получателю.
Для расшифровки зашифрованного сообщения выполняются следующие действия:
  1. Получатель расшифровывает сеансовый ключ, используя свой закрытый ключ PGP.
  2. Получатель использует сеансовый ключ для расшифровки содержимого сообщения.

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

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

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

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

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

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

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

Bob Designer (obsolete 1024-bit key)
Так как люди, владельцы ключей, могут играть множество профессиональных и персональных ролей, в одном и том же ключе могут присутствовать несколько наборов идентификационных данных:

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

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

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

▍Сеть доверия и механизм «доверие при первом использовании»

PGP включает в себя механизм делегирования доверия, известный как сеть доверия (Web of Trust, WOT). В своей основе - это попытка заменить необходимость в централизованных службах сертификации вроде тех, что используются в HTTPS/TLS. При таком подходе пользователь самостоятельно принимает решения о том, кому можно доверять.

К сожалению, очень немногие понимают, как работает сеть доверия, и ещё меньше людей заботится об этой технологии. И хотя сети доверия остаются важным аспектом спецификации OpenPGP, существующие версии GnuPG (2.2 и выше) реализовали альтернативный подход, представленный механизмом «доверие при первом использовании» (Trust on First Use, TOFU).

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 почти универсально используется в смысле «стандарт OpenPGP», а не как название программы, и таким образом, PGP и OpenPGP взаимозаменяемы. Термины GnuPG и gpg следует использовать только когда имеются в виду конкретные инструменты, а не стандарты и прочие понятия, которыми мы оперируем. Например:
  • Ключ PGP (не GnuPG или GPG)
  • Подпись PGP (не GnuPG или GPG)
  • Сервер ключей PGP (не GnuPG или GPG)
Понимание этих различий должно помочь вам в общении с другими пользователями PGP.

▍Установка 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 --version | head -n1
Если вы видите нечто вроде gpg (GnuPG) 1.4.x , это значит, что по команде gpg вызывается GnuPG v.1. Попробуйте в таком случае команду gpg2:

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

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

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

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

Итоги

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

Уважаемые читатели! Используете ли вы PGP для защиты кода ваших программных проектов?

Теги: Добавить метки

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

  • GPG шифрование
  • История PGP / GPG шифрования
  • Термины GPG шифрования
  • Установка GPG шифрования
  • Шифрование сообщений и файлов
  • Подписи в GPG шифровании
  • Функция Web of Trust
  • Зачем нужно шифрование

GPG шифрование

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

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

История PGP / GPG шифрования

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

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

В 1999 был создан GPG - свободный, бесплатный, открытый и полностью совместимый со стандартом аналог PGP. Именно GPG стал самым популярным и зрелым инструментом асимметричного шифрования.

Термины GPG шифрования

Прежде чем приступить к использованию GPG, нужно понять несколько главных особенностей этого инструмента. Первая и основная особенность - это понятие «ключи». Каждый пользователь создает себе свой личный ключ. Ключ пользователя состоит из двух частей

  • Публичный ключ (из публичной части)
  • Секретный ключ (из секретной части)

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


GPG4USB

Вторая особенность - ключи, основанные на разных алгоритмах совместимы между собой. Неважно, использует ли пользователь RSA или ELGamal, для шифрования не нужно забивать голову такими деталями. Это достигается за счет работы по упомянутому выше стандарту и через некоторые криптографические приемы. Это одно из главных преимуществ GPG. Достаточно знать нужные команды, и программа сделает все сама. В библиотеку входит большое количество асимметричных алгоритмов, симметричным шифров и односторонних хэш-функций. Разнообразие также является преимуществом, потому что позволяет создать одновременно и общие рекомендованные конфигурации, подходящие для большинства, и возможность тонкой настройки для более опытных пользователей.

Как установить GPG шифрование

Для начала работы нужно установить сам GPG. Пользователи Linux могут поставить его из любого пакетного менеджера, поискав там « », или собрать вручную. Пользователи Windows могут воспользоваться сильно устаревшим клиентом , который имеет несколько неприятных багов и больше функций, или портативным и более свежим клиентом , который имеет меньше функций, но намного проще и стабильнее. Кстати, мы уже писали о том как с помощью клиента GPG4USB .


Независимо от операционной системы и клиента, после установки нужно будет создать свой ключ, введя в терминале или кликнув в клиенте соответствующую команду. Программа попросит определиться с алгоритмом шифрования. Обычно их два - это RSA и ELGamal (на самом деле три, если на Linux Вы отважились поставить экспериментальную ветку «modern» с криптографией на эллиптических кривых). Конкретных рекомендаций по алгоритмам нет, они разные и каждый выбирает себе схему по нраву.

Затем необходимо определиться с размером ключа в битах. Здесь тоже нет короткого и однозначного ответа. У слишком длинных ключей есть и недостатки. Одно можно сказать с уверенностью: при выборе RSA и ELGamal не используйте ключи меньше 2048 бит, они крайне не безопасны. Далее программа попросит заполнить несколько форм: E-mail, Имя и комментарий. E-mail и Имя - это публичная информация, которую сможет увидеть каждый, с кем вы будете переписываться.

В качестве почты можно указать другие виды связи, например ID какого-либо сервиса или мессенджера ( , Jabber, и т. д.), разделив знаком «@» сам идентификатор/адрес и название сервиса. Чаще всего содержание именно этого поля используется для идентификации владельца ключа.

Имя выбирать по своему усмотрению. Например, часто используемый ник или вообще «Anonymous».

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

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

Сгенерировав свой GPG-ключ, можно начать его распространять. Для этого надо ввести команду отображения публичной части. Исторически сложилось так, что программа изначально применялась для шифрования почты и подписи публичных сообщений в почтовых рассылках, поэтому ключи отображаются по принципу формата РЕМ (англ. «Privacy­Enhanced Mail»). Формат представляет собой единый стандартный блок ключа, начинающийся заголовком — BEGIN PGP PUBLIC KEY BLOCK­­­ —, за ним следует достаточно длинное тело самого ключа, кодированное цифрами и латинским алфавитом, и завершающий заголовок — ­­­­END PGP PUBLIC KEY BLOCK­­­­ —. Весь блок с заголовками представляет собой ключ GPG, его и нужно распространять целиком. Помимо ручного распространения ключей, возможно использовать специализированные сервера. Пользователь загружает свой публичный ключ на сервер, и при необходимости любой может запросить его. Во многих программах в качестве сервера по умолчанию часто указывают сервер MIT.

Каждый GPG-ключ уникален. Запоминать и сравнивать такие большие блоки ключей вручную невозможно, поэтому для этого существуют отпечатки ключей. Каждый отпечаток ключа тоже уникален, формируется из публичной части, предоставляя короткую уникальную строку для идентификации. В строке отпечатка содержится 40 символов с разделением на 4 символа пробелами. Важно знать, что последние 8 или 16 символов являются еще и ID ключа. При использовании команд из терминала надо будет указывать ID для работы. Отпечатки удобны для быстрого сравнения двух ключей, или короткого указателя нужного ключа при нехватке места.

Шифрование сообщений и файлов

Шифрованные с помощью GPG сообщения состоят из похожих на публичный ключ блоков, только с заголовком ­­­­— BEGIN PGP MESSAGE —­­­­, а длина кодированной символами части зависит от длины сообщения. Подобные сообщения могут быть прочитаны только обладателем ключа, которому адресовано сообщение. Также можно зашифровать свое послание для нескольких ключей, что очень удобно при общении небольшой группы людей. Шифровать можно и файлы, тогда результат шифрования будет записан в файл, а не кодирован текстовыми символами.

Подписи в GPG

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

Подписи тоже можно применять на файлах. Особенно часто эта функция применяется разработчиками ПО, связанного с безопасностью. Делается это для того, чтобы предотвратить подмену файлов злоумышленниками, которые могут встроить в программы вредоносный код. Подписываются обычно архивы или сборки, сама подпись сохраняется в отдельный файл с расширением.asc или.sig. Ключ публикуется в нескольких местах и/или загружается на сервер, где его очень трудно подменить. Сам процесс проверки называется «верификация подписи».

Функция Web of Trust

Еще одна функция GPG, которую стоит упомянуть - это Web of Trust. Она используется для подтверждения принадлежности публичного ключа конкретному человеку. Для этого знакомые друг с другом пользователи GPG обмениваются ключами при личной встрече.

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

Создание сертификата называется «подписывание ключей». Сам сертификат потом загружается на сервер ключей, и любой может его запросить. Подразумевается, что чем больше пользователей подписали ключ, тем выше к владельцу доверие.

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

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

Зачем нужно шифрование

Зачем вообще нужно все это шифрование, если человек ничего не скрывает и не нарушает? Это один из самых часто задаваемых вопросов. На него есть несколько ответов. За последние годы возможность тотальной слежки за сетевой деятельностью миллионов пользователей стала уже вопросом не технической сложности, а ресурсов. Обладатели таких ресурсов - все спецслужбы мира и десятки крупных корпораций, с помощью таких программ как PRISM и X­Keyscore могут собирать и хранить годами все письма электронной почты, SMS-сообщения и историю звонков.

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

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

Оценка GPG шифрования

Наша оценка

GPG шифрование - это отличный инструмент для шифрования электронной почты и цифровых материалов.

Оценка пользователей: 4.41 (27 оценок)

PGP: Кодирование и шифрование информации с открытым ключом. Левин Максим

Расшифровка.

Расшифровка.

Открываем полученное зашифрованное сообщение и нажимаем на второй справа значок на панели Outlook Express, либо на команду меню PGP decrypt message. Через несколько секунд сообщение будет расшифровано и появится в окошке.

Существует еще один способ использования PGP, который чуть-чуть сложнее, чем шифрование через Outlook Express. Этот способ можно применять в том случае, если не удается установить PGP вместе с программой Outlook Express.

Создаем сообщение в Outlook Express, затем выделяем его через команды edit - select all и копируем в буфер Windows через команду copy.

После этого ставим мышку на значок PGP в панели задач, нажимаем на мышку и исполняем команду encrypt clipboard.

Появляется окно диалога с PGP под названием key selection dialog.

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

После этого заходим в сообщение с текстом, который был ранее выделен, ставим мышку на поле сообщения, нажимаем на правую кнопку мышки и исполняем команду paste.

В результате зашифрованное содержимое clipboard заменяет предыдущее сообщение и на этом процесс шифровки закончился. Теперь можно отправлять сообщение обычным образом.

Расшифровывать полученные сообщения можно таким же образом: т.е. выделяем полученный зашифрованный текст, копируем его в буфер Windows clipboard, заходим мышкой в меню PGP через панель задач Windows и выбираем команду decrypt and verify clipboard.

Появляется окно программы PGP, в которое необходимо ввести пароль, вводим пароль в это окно, нажимаем на OK и перед нами предстает расшифрованное сообщение.

Естественно, перед тем, как это сделать, необходимо создать пару ключей, как было описано ранее.

Также кроме этого способа можно применить еще один способ шифрования (третий способ).

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

Encrypt and sing

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

После этой операции у файла остается то же самое имя, но меняется тип расширения на <*.pgp>

Теперь этот файл можно прикрепить к сообщению и отправить вместе с ним.

В результате мы узнали, что существует три основных способа шифрования информации:

Первый - самый удобный, напрямую в почтовой программе;

Второй - через копирование текста в буфер обмена Windows;

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

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

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

Для этого надо щелкнуть мышкой по символу PGP на панели задач, исполнить команду PGP preferences, зайти в General и поставить галочку напротив команды Always encrypt to default key.

Кроме этого нужно зайти в PGP keys, выбрать мышкой свой ключ, зайти в меню keys и исполнить команду set as default key.

Здесь же можно изменить свою парольную фразу: выделить мышкой свой ключ, нажать на правую кнопку мышки, исполнить команду key properties , change passphrase и поменять свою парольную фразу.

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

Кроме того, там же (в key properties) можно увидеть fingerprint или своеобразные "отпечатки пальцев", состоящие из комбинации цифр и букв.

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

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

Данная статья представляет собой краткое руководство по использованию GnuPG (он же GPG). В ней вы найдете основные команды, примеры использования, а также инструкции по прикручиванию GPG к почтовым клиентам. Далее предполагается, что вы знакомы с принципом работы GPG и объяснять, например, что такое ассиметричная криптография, открытый и закрытый ключ, цифровая подпись и так далее, не требуется. За несколько десятилетий существования GPG никто особо не преуспел в его взломе, что как бы намекает нам, что это довольно надежное решение как для обмена зашифрованными сообщениями, так и просто шифрования файлов.

Терминология

Существует некоторая путаница в терминологии. Например, далеко не все могут внятно объяснить, чем PGP отличается от GPG. Давайте же во всем разберемся.

  • OpenPGP — стандарт шифрования, описанный в RFC 4880 и RFC 6637 . Не следует путать с конкретными реализациями, такими, как PGP и GPG;
  • GnuPG или GPG — конкретная открытая (GPLv3) реализация OpenPGP, речь о которой пойдет в настоящей статье;
  • PGP — сильно проприетарная реализация OpenPGP от компании PGP Corporation. В 2010-м году компанию купила Symantec , а ее продукты переименовала во что-то типа Symantec Desktop Email Encryption;

Часто, говоря «PGP», люди имеют в виду способ шифрования, описанный в OpenPGP, и соответственно любую из его реализаций.

Основные команды GnuPG

Генерируем ключи:

gpg --gen-key

Хорошей идеей будет выбрать алгоритм RSA и длину ключей 4096 бит.

Важно! Не забудьте пароль от закрытого ключа.

Частая проблема — сообщение вроде такого:

Not enough random bytes available. Please do some other work to give
the OS a chance to collect more entropy! (Need 204 more bytes)

Решается она установкой демона для сбора энтропии:

sudo apt-get install rng-tools

Просмотр списка ключей:

gpg --list-keys
gpg --list-secret-keys
gpg --list-public-keys

Получение fingerprint ключа:

gpg --fingerprint afiskon@ example.ru

Пример вывода:

pub 4096R/8640D6B9 2016-09-27
Fingerprint = DB5E AA39 0745 427D ED31 D189 3197 3F00 8640 D6B9
uid Aleksander Alekseev
sub 4096R/5982B4BF 2016-09-27

Fingerprints используются в основном для проверки того, что с сервера ключей (см далее) был импортирован действительно правильный ключ. Для поиска их не используют.

gpg --armor --output privkey.txt --export-secret-keys 8640D6B9

Импорт открытого ключа:

gpg --import key.txt

Импорт закрытого ключа:

gpg --allow-secret-key-import --import privkey.txt

Если не указать --allow-secret-key-import , импортируется только открытый ключ, и при попытке подписать что-то вы будете получать странные ошибки вроде:

gpg: no default secret key: secret key not available
gpg: msg.txt: sign+encrypt failed: secret key not available

Экспорт открытого ключа на keyserver:

gpg --keyserver pgp.mit.edu --send-keys 8640D6B9

Важно! После того, как вы залили ключ на keyserver, его будет невозможно удалить, только сделать revoke. Убедитесь, что вы сделали надежную резервную копию ключа. Если вы раньше никогда не работали с PGP/GPG, очень советую сначала потренироваться на почтовых адресах в зоне example.ru.

Не имеет большого значения, какой keyserver указать. Например, еще есть keys.gnupg.net, а также другие. Все они время от времени обмениваются друг с другом данными . Не лишено смысла сделать send-keys сразу на несколько серверов, чтобы их быстрее увидели все пользователи PGP/GPG. Синхронизация серверов, по моим наблюдениям, занимает минут 10-15.

Hint: чтобы постоянно не указывать --keyserver , просто допишите в ~/.bashrc:

alias gpg ="gpg --keyserver pgp.mit.edu"

Импорт открытого ключа с keyserver:

gpg --keyserver pgp.mit.edu --search-keys afiskon@ example.ru

В мире PGP/GPG существуют так называемая сеть доверия (web of trust) . В двух словах это означает, что GPG не доверяет ключу, если только он не подписан кем-то, кому вы доверяете. Кроме того, если вы доверяете Пете, а Петя доверяет Коле, то вы автоматически доверяете Коле. В частности, по умолчанию при проверке подписи и прочих действиях GPG будет ругаться так:

Чтобы исправить это, говорим:

gpg --edit-key afiskon@ example.ru

Затем в диалоге говорим trust , жмем 5 («I trust ultimately»), говорим quit . Другие ключи можно подписать командой tsign . Кстати, там же можно сменить пароль от вашего ключа (команда passwd ), изменить дату экспирации ключа в любую сторону (команда expire ), добавить имя/email (команда adduid ), удалить имя/email (команда revuid ), посмотреть алгоритмы шифрования, используемые по умолчанию (showpref ) и делать другие интересные вещи.

Примечание: Что делать, когда ключ заэкспайрился? В этом случае можно изменить дату экспирации на более позднюю и перезалить ключ. Или же создать новый ключ, подписать его старым, и залить новый ключ на keyserver. Делать revoke не требуется.

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

gpg --sign-key 7EFE74E5

На какой-нибудь другой машине можно скачать ключ заново и посмотреть, кем он подписан:

gpg --keyserver pgp.mit.edu --search-keys eax@ example.ru
gpg --list-sigs eax@ example.ru
gpg --check-sigs eax@ example.ru

Время от времени стоит обновлять ключи, на случай, если у ключей появились новые подписи, или какие-то ключи отозвали:

gpg --keyserver pgp.mit.edu --refresh-keys

Пример шифрования и подписи файла для заданного получателя (ключ -r можно указывать много раз):

gpg --encrypt --sign --armor -r eax@ example.ru msg.txt

Расшифровка файла и проверка подписи осуществляется командой:

Пример подписи и проверки подписи бинарного файла (например, ISO образа диска):

gpg --detach-sign file.iso
gpg --verify file.iso.sig

Симметричное шифрование/дешифрование файла (удобно, например, для хранения паролей):

gpg -o nonsense.gpg --cipher-algo AES -a -c nonsense.txt
gpg -o nonsense2.txt -d nonsense.gpg

Симметричное шифрование с сохранением в бинарном формате (удобно для шифрования бэкапов):

tar -cvzf - / home/ eax | \
gpg --symmetric --cipher-algo AES256 --digest-algo SHA256 \
--compression-algo Uncompressed > backup.tgz.gpg

Расшифровка зашифрованного таким образом файла:

gpg --decrypt backup.tgz.gpg | tar -xvzf -

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

echo "pinentry-program /usr/bin/pinentry-tty" >> \
~/ .gnupg/ gpg-agent.conf
killall gpg-agent

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

gpg --gen-revoke --armor --output =revocation.crt eax@ example.ru

Используя его, ключ можно отозвать так:

gpg --import revocation.crt
gpg --keyserver pgp.mit.edu --send-keys 7EFE74E5

Важно! Сертификат отзыва не шифруется и может быть использован кем угодно. Убедитесь, что храните его в надежном месте (лучше даже в нескольких таких местах) и непременно в зашифрованном виде!

Прикручиваем GnuPG к Claws Mail

В Ubuntu нам понадобятся следующие пакеты:

sudo apt-get install claws-mail-pgpinline claws-mail-pgpmime

В Configuration → Plugins → Load загружаем pgpcore.so, pgpinline.so и pgpmime.so. Далее просто настраиваем плагины через настойки клиента. В настройках аккаунта можно указать, какие ключи использовать, а также сгенерировать новые ключи и отправить их на keyserver. При написании письма в Options станут доступны галочки Encrypt и Sign.

В свойствах аккаунта во вкладке Privacy можно настроить плагины так, чтобы сообщения всегда подписывались, шифровались при ответе на зашифрованные сообщения, и так далее. Использовать советую PGP/MIME, так как PGP/Inline может не слабо раздражать пользователей, не использующих PGP/GPG. То есть, почти всех.

Из косяков плагина я столкнулся только с тем, что в настройках нужно указать полный путь к исполняемому файлу gpg, после этого все заработало.

Прикручиваем GnuPG к Mutt

Заключение

GPG прикручивается еще очень много к чему. Скажем, для Thunderbird есть плагин Enigmail . Существуют мобильные приложения с поддержкой GPG. Например, для iPhone есть oPenGP и iPGMail . Кроме того, существуют плагины и для IM-клиентов, в частности, для Psi. К сожалению, рассмотреть их все в рамках одной статьи не представляется возможным.

В качестве домашнего задания можете добавить меня в свой keyring, подписать мои ключи и отправить мне на email зашифрованное письмо.

А используете ли вы PGP/GPG?



© 2024 beasthackerz.ru - Браузеры. Аудио. Жесткий диск. Программы. Локальная сеть. Windows