gpg signatures что это

Подписываем коммиты GPG ключом

Чтобы проверить, что коммиты действительно получены из доверенного источника, в Git есть несколько способов подписать и проверить исходники, используя GPG.

GPG (также известный как GnuPG) создавался как свободная альтернатива несвободному PGP. GPG используется для шифрования информации и предоставляет различные алгоритмы (RSA, DSA, AES и др.) для решения этой задачи.

Нас же интересует использование GPG вместе с Git. Git является криптографически защищённой системой, но эти механизмы сложны в использовании.

Зачем подписывать коммиты?

Любой человек может подписаться любым именем и email в git. Никакой верификации при этом не происходит.

Таким образом любой человек может попробовать выдать свои коммиты за ваши, например, чтобы внедрить вредоносный код.

Чтобы проверить, что коммиты действительно получены из доверенного источника, в Git есть несколько способов подписать и проверить исходники, используя GPG.

Вот как это выглядит в GitHub

Подписанный коммит в GitHub

Настройка GPG

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

Посмотреть список ключей можно следующей командой.

Создание нового ключа GPG

Вам необходимо будет ввести вашу почту, ФИО и пароль для защиты GPG.

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

По умолчанию ключ GPG годен год.

Получить публичный ключ

Иногда необходимо получить ключ. Делается это следующей командой:

Публикация открытого ключа

Это не обязательно, но в некоторых случаях необходимо сделать ваш ключ доступным и узнаваемым в Интернете.

Выполните эту команду:

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

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

Теперь Git будет использовать ваш ключ по умолчанию для подписи тегов и коммитов.

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

Ручное добавление

Для глобальной настройки:

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

Чтобы получить галочку верифицированного комита, необходимо сообщить гитхабу о новом GPG ключе. Перед этим убедитесь, что email из GPG ключа добавлен в ваш аккаунт.

Чтобы добавить ваш ключ в GitHub перейдите в Settings > SSH and GPG keys. Вас интересует кнопка “New GPG key”

Теперь необходимо получить публичный ключ. Для этого выполните команду:

Скопируйте целиком полученное значение, вставьте его в поле и нажмите “Add GPG key”. Если все прошло успешно, то вы увидите ваш ключ в списке.

Подписание коммитов

Среда разработки IntelliJ IDEA автоматически подписывает все ваши коммиты, если вы установили глобальный ключ.

Заключение

Убедитесь, что вы понимаете GPG и преимущества подписания, прежде чем принимать это как часть стандартного рабочего процесса.

Источник

GnuPG: Безопасная почта для Win, Mac и *nix

GnuPG (GNU Privacy Guard ) — открытая реализация PGP, совместимая со стандартами OpenPGP ( RFC 2440 ). GnuPG позволяет шифровать, расшифровывать, подписывать и верифицировать электронные сообщения при помощи пар ключей ( RSA по-умолчанию ). Наиболее частое применение GnuPG — в шифровании электронной почты и проверки подписи файлов, выложенных для скачивания. Но есть возможность использовать и в других протоколах: например, PSI (Jabber-клиент) поддерживает GnuPG и позволяет поточно шифровать переговоры.

Рассмотрим установку и первичную настройку GnuPG для трёх ОС: Windows, Mac OS X и Linux.
Подразумевается, что читатель имеет достаточные знания для того, чтобы выполнить несколько команд в консоли ОС (CMD/Terminal/xterm соответственно).

Скачивание

Windows: GPG4Win — готовая сборка GnuPG + GUI + Claws-Mail.
Mac OS X: Установить GPG Suite
Linux: В зависимости от вашего дистрибутива. Ключевое слово — gnupg2.
В связи с многообразием клиентов под *nix, расписывать установку для каждого — бесполезно.
Список клиентов, поддерживающих GNUPG — тут.

Установка

Windows: Стандартная установка. Не забываем поставить галочку около «Claws Mail».
Mac OS X: Устанавливаем GPG Suite.
Linux: В зависимости от дистрибутива и почтового клиента :)l.

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

2048 должно хватить. Просто жмём Enter.

Через какое время ключ будет считаться недействительным? Жмите «Enter» 🙂 Пусть будет вечным.

Далее жмём «Y». И отвечаем на 3 вопроса.

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

Windows: Запускаем Claws-Mail. Подключаем аккаунт почты (тот, для которого создавали ключ! ).
Идём в настройки-модули, проверяем, что там есть модуль GPG.
Теперь, создаём сами себе сообщение и выбираем Параметры->Зашифровать.
Кстати, можем сразу создать новые ключи для другой учетной записи — Настройки-Настройки учетной записи-Модуль-GPG-Генерировать новую пару ключей
Mac OS X: Запускаем Mail, создаём новое сообщение, видим галочки «Signed» и «Encryped». Можем выбрать ключ для подписи/шифрования. Для 10.6 и Claws-mail аналогично Windows.
Linux:В зависимости от клиента. Для Claws-Mail аналогично Windows.

Переписка

Финал

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

Источник

Шифрование и подпись сообщений с помощью GPG

GPG (GNU Privacy Guard) – это свободное средство для шифрования данных. GPG обеспечивает безопасную передачу информации и может подтвердить подлинность источника сообщения.

Это руководство расскажет, как работает и как реализовывается GPG.

Примечание: Хотя руководство предназначено для сервера Ubuntu 16.04, с небольшими поправками оно подойдет и для других дистрибутивов.

Как работает шифрование на открытых ключах

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

Читайте также:  при какой температуре убивается вирус коронавирус

Ограничение доступа к сообщению

В некоторых случаях право на чтение сообщения должно быть только у получателя (особенно если сообщения содержат конфиденциальные данные).

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

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

Подтверждение подлинности отправителя

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

Настройка GPG-ключей

В большинстве дистрибутивов GPG устанавливается по умолчанию.

Если это не так, установите GPG самостоятельно. В Ubuntu и Debian введите:

sudo apt-get update
sudo apt-get install gnupg

В CentOS нужно ввести:

sudo yum install gnupg2

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

Команда задаст ряд вопросов.

Please select what kind of key you want: (1) RSA and RSA (по умолчанию)
What keysize do you want? 4096
Key is valid for? 1y (Срок действия истекает через 1 год. Для тестирования достаточно создать ключ с коротким сроком действия; для этого просто укажите число.)
Is this correct? y
Real name: имя
Email address: your_email@address.com
Comment: Дополнительный комментарий, который будет отображаться в подписи
Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? O
Enter passphrase: Введите надежную парольную фразу (верхний и нижний регистр, цифры, символы).

После этого gpg сгенерирует ключи с помощью энтропии. Энтропия – это уровень непредсказуемости и неопределенности, которая существует в системе. GPG использует энтропию для создания безопасного набора ключей.

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

Создание сертификата отзыва

Также нужно предусмотреть способ отзыва пары ключей (он пригодится в случае потери закрытого ключа). GPG позволяет быстро создать такой сертификат.

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

Чтобы сгенерировать сертификат отзыва, введите:

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

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

После этого будет предложено добавить комментарий и подтвердить действия. Чтобы создать сертификат отзыва, нужно ввести свою парольную фразу GPG. Сертификат отзыва будет записан в файл, указанный с помощью флага –output (в данном случае в revocation.crt).

Revocation certificate created.
Please move it to a medium which you can hide away; if Mallory gets
access to this certificate he can use it to make your key unusable.
It is smart to print this certificate and store it away, just in case
your media become unreadable. But have some caution: The print system of
your machine might store the data and make it available to others!
Сразу ограничьте доступ к файлу сертификата:
chmod 600

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

Импорт открытых ключей других пользователей

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

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

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

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

Также поиск можно выполнять с помощью GPG.

Проверка и подпись ключа

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

Подтверждение личности пользователей

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

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

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

Чтобы получить отпечаток ключа, введите:

Читайте также:  Что значит смотреть сквозь человека

Полученное значение можно сравнить с самим пользователем или же с кем-то, кто имеет доступ к его серверу.

Подпись ключа

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

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

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

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

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

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

Доступность открытого ключа

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

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

Чтобы отправить кому-либо открытый ключ, запросите его в GPG:

Затем можно скопировать и вставить его в текстовый файл или отправить его любым другим удобным способом.

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

Также это можно сделать через интерфейс GPG. Чтобы узнать ID своего ключа, введите:

Выделенная часть в выводе – это ID ключа. Это короткий путь сослать ключ на внутреннее программное обеспечение.

pub 4096R/311B1F84 2013-10-04
uid Test User
sub 4096R/8822A56A 2013-10-04

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

Шифрование и дешифровка сообщений при помощи GPG

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

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

Для шифрования сообщений используется флаг –encrypt. Базовый синтаксис выглядит так:

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

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

Дешифровка сообщений

Получив сообщение, просто вызовите GPG на файл сообщения:

В случае необходимости программа запросит пароль.

Если сообщение имеет вид чистого текста, то его можно скопировать и вставить, перед этим набрав gpg безо всяких аргументов. Можно нажать «CTRL-D», чтобы обозначить конец сообщения, и GPG расшифрует его.

Поддержка ключей

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

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

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

Обновить информацию о ключах можно с помощью команды:

Эта команда извлекает новую информацию о ключах с серверов ключей.

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

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

Заключение

Правильное использование GPG обезопасит переписку. Это очень полезно как при работе с конфиденциальной информацией, так и в обыденной переписке.

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

Источник

Используем GPG для шифрования сообщений и файлов

Кратко о том, как создавать ключи, шифровать и подписывать файлы и отправлять ключи на сервер ключей.

GPG может использоваться для симметричного шифрования, но в основном программа используется для ассиметричного шифрования информации. Если кратко — при симметричном шифровании для шифровки и расшифровки сообщения используется один ключ (например, какой символ соответствует той или иной букве). При ассиметричном шифровании используются 2 ключа — публичный и приватный. Публичный используется для шифрования и его мы можете дать своим друзьям, а приватный — для расшифровки, и его вы должны хранить в безопасности. Благодаря такой схеме расшифровать сообщение может только владелец приватного ключа (даже тот, кто зашифровывал сообщение, не может произвести обратную операцию). Подробнее про асимметричное шифрование вы можете прочитать в Википедии.

Установка GPG

Скачайте и установите Gpg4win.

В большинстве дистрибутивов GNU/Linux GPG уже установлен. Если же он у вас не установлен, установите пакет gnupg с помощью своего пакетного менеджера или соберите его из исходников.

Для Android существуют программы GnuPG for Android и OpenKeychain. Создатели GnuPG for Android рекомендуют использовать OpenKeychain.

Спасибо товарищу под ником sormon за то, что напомнил!

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

Здесь будет приведено только использование в Linux (на момент написания статьи последней версией GPG является 2.2.6)

Введя gpg без аргументов он создаст необходимые ему файлы (если они ещё не созданы) и будет ждать ввода шифруемой информации.

При наличии ключа мы можем ввести текст, нажать сочетание клавиш Ctrl + D и получить порцию кракозябр прямо в консоль. Но пока что у нас нет ключа.

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

Чтобы создать ключ, нужно запустить GPG с аргументом «—full-generate-key» (можно и с «—gen-key», но в этом случае у нас не будет выбора некоторых важных параметров).

Читайте также:  птоз верхнего века у ребенка операция в каком возрасте

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

Для RSA ключа размером 2048 бит вполне достаточно, но вы можете выбрать размер до 4096 бит (использовать ключи размера меньше 2048 бит небезопасно).

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

GPG спросит, верно ли мы указали срок, и если да, то нужно будет указать имя, адрес электронной почты и примечание (всё это опционально, но нужно указать хотя бы что-то одно).

Здесь вы можете сделать правки либо продолжить.

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

В терминале вводимый пароль никак не отображается!

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

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

Итак, что же означают все эти странные последние строки?

rsa — Алгоритм шифрования RSA.
2048 — Длина ключа.
1970-01-01 — Дата создания ключа.
2BB680. E426AC — Отпечаток ключа. Его следует сверять при импортировании чужого публичного ключа — у обоих сторон он должен быть одинаков.
uid — Идентификатор (User-ID).
pub и sub — Типы ключа:

pub — Публичный ключ.
sub — Публичный подключ.
sec — Секретный ключ.
ssb — Секретный подключ.

[SC] и [E] — Предназначение каждого ключа. Когда вы создаёте ключ, вы получаете аж 4 криптоключа: для шифрования, расшифровки, подписи и проверки подписи:

S — Подпись (Signing).
C — Подпись ключа (Certification). Об этом пойдёт речь чуть позже.
E — Шифрование (Encryption).
A — Авторизация (Authentication). Может использоваться, например, в SSH.

Зачем нужно подписывать сообщения? Для того, чтобы подтвердить, что сообщение написано именно вами и не изменилось в процессе передачи. Если сообщение будет изменено, то при проверке подписи это будет указано.

Конфигурация

Файл конфигурации хранится в файле

/.gnupg/gpg.conf
Вот, например, пример моего файла конфигурации, который я рекомендую себе поставить:

keyid-format 0xlong — формат вывода идентификатора ключа. У каждого ключа и подключа есть свой идентификатор. По умолчанию он не выводится, раньше выводилась его короткая версия.
Доступные форматы:
none — Не выводить (По умолчанию).
short — Короткая запись.
0xshort — Короткая запись с префиксом «0x».
long — Длинная запись.
0xlong — длинная запись с префиксом «0x».

throw-keyids — Не включать информацию о ключе в зашифрованное сообщение. Эта опция может быть полезна для анонимизации получателя сообщения.

no-emit-version — Не вставлять версию GPG в зашифрованное сообщение.

no-comments — Убирает все комментарии из зашифрованного сообщения.

Команды и опции

Я опишу только самое основное.

—armor
-a — Создаёт ASCII (символьный) вывод. При шифровании GPG по умолчанию создаёт бинарный вывод. При использовании этой опции GPG кодирует информацию кодировкой Radix-64 (Разновидность Base64). Этот текстовой вывод можно, например, отправить в мессенджере или по электронной почте, а также вывести на экран.

—encrypt
-e — Зашифровать сообщение.

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

—decrypt
-d — Расшифровать сообщение.

—sign
-s — Подписать сообщение. Подпись при этом будет распологаться отдельно от самого сообщения.

—clear-sign
—clearsign — Подписать сообщение. Подпись при этом сохраняется вместе с сообщением.

—verify — Проверить подпись.

—list-keys
-k — Вывести список публичных ключей.

—list-secret-keys
-K — Вывести список приватных ключей.

—export — экспортировать публичный ключ в файл, который потом можно куда нибудь отправить.

—import — импортировать публичный ключ.

—edit-key — Редактировать ключ.

—expert — «Режим эксперта».

Примеры

Редактирование ключа, подпись чужих ключей и отправка ключа на сервер ключей

Теперь о серверах ключей. Сервер ключей — это специальный сервер, хранящий публичные ключи. Сервера ключей используются для распространения публичных ключей.

Внимание! Ключи, отправленные на сервер ключей, невозможно удалить! Их можно только отозвать, импортировав сертификат отзыва на сервер, при этом ключ всё равно остаётся на сервере.

Где вы можете столкнуться с использованием GPG

Git
Вы можете использовать GPG для подписи ваших коммитов. Так вы подтверждаете, что коммит сделали именно вы. В GitHub можно импортировать свой публичный ключ и коммиты, подписанные вашим ключом, получат «галочку».

UPD: О конфигурации Git для использования GPG вы можете прочитать в документации по Git.
Вот пример файла конфигурации Git`а от товарища nikitasius:

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

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

Источник

Сказочный портал