Gpg linux что это

GPG. Шифрование в линуксе. Лучшее из Open Source.

Смотрите, сегодня мы будем говорить про шифрование.

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

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

Но в один момент с ней произошла очень интересная вещь. Эта вещь называется “Свидетельство канарейки”

Свидетельство канарейки

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

Фактически этот термин означает передачу информации через молчание или отрицание.

Согласно “Патриотическому акту”, правительство США может направить секретный ордер интернет-компании на слежку за пользователем. Закон запрещает компании разглашать факт слежки. Но некоторые компании могут отправить вам имейл: “Уважаемый юзер, уведомляем вас о том, что в период с 2008 года по 5 октября 2017 года за вами не велось скрытое наблюдение. С уважением”.

TrueCrypt до 2014 года был очень надежной программой для шифрования, а в 2014 году проект был закрыт из-за давления на разработчиков. Все старые версии удалены, репозиторий очищен. А разработчики настоятельно рекомендовали переходить на программу BitLocker. Все сообщество сразу поняло сообщение разработчиков без лишних слов, так как ранее они высмеивали безопасность BitL ocker, то есть намёк на неискренность собственных слов и попытку сказать нечто важное.

Как и всегда я рекомендую использовать для шифрования только ПО с открытым исходным кодом.

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

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

Будет так же круто, если кто-то сделает комментарий с таймингами, я его закреплю первым.

Симметричное и асимметричное шифрование

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

Симметричное шифрование

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

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

Самые популярные алгоритмы: AES, Blowfish, Twofish.

Недостатки

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

Достоинства:

Асимметричное шифрование

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

Криптографические системы с открытым ключом в настоящее время широко применяются в различных сетевых протоколах: TLS, SSL, HTTPS, SSH, PGP.

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

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

Один из самых популярных алгоритмов является алгоритм RSA

RSA (Алгоритм работы)

Теперь, чтоб нам зашифровать что-нибудь нашим открытым ключом нам надо разбить наш шифруемый текст на блоки, каждый из которых можно представить в виде числа M(I)=0,1,2. N-1

А чтобы потом расшифровать это, просто используем секретный ключ , по формуле M(I) = (C(I)^D) mod N

В результате получим исходный текст.

О длине ключа RSA

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

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

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

И фактически сейчас взломать RSA2048 невозможно. Но через 20 лет это будет возможно.

Вы можете спросить, а почему не взять просто самый большой из возможных.

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

То есть 2048 не в 2 раза безопаснее чем 1024. А во много раз. И так же 4096 во много раз безопаснее чем 2048.

Но при этом сам процесс шифрования и процесс расшифровки он у нас естественно требует нашего с вами процессорного времени. И тут тоже большая разница. Каждое увеличение ключа в два раза увеличивает процессорное время примерно в 6-7 раз. Ну вот условно если ваш процессор будет расшифровывать rsa1024 одну минуту. То rsa2048 он будет расшифровывать 7 минут. А RSA4096 он уже будет расшифровывать 49 минут.

Gpg linux что это. Смотреть фото Gpg linux что это. Смотреть картинку Gpg linux что это. Картинка про Gpg linux что это. Фото Gpg linux что это

Насколько безопасен каждый из вариантов?

RSA Laboratories опубликовала 54 полупростых числа длиной от 100 до 617 десятичных знаков. За факторизацию некоторых из них были предложены денежные призы. Наименьшее RSA-число было разложено за несколько дней. Большинство чисел до сих пор не разложены и предполагается, что многие из них останутся неразложенными ещё довольно долгое время.

RSA Challenge официально закончился в 2007 году, но люди до сих пор пытаются раскладывать числа, к марту 2017 года было разложено 19 из 54 чисел. Первые RSA-числа, от RSA-100 до RSA-500, были пронумерованы в соответствии с числом десятичных знаков. Более поздняя нумерация отражает число битов

RSA-230 имеет 230 десятичных знаков (762 бита). Факторизовано 15 августа 2018 в Noblis

RSA-232 имеет 232 десятичных знака (768 бит), и пока что не факторизовано

RSA-768 имеет 768 бит (232 десятичных знака) и было разложено 12 декабря 2009 года Торстеном Клейнжунгом, Казумаро Аоки, Йенсом Франке, Арьеном Ленстрой, Эммануилом Томе, П. Годри, Александром Круппа, Питером Монтгомери, Д. В. Босом, Д. А. Освиком, Г. Рилем, Андреем Тимофеевым и Полем Циммерманном.

RSA-1024 имеет 1024 бита (309 десятичных знаков), и пока что не факторизовано. За факторизацию был объявлен денежный приз в 100000 долларов США.

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

RSA-2048 имеет 2048 битов (617 десятичных знаков). Это наибольшее из RSA-чисел и за него положен приз в 200000 долларов США.

Наибольшее факторизованное RSA-число имеет длину 768 бит (232 десятичных знака) и RSA-2048 может не быть разложено в течение долгих лет, до значительного улучшения вычислительных мощностей и продвижений в факторизации целых чисел.

AHTUNG! Биты!

Важно понимать одну вещь!

RSA Security рекомендует использовать ключи 2048 бит, когда большинство алгоритмов симметричного шифрования используют 112 или 256 бит.

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

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

Так что симметричный ключ в 256 бит примерно равен ассиметричному ключу в 15360 бит.

ПРАКТИКА

Ладно, давайте уже перейдем к практике.

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

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

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

Мы все знаем что его ключ

И если мы видим такую подпись, то мы скорее будем доверять ей. Чем какому-то сообщению без подписи.

Так же с помощью gpg мы можем авторизоваться на SSH серверах.

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

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

Давайте же начнем ее использовать.

Для начала установим пакет gpg

Проверим, что версия актуальная.

У меня, например версия 2.2.13.

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

Для того чтобы посмотреть наши публичные ключи есть команда

А для того чтобы увидеть приватные ключи есть команда:

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

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

Давайте теперь я кратко расскажу о том, как это читается.

Когда мы создаем наш ключ, то это вообще все сохраняется в директории

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

Давайте теперь откроем файл и посмотрим на него.

Gpg linux что это. Смотреть фото Gpg linux что это. Смотреть картинку Gpg linux что это. Картинка про Gpg linux что это. Фото Gpg linux что это

Encrypt

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

Теперь откроем его.

Gpg linux что это. Смотреть фото Gpg linux что это. Смотреть картинку Gpg linux что это. Картинка про Gpg linux что это. Фото Gpg linux что это

Видим, что файл зашифрован.

А теперь расшифруем его.

Gpg linux что это. Смотреть фото Gpg linux что это. Смотреть картинку Gpg linux что это. Картинка про Gpg linux что это. Фото Gpg linux что это

Just a test

Давайте теперь попробуем зашифровать какой-нибудь прям огромный файл.

Давайте, например, возьмем 100 гигабайт.

Теперь зашифруем его

А теперь расшифруем

Результат теста с ключом в 4096 бит следующий

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

Это я вам показал самые основы.

Теперь давайте поговорим подробнее про ключи. Так как это крайне важно.

Хорошей практикой считается отдельное хранение основного приватного ключа.

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

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

Добавим subkeys

Делается это командой

Чтобы добавить новые subkey мы должны ввести

Создать ключ и потом не забываем написать

Бэкапим секретный ключ

Создаем Revocation Certificate

Экспортируем публичный ключ

Очень важно хранить секретный ключ в супернадежном месте.

revocation certificate тоже важно хранить где-либо куда никто кроме вас не имеет доступ.

Удаляем Primary Key

Для начала мы должны экспортировать secret subkeys:

Теперь удалим всю секретную часть нашего ключа:

При этом надо понимать, что у нас останется публичная часть нашего ключа в

Но не будет ничего в

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

And we’re left with our “laptop keys”:

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

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

И теперь мы можем импортировать их на наш другой наш компьютер:

The end

Источник

GnuPG

Это руководство научит Gentoo Linux пользователя основам использования GnuPG; утилита для безопасной взаимосвязи.

Contents

Введение

О чем будет рассказано в этом руководстве

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

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

Установка

USE-флаги

USE flags for app-crypt/gnupg The GNU Privacy Guard, a GPL OpenPGP implementation

bzip2Use the bzlib compression library
docAdd extra documentation (API, Javadoc, etc). It is recommended to enable per package instead of globally
ldapAdd LDAP support (Lightweight Directory Access Protocol)
nlsAdd Native Language Support (using gettextGNU locale utilities)
readlineEnable support for libreadline, a GNU line-editing library that almost everyone wants
selinux!!internal use only!! Security Enhanced Linux support, this must be set by the selinux profile or breakage will occur
smartcardBuild scdaemon software. Enables usage of OpenPGP cards. For other type of smartcards, try app-crypt/gnupg-pkcs11-scd. Bring in dev-libs/libusb as a dependency; enable scdaemon.
sslAdd support for SSL/TLS connections (Secure Socket Layer / Transport Layer Security)
testEnable dependencies and/or preparations necessary to run tests (usually controlled by FEATURES=test but can be toggled independently)
tofuEnable support for Trust on First use trust model; requires dev-db/sqlite.
toolsInstall extra tools (including gpgsplit and gpg-zip).
usbBuild direct CCID access for scdaemon; requires dev-libs/libusb.
user-sockettry a socket directory which is not removed by init manager at session end
wks-serverInstall the wks-server

Emerge

Другое программное обеспечение

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

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

Генерация ключа и добавление в связку открытых ключей

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

Можно выбрать тип ключа, но большинство пользователей предпочтут вариант по умолчанию, RSA и RSA. Далее следует размер ключа. В общем, чем он больше, тем лучше, но не используйте размер более 2048 с ключами DSA/ElGamal. 2048 более чем достаточно для обычной коммуникации по электронной почте.

Разрабочикам Gentoo (особенно тем, которые работают с ебилдами), настоятельно рекомендуется использовать 4096-битные ключи.

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

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

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

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

Генерация сертификата отзыва

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

Экспорт ключей

Импорт ключей

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

Обмен ключами с серверами ключей

Отправка ключей на сервер

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

Получение ключей с сервера

Теперь мы осуществим поиск ключа Gustavo Felisberto (автора данного руководства :)) и добавим его в связку Larry the cow.

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

Что такое GPG agent?

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

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

Gentoo предоставляет несколько приложений GPG agent. Пакет app-crypt/gnupg содержит то, что можно рассматривать как эталон, и будет основным, что будет использоваться в этой статье.

Конфигурация gpg-agent и pinentry

Если app-crypt/pinentry был установлен с более чем одним типом всплывающего окна, то можно выбрать одно из них с помощью команды eselect pinentry :

Теперь создайте файл

/.gnupg/gpg-agent.conf и добавьте следующие строки, чтобы задать таймаут парольной фразы по умолчанию (например, 30 минут) и приложение, которое будет запускаться, когда возникнет необходимость извлечь парольную фразу (например, GTK+ вариант Pinentry).

Затем, настройте GnuPG на использование agent, когда это уместно. Отредактируйте

/.gnupg/gpg.conf и добавьте следующую строчку:

/.gnupg/gpg.conf Настройка GnuPG для использования GPG agent

Теперь система (почти) готова для использования GPG agent.

Changing pinentry for SSH logins

If you use the gpg-agent over SSH, a graphical pinentry password prompt will not come up in the login shell. This causes all operations that require a password to fail. If you add the following snipped in your

/.bash_profile Use curses pinentry for SSH logins

Автоматический запуск GPG agent

Если в качестве окружения рабочего стола используется KDE, отредактируйте /etc/plasma/startup/10-agent-startup.sh (для общесистемных настроек; в KDE4 это /etc/kde/startup/agent-startup.sh ) или

/.config/plasma-workspace/env/gpg-agent.sh (для локального пользователя; в KDE4 это

/.kde4/env/gpg-agent.sh ). Добавьте следующую команду в соответствующий файл, чтобы KDE автоматически запускал GPG Agent:

Также раскомментируйте следующие строки в /etc/plasma/shutdown/10-agent-shutdown.sh (для общесистемных настроек; в KDE4 это /etc/kde/shutdown/agent-shutdown.sh ) или

/.config/plasma-workspace/shutdown/gpg-agent.sh (для локального пользователя; в KDE4 это

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

Работа с документами

Шифрование и подпись

Давайте предположим, что у Larry есть файл, который он хотел бы отправить Луису. Larry может его зашифровать, подписать, или зашифровать и подписать одновременно. Шифрование означает что только Луис сможет его открыть. Подпись говорит Луису о том что Larry действительно тот кто создал этот файл.

Чтобы зашифровать и подписать:

Расшифровка и проверка подписей

Шифрование и расшифровка без ключей

GnuPG запросит парольную фразу и ее подтверждение.

Расширенные функции

В GnuPG есть несколько приятных расширенных функций. Чтобы их найти, откройте файл

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

Интерфейсы GnuPG

О подписях электронной почты

95% времени, GnuPG будет использоваться в электронной почте для подписывая/шифрования исходящих сообщений или чтения подписанных/зашифрованных сообщений.

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

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

Для того, чтобы решить эту проблему, к стандарту MIME (Multipurpose Internet Mail Extensions) было создано дополнение. Оно добавило поле в email сообщение, которое сообщает программе чтения почты, что все содержимое этого сообщения подписано и/или зашифровано. Проблема заключается в том, что не все программы чтения почты поддерживают такие функции. Некоторые даже портят содержимое (Microsoft Outlook знаменит своими отказами с этим работать).

Kgpg (kde-base/kmail) является замечательным интерфейсом для GnuPG. Основной экран содержит область для вставки текста, который можно подписать и зашифровать. Обратное также верно: ASCII armored текст можно ввести и расшифровать.

Seahorse

Целью Seahorse (app-crypt/seahorse) является создание графического интерфейса GnuPG для рабочего стола GNOME. Эта программа быстро развивается, но в ней по-прежнему отсутствуют многие важные возможности, которые можно найти в Kgpg и в версии для командной строки.

KMail

Claws-Mail

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

Криптография с Открытым Ключом

Введение в Криптографию с Открытым Ключом

Заключительные мысли и благодарности

Благодарности

GnuPG Handbook от John Michaeil Ashley. Это очень хорошая книга для новичков.

Swift (Sven Vermeulen) за подталкивание меня к переписыванию этого руководства.

Каждого из команды #gentoo-doc ( webchat ). Парни, вы рулите.

Tiago Serra, за мое возвращение обратно на путь конфиденциальности.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *