gpg ключ linux что это

Шифрование файлов и папок в Linux

Утилита GPG

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

$ gpg опции файл параметры

Опции указывает что необходимо сделать с файлом, как это сделать и какие возможности использовать. Давайте рассмотрим самые основные опции, которые мы будем использовать в этой статье:

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

Шифрование файлов с помощью пароля

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

Шифрование с использованием ключей

Сначала необходимо настроить gpg, создать пару ключей, для этого наберите:

Программа задаст ряд вопросов для настройки ключа:

Выберите требуемый тип ключа.

Выберите нужный размер для ключа, обычно 2048 будет достаточно.

Выберите строк действия для ключа.

Проверьте все ли правильно.

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

Введите ваш email адрес.

Описание ключа, если нужно.

Финальная проверка, затем нажмите O для завершения.

Процесс генерации может занять некоторое время. Когда все будет готово в каталоге

./gnupg появятся два файла. В файле pubring.gpg публичный ключ, а в secring.gpg приватный.

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

Затем передаем файл на целевое устройство и импортируем ключ:

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

Для выбора уровня доверия введите команду trust:

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

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

Ид пользователя нужно указывать тот что вы использовали при создании ключа. Для расшифровки используйте:

Для каталогов действия аналогичны только сначала нужно создать архив с помощью tar:

Подписи и шифрование

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

Если вы не хотите изменить исходный файл, то можно создать подпись в отдельном файле:

Если файл был изменен, то вы увидите, что подпись не сходиться.

Выводы

В этой статье мы рассмотрели как выполняется шифрование файла linux, а также настройка утилиты gpg. Шифрование gpg linux используется людьми для хранения важных данных, а механизм подписей популярен среди разработчиков дистрибутивов. Если у вас остались вопросы, спрашивайте в комментариях!

На завершение отличное видео о том, как работает асимметричный алгоритм шифрования:

Источник

Используем 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.

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

Источник

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 минут.

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

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.

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

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

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

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

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

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

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

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

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

Encrypt

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

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

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

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

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

Источник

Операционные системы и программное обеспечение