На главную

Библиотека Интернет Индустрии I2R.ru

Rambler's Top100

Малобюджетные сайты...

Продвижение веб-сайта...

Контент и авторское право...

Забобрить эту страницу! Забобрить! Блог Библиотека Сайтостроительства на toodoo
  Поиск:   
Рассылки для занятых...»
I2R » И2Р Программы » Мир Linux » Программы и Работа в Linux

Использование GnuPG – часть 1

Перевод статьи Vincent Danen, Using GnuPG.

GnuPG (GNU Privacy Guard, «Страж безопасности GNU», или просто GPG) – это открытый эквивалент PGP (Pretty Good Privacy), известной и широкоиспользуемой программы для Windows, DOS и других операционных систем. Он распространяется в открытых исходниках и имеет те же самые функции, что и PGP, основанные на стандарте OpenPGP. У GnuPG есть несколько применений – он может использоваться либо для шифрования писем и файлов, либо для их цифровой подписи. Первый вариант применения GnuPG – шифрование писем и файлов на вашем жестком диске – очевиден, и он обычно применяется для защиты секретных сообщений или документов. Цифровая подпись информации необходима для сохранения целостности сообщений и файлов, особенно при передаче их через незащищенный канал. Она гарантирует, что: 1) Письмо было отправлено именно этим человеком, и 2) Что информация по пути не была изменена.

Использовать GnuPG очень просто. Сама программа – консольная, но существуют frontend'ы к GPG, делающие его использование еще проще. GPG основан на принципе открытых ключей (Public Key Infrastructure) – то есть, существуют 2 ключа: закрытый ключ используется для подписи и шифрования, а открытый ключ – для расшифровки и проверки правильности подписи.

Генерация ключа:

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

[user@mdk]$ gpg --gen-key

Если вы еще не работали с GPG, то эта команда сначала создаст директорию ~/.gnupg с файлом настроек ~/.gnupg/options. После этого вам придется запустить команду --gen-key еще раз для создания двух наборов ключей: ~/.gnupg/secring.gpg and ~/.gnupg/pubring.gpg. Затем вам будет задан вопрос: какой тип ключей вам нужен - «DSA and ElGamal», «DSA», или «ElGamal». Первый тип используется по умолчанию, и именно он позволяет использовать все возможности GPG. Ключ DSA используется только для цифровой подписи. ElGamal может быть использован для подписи и шифрования. Почти всегда следует выбирать «DSA and ElGamal».

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

Следующий шаг – выбрать срок действия ключа. Некоторые предпочитают сделать срок действия своего ключа бесконечным, и выбирают 0. Другие создают новый ключ каждый год, и для этого они выбирают значение «1y». Здесь все так же зависит от ваших персональных предпочтений. Одни не обращают внимания на срок действия, а другие считают, что более безопасно для них – создавать новые ключи каждый год или каждые 2 года. Тогда, если кто-нибудь и украдет ваш секретный ключ, он сможет пользоваться им только ограниченное количество времени до истечения срока действия ключа. Так же установка срока действия позволяет вам работать с ключами более гибко – если через некоторое время вам захочется иметь ключ большего или меньшего размера, то вам нужно просто дождаться истечения срока действия текущего ключа. (А если вы уже сделали срок действия вашего ключа бесконечным, то вам придется уничтожать ваш ключ, что может вызвать трудности для людей, работающих с ним). Здесь снова выбор полностью за вами.

После этого вам будет предложено ввести вашу личную информацию для нового ключа. Идентификатор пользователя составляется из трех полей: Имя, Комментарий и Email-адрес. После того, как вы введете информацию для каждого поля, идентификатор пользователя будет выглядеть так: «Имя (Комментарий) <Email-адрес>». (Пример: Joe User (My First GPG Key!) <user@mdk.host>). Желательно использовать свое реальное имя и свой главный Email-адрес. Комментарий может быть абсолютно любым.

После создания идентификатора пользователя вам нужно будет ввести ключевую фразу. Она будет использоваться каждый раз, когда вы захотите что-нибудь зашифровать или подписать. Так же вам нужно будет вводить ключевую фразу для расшифровки данных, зашифрованных с использованием вашего открытого ключа. Ключевая фраза – очень важная деталь для обеспечения вашей секретности, потому что ее подбор часто бывает намного проще, чем подбор всего ключа. Поэтому она должна быть длинной, сложной и практически не подбираемой. В ней должны присутствовать как буквы (верхнего и нижнего регистров) и цифры, так и специальные символы (например, «}» или «|»).

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

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

[user@mdk]$ gpg --list-keys
/home/user/.gnupg/pubring.gpg
-------------------------------
pub 1024D/9B1386E2 2002-04-07 Joe User (My First GPG Key!) <user@mdk.host>
sub 1024g/7F72A50F 2002-04-07

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

[user@mdk]$ gpg --fingerprint user@mdk.host
pub 1024D/9B1386E2 2002-04-07 Joe User (My First GPG Key!) <user@mdk.host>
Key fingerprint = 88A9 166B 13E6 516A 87C8 F127 5CA9 2D9E 9B13 86E2
sub 1024g/7F72A50F 2002-04-07

Идентификатор для этого ключа – 88A9 166B 13E6 516A 87C8 F127 5CA9 2D9E 9B13 86E2. Вам нужно распечатать его и хранить в надежном месте. Так же его можно вставить в вашу подпись. Тогда люди смогут использовать его для подтверждения того, что сообщение, подписанное вами – настоящее, если ключ, с помощью которого подписывалось это сообщение, имеет тот же самый идентификатор. Конечно же, при построении сети доверия совпадение идентификаторов – это не основание для полного доверия, но этот вопрос будет более подробно рассмотрен ниже.

Использование GnuPG для подписи/шифрования.

Теперь, когда у вас есть пара ключей, вы можете ставить цифровую подпись на ваших сообщениях и файлах, и зашифровывать данные. Многие Email-клиенты поддерживают шифрование и цифровую подпись ваших писем; обычно все это конфигурируется в разделе «Security». Короче говоря, использовать GPG при работе с Email очень просто. Теперь рассмотрим, как происходит процесс шифрования и подписывания обычного текстового файла. Чтобы зашифровать текстовый файл, введите:

[user@mdk]$ gpg -ea -r Joe test.file

Эта команда шифрует файл test.file с использованием открытого ключа Joe. Вообще, эта команда означает, что только Joe сможет расшифровать этот файл. А в нашем примере это значит, что этот файл сможете расшифровать только вы. Эта функция полезна для защиты важных документов. Опция «-e» (encrypt) означает, что файл нужно зашифровать, а опция «-a» – что будет использован режим ASCII. Этот режим позволяет вставлять зашифрованный файл в письма и просматривать его в текстовых редакторах. Без указания режима ASCII файл шифруется в бинарном виде, и некоторые текстовые редакторы не смогут с ним работать. Опция «-r» указывает получателя. Мы указали здесь просто «Joe», потому что Joe User – единственный ключ в нашей связке. Вы можете указать любое имя или адрес для определения получателя. После шифрования будет создан новый файл, содержащий зашифрованные данные – test.file.asc.

Теперь, если вы хотите расшифровать эти данные, введите:

[user@mdk]$ gpg -d test.file.asc >test.file

Опция «-d» указывает GPG на то, что данные из файла test.file.asc должны быть расшифрованы. По умолчанию GPG отправляет расшифрованные данные на stdout, поэтому мы перенаправляем поток данных в test.file. После этого вам нужно ввести ключевую фразу, и, когда вы успешно ее введете, данные будут расшифрованы и детали ключа будут выведены на экран. Пример:

[user@mdk]$ gpg -d test.file.asc >test.file

You need a passphrase to unlock the secret key for
user: "Joe User (My First GPG Key!) <user@mdk.host>"
1024-bit ELG-E key, ID 7F72A50F, created 2002-04-07 (main key ID 9B1386E2)

gpg: encrypted with 1024-bit ELG-E key, ID 7F72A50F, created 2002-04-07
"Joe User (My First GPG Key!) <user@mdk.host>"

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

Использование GnuPG для цифровой подписи файлов.

Если вы хотите просто добавить цифровую подпись к файлу, то это можно сделать двумя путями. Вы можете вставить подпись в сам файл – это подходит для текстовых документов. Так же вы можете создать подпись в виде отдельного файла – это используется для бинарных файлов. Предположим, что у вас есть текстовый файл, содержащий текст «This is a text document». Если вы хотите подписать этот файл, вы можете использовать команду:

[user@mdk]$ gpg --clearsign -a test.file

Это создаст новый файл под названием test.file.asc, который будет выглядеть так:

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

This is a text document
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.0.6 (GNU/Linux)
Comment: For info see http://www.gnupg.org

iD8DBQE8r8scXKktnpsThuIRAksEAJ9nziWMquPWD2GH57Oyr9LaXIMJLgCcCi3J
uN8rDO8WOBK3GDp69lvi8Co=
=lz2x
-----END PGP SIGNATURE-----

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

[user@mdk]$ gpg --verify test.file.asc

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

Так же вы можете подписывать сообщения непрозрачной подписью. При этом создается еще один .asc файл, который с виду кажется зашифрованным. Но на самом деле он не зашифрован, и каждый может «расшифровать» его с помощью опции «-d», или использовать опцию «--verify» для проверки его достоверности. Чтобы подписать файл таким образом, используйте «-s» вместо «--clearsign».

Если вы хотите создать цифровую подпись для бинарного файла, используйте опцию «-b», которая создает отдельную подпись. Пусть у вас есть архив под названием somefile-0.01.tar.gz, и вы хотите создать для него отдельную подпись, чтобы люди, скачивающие его, знали, что этот архив гарантированно останется таким, каким вы его запланировали (обычно это делается для защиты от троянов, и т.д). Пример:

[user@mdk]$ gpg -ba somefile-0.01.tar.gz

Подпись будет храниться в файле somefile-0.01.tar.gz.asc. Теперь, если кто-нибудь скачал ваш файл вместе с его подписью, он должен просто запустить:

[user@mdk]$ gpg --verify somefile-0.01.tar.gz.asc

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

Импорт и работа с ключами GPG.

Теперь, когда вы разобрались, как шифровать, дешифровать, подписывать и проверять подписи с помощью GPG, пришло время подключить открытые ключи других людей к вашему набору ключей. Обмен открытыми ключами совершенно безопасен. Вы можете отдать ваш открытый ключ кому угодно, в отличии от закрытого ключа, который вы должны хранить в полной секретности. Существует несколько способов обмена открытыми ключами. Вы можете закачать свой ключ на специальный PGP/GPG сервер, созданный специально для хранения открытых ключей. Тогда другие смогут быстро найти и скачать ваш открытый ключ. Так же вы можете поместить его на своем сайте. Использование открытого ключа GPG в качестве вашей подписи нежелательно из-за его большого размера.

Чтобы экспортировать ваш открытый ключ, запустите:

[user@mdk]$ gpg --export -a user@mdk.host >user.asc

Эта операция производит экспорт открытого ключа, принадлежащего user@mdk.host (то есть – вам :), который записывается в файл user.asc. Вам нужно раздать всем именно этот файл с вашим открытым ключом. Так же вы можете поместить ваш открытый ключ сразу же на сервер для обмена ключами:

[user@mdk]$ gpg --send-keys --keyserver wwwkeys.pgp.net user@mdk.host

Эта команда отправит ваш открытый ключ на сервер wwwkeys.pgp.net. Вы можете заменить этот адрес на адрес любого другого сервера для обмена ключами PGP/GPG.

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

[user@mdk]$ gpg --import user.asc

где user.asc – файл с открытым ключом. Эта команда добавляет ключ к вашему набору открытых ключей. Так же вы можете скачать ключи с сервера:

[user@mdk]$ gpg --recv-keys --keyserver wwwkeys.pgp.net someuser@somedomain.com

Эта команда импортирует открытый ключ пользователя someuser@somedomain.com с сервера wwwkeys.pgp.net. Так же вы можете использовать идентификатор ключа вместо Email-адреса. Например, идентификатор ключа Joe User'а – это 9B1386E2. Если вы посмотрите на вывод «--list-keys», то вы увидите строку с идентификатором вашего ключа. (Например, строка «pub 1024D/9B1386E2» расшифровывается так: открытый ключ, 1024 бита, DSA, идентификатор ключа – 9B1386E2).

Чтобы посмотреть все ключи из вашего набора открытых ключей, используйте «gpg --list-keys». Если вы хотите посмотреть все закрытые ключи, используйте «gpg --list-secret-keys». Если вы хотите посмотреть открытый ключ конкретного пользователя, используйте команду «gpg --list-keys someuser@somedomain.com».

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

[user@mdk]$ gpg --edit-key someuser@somedomain.com

Эта команда перенесет вас в интерактивную систему редактирования параметров ключа. Чтобы получить список всех команд, наберите в командной строке «help». Существует несколько информационных команд, например, «fpr» выводит идентификатор ключа, а «check» выводит подписи ключа. Другие команды – административные, и именно с помощью них меняются параметры ключа. Многие из опций будут рассмотрены ниже.

Так же вы можете отредактировать свой ключ, чтобы добавить к нему дополнительные параметры или подключи. Это может быть полезным, если вы используете один и тот же ключ с несколькими Email-адресами. Чтобы создать подключ для вашего ключа, войдите в меню команд в режиме редактирования ключа, и выберите команду «adduid». У вас спросят те же самые 3 параметра, что и для создания нового ключа: Имя, Email-адрес и комментарий. После ввода ключевой фразы вы увидите новый пользовательский идентификатор (User ID) внутри ключа (перед каждым идентификатором пользователя стоит его номер). Если вы хотите удалить идентификатор пользователя, используйте команду «deluid <номер uid, который вы хотите удалить>»

В версиях GnuPG до 1.0.6 включительно за первичный uid считается самый последний из номеров созданных подключей, и изменить его невозможно. Но в новой версии 1.0.7 создатели GnuPG пообещали сделать команду «primary», с помощью которой можно будет выбрать первичный подключ. В списке ключей (его можно получить с помощью команды «list») вы увидите символ «.» перед первичным ключом.

Анонсы статей сайта Softerra

Валерий Качуров
Softerra.ru

Лучшие статьи раздела читайте в еженедельном сетевом журнале
"I2R Computer"
Подпишитесь на рассылку
"Мир Linux. И2Р"
Подписка на Subscribe.Ru
Другие разделы
Идеология
Программы
Linux против Microsoft
Установка и первые шаги
Практикум в Linux
Фольклор
Новое в разделе
FAQ по Linux
I2R-Журналы
I2R Business
I2R Web Creation
I2R Computer
рассылки библиотеки +
И2Р Программы
Всё о Windows
Программирование
Софт
Мир Linux
Галерея Попова
Каталог I2R
Партнеры
Amicus Studio
NunDesign
Горящие путевки, идеи путешествийMegaTIS.Ru

2000-2008 г.   
Все авторские права соблюдены.
Rambler's Top100