ZenWay - Linux сегодня!
  • Главная
  • Форум
  • Контакты
  • Архив
  • Гостевая книга
×
Поиск по сайту
ГлавнаяHужное/полезноеСистемные утилитыИзучаем LinuxGnuPG / PGP

GnuPG / PGP

Изучаем Linux, Системные утилиты, Hужное/полезноеПросмотров: 3297Комментарии: 07 ноября 2009 г.
ASCII / Console / GNU / Open Source / Безопасность / Утилита / Учебные материалы / Шифрование

GPG (также известный как GnuPG) — консольная утилита для шифрования информации и создания электронных цифровых подписей, предоставляя различные алгоритмы (RSA, DSA, AES и др...) для решения этой задачи. Создана в 1997 году как свободная альтернатива проприетарному PGP (Pretty Good Privacy), в большинстве GNU/Linux систем GnuPG устанавливается по умолчанию и полностью совместима со стандартом IETF OpenPGP (может взаимодействовать с PGP и другими OpenPGP-совместимыми системами).

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

Криптографическая система с открытым ключом (разновидность асимметричного шифрования, асимметричного шифра) — система шифрования и/или электронной подписи (ЭП), при которой открытый ключ передаётся по открытому (то есть незащищённому, доступному для наблюдения) каналу и используется для проверки ЭП (электронной подписи) и для шифрования сообщения. Для генерации электронной подписи и для расшифровки сообщения используется закрытый ключ.

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

Основные технические особенности GnuPG:

  • Полноценная альтернатива PGP;
  • Не использует патентованные алгоритмы;
  • Распространяется под свободной лицензией (GPL);
  • Полная реализация OpenPGP (RFC4880);
  • Расшифровывание и аутентификация сообщений, созданных с помощью PGP 5, 6 и 7;
  • Поддержка электронной подписи с помощью алгоритмов ElGamal, DSA, RSA и хеш-функций MD5, SHA-1, RIPE-MD-160 и TIGER;
  • Работа с асимметричным шифрованием ElGamal и RSA (длина ключа от 1024 до 4096 бит);
  • Поддержка блочных алгоритмов симметричного шифрования AES, 3DES, Blowfish, Twofish, CAST5, а также IDEA с помощью модуля;
  • Лёгкая реализация новых алгоритмов с помощью дополнительных модулей;
  • Многоязычная поддержка (в том числе на русском);
  • Онлине-система помощи;
  • Поддержка просроченных ключей и подписей;
  • Встроенная поддержка HKP-серверов ключей.

GnuPG разработан в соответствии со стандартом OpenPGP, а это значит, что подписи и зашифрованные данные, созданные другими программами, совместимыми с OpenPGP, будут работать с GnuPG.

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

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

gpg --gen-key

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

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

GnuPG ведёт собственную базу, которая находится в файле:

~/.gnupg/pubring.gpg

В неё заносятся открытые (публичные) ключи всех респондентов.

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

gpg --list-keys

Будет выведен список ключей, показывающий их статус (pub — публичный, sub — второстепенный), длину и метод шифрования, дату создания и, главное, уникальный идентификатор (ID), представляющий собой 8-значное 16-ричное число.

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

gpg --gen-revoke $KEY

Где $KEY — ID основного ключа.

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

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

gpg --import revoke-certificate.asc

А затем отправить на сервер:

gpg --send-keys $KEY

Где $KEY — ID ключа, который будет отправлен. Точно так же можно отправлять публичные ключи и хранить их на серверах баз данных. Для этого в первую очередь их нужно экспортировать в общую локальную базу командой:

gpg --import $FILE

Где $FILE — файл ключа или keyring («связка», несколько ключей в одном файле), после этого командой --sign-key $KEY (где $KEY — ID ключа респондента) нужно подписать желаемый ключ. При подписывании к нему добавляется ваш публичный ключ для того, чтобы ваши сообщения/письма могли идентифицировать другие. Затем нужно отправить подписанный вами ключ его владельцу:

gpg --export $KEY > userkey.gpg

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

gpg -a --export $KEY > userkey.asc

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

Иногда может потребоваться хранить ваши ключи (публичные или приватные) на каком-либо носителе (например, на USB flash), для этого нужно экспортировать ключ, что можно сделать как в бинарном виде:

gpg --export $KEY > mykey.gpg

Так и в текстовом (ASCII armor):

gpg -a --export $KEY > mykey.asc

В обоих случаях $KEY — это ID вашего ключа. Вместо -a можно также использовать --armor, в итоге, для работы с документами доступны следующие команды:

  • Подписать документ (гарантирует, что документ «от вас»), к нему просто добавляется ваша электронная подпись;
  • Зашифровать документ (производится шифровка выбранным алгоритмом всего документа);
  • Подписать и зашифровать документ (сочетает в себе эти действия).

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

Можно создавать так называемые «прозрачные» подписи (в которых будет незашифрованное содержимое документа + ваша цифровая подпись):

gpg --clearsign $DOC

Где $DOC — путь к документу, таким образом, будет создан файл $DOC.asc, в котором само содержание документа открыто и добавлена его цифровая подпись. А подписи, находящиеся в отдельных файлах в бинарном виде (будет создан файл подписи $DOC.sig), создаются командами:

gpg --detach-sign $DOC

В текстовом (ASCII armor) виде (будет создан файл подписи $DOC.asc):

gpg -a --detach-sign $DOC

Такие подписи (в последних двух примерах) должны распространяться вместе с подписываемым документом. Любой ключ также можно отредактировать командой `--edit-key’. Это позволит изменить некоторые параметры ключа: степень достоверности, если это чужой публичный ключ, секретную фразу, если это ваш приватный ключ, и другое. Что касается степени достоверности, то в GnuPG существует пять уровней:

  • I don’t know or won’t say (я ничего не знаю о владельце этого ключа или не хочу говорить об этом);
  • I do NOT trust (я не доверяю этому человеку);
  • I trust marginally (я знаю этого человека и доверяю ему, но не уверен, что ключ принадлежит ему);
  • I trust fully (я знаю этого человека и лично убедился в том, что ключ принадлежит ему);
  • I trust ultimately (я знаю этого человека, у меня есть доступ к его секретному ключу).

В последнее время всё больше проектов используют GnuPG для подписывания файлов с целью дальнейшей проверки их целостности (вместо использования хешей MD5, SHA1, SHA256, SHA512). Поэтому помимо архивов (особенно в Open Source-среде) на сайтах обычно лежат GPG-подписи в бинарном или ASCII-видах.

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

Домашняя страница

По материалу опубликованному в электронном издании «Open Source» (выпуск №027 от 11.06.2008)
Автор: AUNA
Еще записи по теме
Подсчитать количество файлов и каталогов
Подсчитать количество файлов и каталогов
BMPanel2
BMPanel2
watsup
watsup
KDE Service Menu EncFS
KDE Service Menu EncFS
QGears2
QGears2
LXQt
LXQt
Оставьте комментарий!

Используйте нормальные имена.

Вы можете войти под своим логином или зарегистрироваться на сайте.

(обязательно)

Рубрики
  • Hовости
  • Изучаем Linux
  • Обзоры Linux ПО
    • Hужное/полезное
    • Аудио и видео ПО
    • Графика
    • Офисное ПО
    • Интернет ПО
    • Образовательные
    • Игры
    • Администрирование
    • Системные утилиты
    • Прочие
    • Shareware / Demo
  • Дистрибутивы
  • Дополнительные материалы
Последние комментарии
AbiWord
  • Святой_Мученик_Linux » Некорректно отображает картинки в майкросовтовски х файлах doc. Картинки позиционируются одна на другую, поверх текста. В...
  • vs » К сожалению, AbiWord давно протух и толку от него ровно 0. Даже больше вреда. Сейчас...
tarsnap
  • Анонимус » В тексте опечатка "для использования для использования"
DarGUI / KDar
  • WinGamer » Можно ли забекапить всю систему windows этим архиватором?
cfiles
  • Дмитрий » так эт самое, а как например переименовать папку?
Profanity
  • zon » проше научится свой клиент написать чем разобратся куда что клацать для отправки получения месаг.
  • vovans » Тут не нужно ничего "клацать". Достаточно пару раз на хоткеи посмотреть.
noteshrink
  • Аноним » Теперь есть плюсовая (не пайтон) версия: //github. com/ ImageProcessing - ElectronicPublications /noteshrink-c/ releases
Page dewarp
  • Аноним » Теперь есть плюсовая (не пайтон) версия: //github. com/ ImageProcessing - ElectronicPublications /pagedewarp/ releases
Strawberry Music Player
  • Rododendron » А как добавить радиостанции в плеер? Нигде найти не могу.
Форум
[18/11/2022 11:54:52]
vscode and c/c++
[31/08/2022 12:25:53]
Tor Browser
[26/08/2022 07:57:14]
Музыкальный калейдоскоп
[22/05/2022 15:45:40]
Стратегии RTS
[30/03/2022 09:05:20]
Заметки с синхронизацией
[01/03/2022 20:15:05]
Говорильня (дискуссионный клуб)
[13/02/2022 11:44:28]
[РЕШЕНО] права на запись в примонтированный образ диска (raw.img)
[07/02/2022 13:22:01]
Конвертировать текст набаранный в неправильной раскладке
[04/02/2022 20:35:22]
Редактор тегов
Облако меток
2D338 3D241 ALSA68 ASCII120 Android1 Arch Linux38 Audio416 Backup80 Benchmark78 Bluetooth2 C++969 CD48 Console1318 DJ-система17 DVD47 Debian28 DjVu22 Enlightenment19 FFmpeg191 FLTK29 FPS40 FREE155 FTP18 FVWM21 Fluxbox40 GIMP24 GNU26 GPS22 GTK1302 GUI801 Gambas11 Games686 Gentoo3 Gnome349 Gstreamer133 HDD122 HDR7 HTML62 Hex-редактор14 ICQ17 IP-сети25 IP-телефон22 IRC31 ISO39 IceWM22 ImageMagick56 JACK99 Jabber35 Java308 JavaScript115 KDE209 LAN29 LXDE37 LaTeX66 Live-CD70 Live-DVD55 Live-USB53 Lua61 MATE32 MEncoder31 MIDI91 MMORPG12 Mail42 Markdown53 Mono53 Mplayer75 MySQL2 OSS9 Open Source14 OpenGL301 Openbox89 P2P51 PDF133 PHP12 Pascal17 Perl102 Phonon27 PulseAudio17 Python759 QT894 RAW34 RPG101 RSS53 RTS42 Roguelike70 Ruby19 Rust15 SDL312 SVG39 Screencast32 Screenshot61 Script78 Slackware66 TOR17 TOX3 Tk39 Torrent67 Ubuntu69 VLC16 Vala64 Web629 WebKit72 WebUI34 WiFi47 Window Maker16 Wine8 XMPP35 Xfce70 Xine14 YouTube80 video4linux27 wxWidgets108 Автоматизация31 Администрирование335 Анонимная сеть47 Антивирус14 Апплет120 Аркада235 Архиватор11 Астрономия36 Аудио конвертер70 Аудио редактор50 Аудиоплеер184 Безопасность243 Бизнес-приложение4 Браузер87 Бродилка203 Бухгалтерия11 Веб-камера36 Видео148
© Zen Way, 2023. Работает на MaxSite CMS | Время: 0.1343 | SQL: 15 | Память: 8.76MB | Вход