Создание ключей, шифрование и дешифрование сообщений в системе RSA
Наумчик, Н. С. Создание ключей, шифрование и дешифрование сообщений в системе RSA / Н. С. Наумчик, С. А. Васи. — Текст : непосредственный // Молодой ученый. — 2019. — № 45 (283). — С. 1-3. — URL: https://moluch.ru/archive/283/63831/ (дата обращения: 30.10.2023).
Криптосистема RSA — ассиметричная система с открытым ключом, названная в честь ее создателей: Rivest, Shamir, Adleman. Несмотря на то, что после создания криптосистемы прошло уже около сорока лет, она до сих пор остается самой используемой из всех систем со схожими алгоритмами работы из-за вычислительной сложности задачи факторизации больших целых чисел. Примечателен тот факт, что RSA стала первой системой, пригодной как для шифрования, так и для цифровой подписи.
Идея RSA заключается в том, что пользователь создает и публикует открытый ключ, основанный на двух больших простых числах вместе со вспомогательным значением, причем сами числа должны храниться в тайне. Благодаря этому, любой человек может воспользоваться открытым ключом для шифрования своей информации, но если ключ будет достаточно большой, то для дешифрования потребуется наличие тех простых чисел, которые участвовали в создании данного ключа. Раскрытие RSA шифрования — одна из основных проблем на сегодняшний день, поскольку до сих пор нельзя говорить о том, что этот механизм абсолютно надежен.
Так что же послужило толчком для создания такой криптосистемы как RSA? Дело в том, что после опубликования статьи Уитфилда Диффи и Мартина Хеллмана «Новые направления в криптографии», о которой ранее уже упоминалось, трое ученых Рональд Ривест, Ади Шамир (специалисты в сфере компьютерных технологий) и Леонард Адлеман (математик) из Массачусетского технологического института (MIT) приступили к поискам математической функции, позволяющей в полной мере реализовать модель криптосистемы с открытым ключом. После рассмотрения многих вариантов, ученые все же нашли алгоритм, с помощью которого можно легко находить большие простые числа, но очень сложно раскладывать произведение двух простых чисел на множители.
Не так давно выяснилось, что еще до публикации описания алгоритма RSA, похожая по принципам работы схема шифрования была предложена одним британским криптографом из GCHQ. Однако, его разработка была засекречена и потому не была реализована в повседневной жизни.
Таким образом, криптографическая система RSA остается на сегодняшний день одной из самых надежных (при длине ключе от 1024 бит).
Алгоритм работы RSA содержит в себе четыре основных этапа: генерация ключей, их распределение, шифрование и дешифрование.
На этапе создания ключей производятся следующие операции:
- Выбираются два больших простых числа p и q.
- Вычисляется их произведение , называемое модулем.
- Вычисляется значение функции Эйлера от полученного произведения .
- Выбирается произвольное число e, такое, что , причем
- С помощью алгоритма Евклида вычисляется некоторое число d, удовлетворяющее условию .
На этапе распределения ключей:
- Пара e,n> выступает в качестве открытого ключа RSA.
- Пара d,n> выступает в качестве закрытого ключа RSA.
На этапе шифрования и дешифрования:
Со стороны отправителя:
- Взять открытый ключ e,n> получателя.
- Взять открытый текст m.
- Зашифровать сообщение с использованием открытого ключа получателя: .
Со стороны получателя:
- Принять зашифрованное сообщение C.
- Взять свой закрытый ключ (d,n).
- Применить закрытый ключ для дешифрования сообщения: .
Рассмотрим пример создания ключей шифрования и дешифрования в криптографической системе, строго следуя алгоритму, обозначенному в предыдущем пункте. Для упрощения вычислений, будем выбирать небольшие простые числа.
Пример. Этап создания ключей:
1.Выберем два простых числа и , причем таких, что . Пусть и ;
2.Вычислим произведение взятых чисел:
3.Вычислим функцию Эйлера. Для этого воспользуемся формулой . Тогда ;
4.Выберем произвольное число e. Пусть ;
5.С помощью алгоритма Евклида вычислим число d, удовлетворяющее условию . Получим .
Переходим к этапу распределения ключей.
- Назначаем пару в качестве открытого ключа;
- Назначаем пару в качестве закрытого ключа.
Теперь, когда в наличии имеются открытый и закрытый ключи, можно приступать к этапу шифрования.
- Выбираем некоторый текст m, который необходимо зашифровать (шифрование будем выполнять с помощью открытого ключа). Пусть .
- Шифруем сообщение с использованием открытого ключа получателя: .
.
Заключительным этапом будет этап дешифрования.
- Возьмем полученный зашифрованный текст c и дешифруем его с помощью закрытого ключа .
Итак, поскольку , то
.
Из рассмотренного выше примера видно, что криптографическая система RSA действительно работает, причем именно по тому алгоритму, что использовался для решения примера. Отличие лишь в том, что при реальных условиях использования системы выбираются достаточно большие простые числа.
- RSA [электронный ресурс] — Режим доступа: URL: https://ru.wikipedia.org/wiki/RSA. Дата обращения 06.10.2019.
- Бернет С., Пэйн С. Криптография. Официальное руководство RSA Security/ Бернет С., Пэйн С. — Бином, 2002–381с.
- Виноградов, И. М. Основы теории чисел: учебное пособие [Текст] / И. М. Виноградов. — 12-е изд. — М.: Лань, 2009. — 176 с.
- Коутинхо С. Введение в теорию чисел. Алгоритм RSA/ Коутинхо С. — М.: Постмаркет, 2011 -328с.
Основные термины (генерируются автоматически): RSA, открытый ключ, закрытый ключ, число, криптографическая система, GCHQ, MIT, помощь алгоритма, произвольное число, этап распределения ключей.
Похожие статьи
Исследование криптосистем с открытым ключом на основе.
RSA — криптографический алгоритм с открытым ключом, основывающийся на
В RSA каждый ключ состоит из пары целых чисел. Каждый участник создаёт свой открытый и
В настоящее время криптографическая система RSA получила широкое распространение.
Реализация алгоритма шифрования RSA на языке.
Статья посвящена реализации алгоритма шифрования на открытом ключе RSA. LabVIEW (англ.
RSA (аббревиатура от фамилий Rivest, Shamir и Adleman) — криптографический алгоритм с открытым ключом, основывающийся на вычислительной сложности задачи.
Криптография с открытым ключом. Криптосистема RSA
Криптосистема с открытым ключом составляют следующие элементы
В дальнейшем ключ шифрования Кea составляет пара чисел naи ea (отметим, что Кeaесть открытый ключ).
RSA, MISHA, открытый ключ, закрытый ключ, открытый текст, число, односторонняя функция.
RSA, открытый ключ, простое число, криптосистема.
При проектировании RSA—системы пользователь должен выбрать два больших простых числа и , чтобы вычислить модуль сравнения , значение которого зависит от предполагаемой сложности раскрытия проектируемой криптографической системы. Таблица 1 дает представление о.
Анализ алгоритма RSA. Некоторые распространённые.
В основу криптографической системы с открытым ключом RSA находится задача умножения и разложения составных чисел на простые
В криптографической системе с открытым ключом каждый участник имеет в своем распоряжении как открытым ключ (англ. public key.
Шифрование и криптоанализ | Статья в журнале «Молодой ученый»
В 1995 году закрытый ключ алгоритма RSA был взломан с помощью измерения относительного времени, которое
Криптографические алгоритмы предоставляют низкоуровневые инструменты для большинства протоколов безопасности, используемых в.
История развития криптологии. Этапы | Статья в журнале.
Этот ключ является типичным примером номенклатора — криптографической системы
В основе криптографических систем с открытым ключом лежит теория необратимых
Реализация алгоритма шифрования RSA на языке. Криптосистема RSA стала первой.
Теория чисел в криптографии | Статья в журнале.
Криптографическая система RSA с открытым ключом, предложенная в работе [2, с. 120] получила широкое распространение в настоящее время. Эта системаподдерживает большинство электронных коммерческих коммуникаций.
Способ хранения закрытого ключа криптосистемы цифровой.
Пользователь может хранить закрытый ключ на своем персональном компьютере
С облака часть ключа передается зашифрованной, с помощью любого ассиметричного алгоритма
Алгоритмы асимметричного шифрования используют два ключа, которые образуют.
- Как издать спецвыпуск?
- Правила оформления статей
- Оплата и скидки
Похожие статьи
Исследование криптосистем с открытым ключом на основе.
RSA — криптографический алгоритм с открытым ключом, основывающийся на
В RSA каждый ключ состоит из пары целых чисел. Каждый участник создаёт свой открытый и
В настоящее время криптографическая система RSA получила широкое распространение.
Реализация алгоритма шифрования RSA на языке.
Статья посвящена реализации алгоритма шифрования на открытом ключе RSA. LabVIEW (англ.
RSA (аббревиатура от фамилий Rivest, Shamir и Adleman) — криптографический алгоритм с открытым ключом, основывающийся на вычислительной сложности задачи.
Криптография с открытым ключом. Криптосистема RSA
Криптосистема с открытым ключом составляют следующие элементы
В дальнейшем ключ шифрования Кea составляет пара чисел naи ea (отметим, что Кeaесть открытый ключ).
RSA, MISHA, открытый ключ, закрытый ключ, открытый текст, число, односторонняя функция.
RSA, открытый ключ, простое число, криптосистема.
При проектировании RSA—системы пользователь должен выбрать два больших простых числа и , чтобы вычислить модуль сравнения , значение которого зависит от предполагаемой сложности раскрытия проектируемой криптографической системы. Таблица 1 дает представление о.
Анализ алгоритма RSA. Некоторые распространённые.
В основу криптографической системы с открытым ключом RSA находится задача умножения и разложения составных чисел на простые
В криптографической системе с открытым ключом каждый участник имеет в своем распоряжении как открытым ключ (англ. public key.
Шифрование и криптоанализ | Статья в журнале «Молодой ученый»
В 1995 году закрытый ключ алгоритма RSA был взломан с помощью измерения относительного времени, которое
Криптографические алгоритмы предоставляют низкоуровневые инструменты для большинства протоколов безопасности, используемых в.
История развития криптологии. Этапы | Статья в журнале.
Этот ключ является типичным примером номенклатора — криптографической системы
В основе криптографических систем с открытым ключом лежит теория необратимых
Реализация алгоритма шифрования RSA на языке. Криптосистема RSA стала первой.
Теория чисел в криптографии | Статья в журнале.
Криптографическая система RSA с открытым ключом, предложенная в работе [2, с. 120] получила широкое распространение в настоящее время. Эта системаподдерживает большинство электронных коммерческих коммуникаций.
Способ хранения закрытого ключа криптосистемы цифровой.
Пользователь может хранить закрытый ключ на своем персональном компьютере
С облака часть ключа передается зашифрованной, с помощью любого ассиметричного алгоритма
Алгоритмы асимметричного шифрования используют два ключа, которые образуют.
Настройка параметров для пар ключей и цифровых сертификатов
Для шифрования данных, пересылаемых удаленному устройству необходимо заранее переслать ключ шифрования по незащищенному каналу сети. Эту проблему можно решить с помощью шифрования с общим ключом. Шифрование с общим ключом обеспечивает безопасный обмен данными с помощью защиты важной информации от хакерских атак в виде анализа трафика, перехвата сигналов и злонамеренного изменения данных, передающихся по сети.
Пара ключей
Пара ключей состоит из открытого ключа и секретного ключа, которые требуются для шифрования и расшифровывания данных. Поскольку данные зашифрованы одним из ключей и не могут быть расшифрованы без наличия другого ключа, метод шифрования с общим ключом обеспечивает безопасную передачу данных по сети. Пара ключей используется для обмена зашифрованными данными по протоколу TLS или TLS аутентификации IEEE 802.1X. На аппарате можно генерировать до пяти ключей (включая предварительно установленные пары) (Использование пар ключей и цифровых сертификатов, выданных центром сертификации (СА)). Пару ключей можно создать с помощью аппарата (Создание пар ключей).
Сертификат CA
Цифровые сертификаты, включая сертификаты CA, схожи с другими формами идентификации, например водительскими правами. Цифровой сертификат содержит цифровую подпись, позволяющую аппарату определять операции анализа и злонамеренного изменения данных. Технологии шифрования затрудняют использование цифровых сертификатов злоумышленниками. Цифровой сертификат, содержащий общий ключ, выданный центром сертификации (CA), также называется сертификат CA. Сертификаты CA используются для проверки устройства, с которым связан аппарат, в таких функциях, как печать из виртуального принтера Google или аутентификация IEEE 802.1X. Можно зарегистрировать до 67 сертификатов CA, включая 62 сертификата, предустановленных на аппарате (Использование пар ключей и цифровых сертификатов, выданных центром сертификации (СА)).
Требования к ключам и сертификатам
Сертификат, включенный в пару ключей, сгенерированных на аппарате, соответствует стандарту X.509v3. При установке пары ключей или сертификата CA с компьютера убедитесь, что они соответствуют следующим требованиям.
Используем GPG для шифрования сообщений и файлов
Кратко о том, как создавать ключи, шифровать и подписывать файлы и отправлять ключи на сервер ключей.
GPG (также известный как GnuPG) создавался как свободная альтернатива несвободному PGP . GPG используется для шифрования информации и предоставляет различные алгоритмы (RSA, DSA, AES и др.) для решения этой задачи.
GPG может использоваться для симметричного шифрования, но в основном программа используется для ассиметричного шифрования информации. Если кратко — при симметричном шифровании для шифровки и расшифровки сообщения используется один ключ (например, какой символ соответствует той или иной букве). При ассиметричном шифровании используются 2 ключа — публичный и приватный. Публичный используется для шифрования и его мы можете дать своим друзьям, а приватный — для расшифровки, и его вы должны хранить в безопасности. Благодаря такой схеме расшифровать сообщение может только владелец приватного ключа (даже тот, кто зашифровывал сообщение, не может произвести обратную операцию). Подробнее про асимметричное шифрование вы можете прочитать в Википедии.
Установка GPG
Windows
Скачайте и установите Gpg4win.
В большинстве дистрибутивов GNU/Linux GPG уже установлен. Если же он у вас не установлен, установите пакет gnupg с помощью своего пакетного менеджера или соберите его из исходников.
Для Android существуют программы GnuPG for Android и OpenKeychain. Создатели GnuPG for Android рекомендуют использовать OpenKeychain.
Спасибо товарищу под ником sormon за то, что напомнил!
Использование
Здесь будет приведено только использование в Linux (на момент написания статьи последней версией GPG является 2.2.6)
Для начала стоит уточнить, что в большинстве дистрибутивов Linux есть два бинарных файла: gpg и gpg2 . Насколько я помню, это были две разные версии: 1.4.x и 2.0.x, и для удобного использования я делал alias, чтобы при запуске gpg выполнялся gpg2. Сейчас же в Debian и Arch Linux /bin/gpg2 является символической ссылкой на /bin/gpg и потребность в таких манипуляциях пропала. Проверить это можно выполнив file /bin/gpg2 .
Введя gpg без аргументов он создаст необходимые ему файлы (если они ещё не созданы) и будет ждать ввода шифруемой информации.
user@PC:~$ gpg gpg: создан каталог '/home/user/.gnupg' gpg: создан щит с ключами '/home/user/.gnupg/pubring.kbx' gpg: Внимание: команда не отдана. Пытаюсь угадать, что имелось в виду . gpg: Пишите сообщение .
При наличии ключа мы можем ввести текст, нажать сочетание клавиш Ctrl + D и получить порцию кракозябр прямо в консоль. Но пока что у нас нет ключа.
Создание ключа
Чтобы создать ключ, нужно запустить GPG с аргументом «—full-generate-key» (можно и с «—gen-key», но в этом случае у нас не будет выбора некоторых важных параметров).
UPD: Если запустить GPG ещё и с аргументом —expert , то выбор типа ключа будет намного шире. За дополнение спасибо товарищу nikitasius!
user@PC:~$ gpg --full-generate-key gpg (GnuPG) 2.2.6; Copyright (C) 2018 Free Software Foundation, Inc. This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Выберите тип ключа: (1) RSA и RSA (по умолчанию) (2) DSA и Elgamal (3) DSA (только для подписи) (4) RSA (только для подписи) Ваш выбор?
user@PC:~$ gpg --full-generate-key --expert gpg (GnuPG) 2.2.6; Copyright (C) 2018 Free Software Foundation, Inc. This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Please select what kind of key you want: (1) RSA and RSA (default) (2) DSA and Elgamal (3) DSA (sign only) (4) RSA (sign only) (7) DSA (set your own capabilities) (8) RSA (set your own capabilities) (9) ECC and ECC (10) ECC (sign only) (11) ECC (set your own capabilities) (13) Existing key Your selection?
Вы можете выбрать любой вариант, но учтите, что выбрав третий или четвёртый вариант вы не сможете шифровать сообщения и файлы!
. Ваш выбор? 1 длина ключей RSA может быть от 1024 до 4096. Какой размер ключа Вам необходим? (2048)
Для RSA ключа размером 2048 бит вполне достаточно, но вы можете выбрать размер до 4096 бит (использовать ключи размера меньше 2048 бит небезопасно).
. Какой размер ключа Вам необходим? (2048) 2048 Запрошенный размер ключа - 2048 бит Выберите срок действия ключа. 0 = не ограничен = срок действия ключа - n дней w = срок действия ключа - n недель m = срок действия ключа - n месяцев y = срок действия ключа - n лет Срок действия ключа? (0)
Если вы выберете ограниченный срок действия ключа, то по истечению его срока ключ будет признан недействительным. Вы можете продлить срок действия ключа, пока он не истечёт.
GPG спросит, верно ли мы указали срок, и если да, то нужно будет указать имя, адрес электронной почты и примечание (всё это опционально, но нужно указать хотя бы что-то одно).
. Ключ действителен до Чт 01 января 1970 00:00:00 +00 Все верно? (y/N) y GnuPG должен составить идентификатор пользователя для идентификации ключа. Ваше полное имя: Habrahabr User Адрес электронной почты: habr@habr.com Примечание: My own key Вы выбрали следующий идентификатор пользователя: "Habrahabr User (My own key) " Сменить (N)Имя, (C)Примечание, (E)Адрес; (O)Принять/(Q)Выход?
Здесь вы можете сделать правки либо продолжить.
Дальше gpg попросит указать пароль (рекомендую освежить память и почитать о правилах выбора стойкого пароля). Если у вас запущен X сервер, то у вас вылезет диалоговое окно, куда нужно ввести пароль. Если же нет, то пароль вводится прямо в консоль.
Если вы не любите окошки
Добавьте в файл ~/.gnupg/gpg-agent.conf данную строчку:
pinentry-program /usr/bin/pinentry-tty
Pynentry — это те самые диалоговые окна. Помимо tty-версии (консольной) есть ещё несколько версий (графических), которые вы можете попробовать.
Затем перезапустите gpg-agent. На системах с systemd это делается так:
systemd —user reload gpg-agent
. Необходимо получить много случайных чисел. Желательно, чтобы Вы в процессе генерации выполняли какие-то другие действия (печать на клавиатуре, движения мыши, обращения к дискам); это даст генератору случайных чисел больше возможностей получить достаточное количество энтропии. Введите фразу-пароль для защиты нового ключа Фраза-пароль:
В терминале вводимый пароль никак не отображается!
Также тут есть полезный совет, который ускорит создание ключа. Следовать ему желательно, но необязательно (и очень аккуратно, чтобы не натыкать лишнего).
. Фраза-пароль: Повторите: Необходимо получить много случайных чисел. Желательно, чтобы Вы в процессе генерации выполняли какие-то другие действия (печать на клавиатуре, движения мыши, обращения к дискам); это даст генератору случайных чисел больше возможностей получить достаточное количество энтропии. gpg: /home/user/.gnupg/trustdb.gpg: создана таблица доверия gpg: ключ 5699884482E426AC помечен как абсолютно доверенный gpg: создан каталог '/home/user/.gnupg/openpgp-revocs.d' gpg: сертификат отзыва записан в '/home/user/.gnupg/openpgp-revocs.d/2BB6803FCF82316969619C155699884482E426AC.rev'. открытый и секретный ключи созданы и подписаны. pub rsa2048 1970-01-01 [SC] 2BB6803FCF82316969619C155699884482E426AC uid Habrahabr User (My own key) sub rsa2048 1970-01-01 [E]
На этом этапе ключ генерируется и добавляется в связку ключей. В связке ключей может находится множество ключей. Также на этом этапе создаётся сертификат отзыва — файл, с помощью которого созданный ключ можно отозвать (признать недействительным). Рекомендуется хранить его в безопасном месте, т.к. если к нему получат доступ злоумышленники, то они смогут отозвать ваш ключ.
Итак, что же означают все эти странные последние строки?
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 throw-keyids no-emit-version no-comments
keyid-format 0xlong — формат вывода идентификатора ключа. У каждого ключа и подключа есть свой идентификатор. По умолчанию он не выводится, раньше выводилась его короткая версия.
Доступные форматы:
none — Не выводить (По умолчанию).
short — Короткая запись.
0xshort — Короткая запись с префиксом «0x».
long — Длинная запись.
0xlong — длинная запись с префиксом «0x».
throw-keyids — Не включать информацию о ключе в зашифрованное сообщение. Эта опция может быть полезна для анонимизации получателя сообщения.
no-emit-version — Не вставлять версию GPG в зашифрованное сообщение.
no-comments — Убирает все комментарии из зашифрованного сообщения.
Всё это — опции, которые можно найти в man-странице. В файле конфигурации они записываются без префикса » — «.
Команды и опции
Я опишу только самое основное.
—armor
-a — Создаёт ASCII (символьный) вывод. При шифровании GPG по умолчанию создаёт бинарный вывод. При использовании этой опции GPG кодирует информацию кодировкой Radix-64 (Разновидность Base64). Этот текстовой вывод можно, например, отправить в мессенджере или по электронной почте, а также вывести на экран.
—encrypt
-e — Зашифровать сообщение.
—recipient
-r — Указать ключ, который будет использоваться для шифрования. Можно использовать информацию идентификатор пользователя (имя, почта), идентификатор ключа, отпечаток ключа.
—decrypt
-d — Расшифровать сообщение.
—sign
-s — Подписать сообщение. Подпись при этом будет распологаться отдельно от самого сообщения.
—clear-sign
—clearsign — Подписать сообщение. Подпись при этом сохраняется вместе с сообщением.
—local-user
-u — Указать ключ, который будет использоваться для подписи. Схож с опцией —recipient , но это не одно и то же.
—verify — Проверить подпись.
—list-keys
-k — Вывести список публичных ключей.
—list-secret-keys
-K — Вывести список приватных ключей.
—export — экспортировать публичный ключ в файл, который потом можно куда нибудь отправить.
—import — импортировать публичный ключ.
—edit-key — Редактировать ключ.
—expert — «Режим эксперта».
Примеры
gpg -a -r 0x12345678 -e decrypted.txt > encrypted.gpg
Зашифровать файл decrypted.txt в файл encrypted.gpg ключом 0x12345678 . При этом готовый файл будет текстовым, а не бинарным.
gpg -r 0x12345678 -d encrypted.gpg > decrypted.txt
Расшифровать файл encrypted.gpg ключом 0x12345678 и сохранить его в файл decrypted.txt .
gpg -u 0x12345678 -s message.txt > sign.asc
Подписать файл message ключом 0x12345678 и сохранить подпись в файл sign.asc .
gpg -r 0x12345678 —clearsign message.txt > message.gpg
Подписать файл message.txt ключом 0x12345678 и записать сообщение с подписью в файл message.gpg .
gpg —verify message.asc message.txt
Проверить подпись файла message.txt , которая записана в файле message.asc .
gpg —import pubkey.gpg
Импортировать публичный ключ из файла pubkey.gpg .
Редактирование ключа, подпись чужих ключей и отправка ключа на сервер ключей
Ключ редактируется командой gpg —edit-key .
После ввода этой команды вы увидите это:
user@PC:~$ gpg --edit-key CCA230DA07929EB7 gpg (GnuPG) 2.2.6; Copyright (C) 2018 Free Software Foundation, Inc. This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Секретный ключ доступен. sec rsa2048/CCA230DA07929EB7 создан: 2018-05-08 годен до: никогда назначение: SC доверие: абсолютное достоверность: абсолютное ssb rsa2048/7859E2A888E31276 создан: 2018-05-08 годен до: никогда назначение: E [ абсолютно ] (1). Habrahabr User (My own key) gpg>
Доступные команды вы можете узнать, введя help .
Здесь мы можем добавить различные подключи, добавить идентификаторы пользователя, а также подписать чужие публичные ключи.
Для чего нужно подписывать ключи? Так вы можете подтвердить то, что владелец подписываемого ключа является тем, за кого он себя выдаёт. Таким образом вы создаёте так называемую «Сеть Доверия». Пример: Алиса подписала публичный ключ Боба, а Боб подписал публичный ключ Чарли. Если Алиса получит публичный ключ Чарли, она сможет ему доверять, потому что ключ подписан тем, кому Алиса доверяет, т.е. Бобом. Для того, чтобы получить подписи для своего ключа, люди даже устраивают специальные встречи, где они обмениваются своими публичными ключами и подписывают их.
Теперь о серверах ключей. Сервер ключей — это специальный сервер, хранящий публичные ключи. Сервера ключей используются для распространения публичных ключей.
Внимание! Ключи, отправленные на сервер ключей, невозможно удалить! Их можно только отозвать, импортировав сертификат отзыва на сервер, при этом ключ всё равно остаётся на сервере.
Отправить публичный ключ на сервер:
gpg —keyserver —send-keys
Получить публичный ключ с идентификатором ключа с сервера :
gpg —keyserver —recv-keys
Получить обновления ключей с сервера:
gpg —keyserver —refresh-keys
Найти ключ на сервере:
gpg —keyserver —search-keys
Для удобства можно прописать адрес сервера ключей в gpg.conf , чтобы не прописывать его в командах:
keyserver
Где вы можете столкнуться с использованием GPG
Git
Вы можете использовать GPG для подписи ваших коммитов. Так вы подтверждаете, что коммит сделали именно вы. В GitHub можно импортировать свой публичный ключ и коммиты, подписанные вашим ключом, получат «галочку».
UPD: О конфигурации Git для использования GPG вы можете прочитать в документации по Git.
Вот пример файла конфигурации Git`а от товарища nikitasius:
[commit] gpgsign = true [user] signingkey = [gpg] program = /bin/gpg
Загрузка дистрибутивов и прочих файлов
Большинство установочных образов дистрибутивов распространяются подписанными разработчиками. Если вы загрузите модифицированный образ, то при проверке подписи вы сразу заметите, что образ не оригинальный. Примером служит популярный дистрибутив Tails.
Пакетные менеджеры
Все пакеты подписываются разработчиками для защиты от изменений. При установке пакетов эти подписи проверяются. Делается это всё автоматически без вмешательства пользователя.
Как создать ключ шифрования
При создании ключа шифрования необходимо выбрать тип шифрования.
- Откройте меню Сервис и выберите пункт Ключи шифрования .
- Нажмите Создать .
- Настройте необходимые параметры:
Имя ключа | Введите уникальное имя ключа. Имя должно содержать не более 256 символов. |
Тип шифрования | Выберите тип шифрования для создаваемого ключа. Можно выбрать 128-разрядный или 256-разрядный алгоритм AES. По умолчанию применяется 256-разрядное шифрование AES. 256-разрядное шифрование AES обеспечивает более высокий уровень безопасности, чем 128-разрядное шифрование AES. Однако при использовании такого шифрования задания резервного копирования выполняются медленнее, чем в случае 128-разрядного шифрования AES. При аппаратном шифровании по стандарту T10 применяются 256-разрядные ключи AES. |
Пароль | Введите кодовое слово для ключа. Если применяется 128-разрядное шифрование AES, то кодовое слово должно содержать как минимум восемь символов. Если применяется 256-разрядное шифрование AES, то кодовое слово должно содержать как минимум шестнадцать символов. Рекомендуется использовать более длинные кодовые слова. Допустимы только печатные символы ASCII. См. Сведения о кодовых словах. |
Подтверждение пароля | Введите пароль еще раз. |
Общий | Выберите этот вариант, чтобы задать общий ключ. Если ключ является общим, любой пользователь данного экземпляра Backup Exec может использовать этот ключ для резервного копирования и восстановления данных. |
Секретный | Выберите этот вариант, чтобы задать секретный ключ. Любой пользователь может использовать секретный ключ для создания зашифрованных резервных копий, однако восстанавливать зашифрованные данные может только владелец ключа или пользователь, знающий пароль. |